Responses

POST /v1/responses — OpenAI Responses 协议,支持有状态多轮对话、工具调用与推理控制

POST/v1/responses

OpenAI Responses API,用于创建模型响应。与对话补全相比,它支持通过 previous_response_id 串联有状态多轮对话、更细粒度的推理控制,并采用不同的输出与计量结构。

这个接口是做什么的:和 Chat Completions 的核心区别是「谁来记住对话历史」。Chat Completions 要求你每次把完整对话原样发一遍;Responses 允许你只传 previous_response_id(上一轮响应的 ID),服务端会记住上下文并自动接续,不需要你自己攒历史消息数组。适合需要多轮持续对话、或者要用到 Responses 独有工具生态(如内置的网页搜索、代码执行等)的场景;如果只是简单问答或已经有一套基于 messages 的成熟代码,用 Chat Completions 通常更省心。

鉴权:在请求头携带 Authorization: Bearer <令牌>,详见鉴权与令牌。

平台对本端点的请求参数是透传并对齐 OpenAI 官方格式,不会另行定义参数名或参数结构。本页参数表以 OpenAI 官方文档当前的字段名和语义为准。

与 Chat Completions 的差异

维度/v1/responses/v1/chat/completions
输入input(字符串或 typed 数组)+ instructionsmessages 数组
多轮可用 previous_response_id 引用上一轮响应,无需重传历史每次重传完整 messages
输出output 数组(含 message、工具调用等多种 item 类型)choices[].message
计量usage.input_tokens / output_tokens(权威)usage.prompt_tokens / completion_tokens(权威)
流式语义化事件流(response.output_text.delta 等)增量 chunk(delta.content)
推理控制reasoning.effort / reasoning.summaryreasoning_effort

适用场景:需要服务端串联对话状态、使用 Responses 原生工具生态,或对接只支持 Responses 协议的模型。其余场景用 Chat Completions 即可。两个端点的字段不可混用(如 messages 不能发给本端点)。

请求参数

modelstring必填

要调用的模型 ID

inputstring | array必填

输入内容。纯文本直接传字符串;结构化输入传数组,项类型支持 input_text、input_image(image_url 支持 URL 或 base64)、input_file(file_url),也可传带 role + content 的消息对象组成多轮历史

instructionsstring

系统级指令,相当于 Chat 中的 system 消息

previous_response_idstring

上一轮响应的 id(resp_ 前缀),传入后服务端自动接续对话上下文

max_output_tokensinteger

最大输出 token 数(含推理 token)

reasoningobject

推理控制。官方明文标注仅 gpt-5 系列与 o 系列模型支持,向其他模型传入会被忽略或报错

streamboolean

为 true 时以 SSE 语义化事件流返回,见下文「流式事件」

默认值: false
temperaturenumber

控制生成的随机性,取值 0~2。数值越低输出越确定,适合抽取、分类等需要稳定结果的场景;数值在 1 左右适合对话;调高更有创意但也更容易跑偏

top_pnumber

核采样阈值,取值 0~1,是 temperature 之外另一种控制随机性的方式,一般二选一调整即可

toolsarray

工具定义数组(Responses 格式,函数工具为 {"type":"function","name":...,"parameters":...})

tool_choicestring | object

工具选择策略

parallel_tool_callsboolean

是否允许并行工具调用

max_tool_callsinteger

单次响应允许的最大工具调用次数

truncationstring

上下文超长时的截断策略,如 "auto"、"disabled"。官方已标注废弃,未提供替代字段

textobject

文本输出配置,如 format(text / json_object / json_schema)与 verbosity

includearray

指定在响应中附加返回的数据项,上游支持时生效

prompt_cache_keystring

提示词缓存键,用于提升相似请求的缓存命中率,上游支持时生效

prompt_cache_retentionstring

提示词缓存保留时长。官方已标注废弃,被 prompt_cache_options.ttl 取代(上游支持时生效)

prompt_cache_optionsobject

提示词缓存的当前推荐配置方式,取代已废弃的 prompt_cache_retention。mode 控制缓存策略,ttl 控制缓存最短保留时间(当前仅支持 "30m"),上游支持时生效

metadataobject

附加元数据键值对

storeboolean

是否存储响应供后续引用。注意:该字段默认被平台过滤,透传行为以平台配置为准

userstring

终端用户标识。官方已标注废弃,被 safety_identifier(滥用追踪)与 prompt_cache_key(缓存优化)两个字段拆分取代

思考档位说明

reasoning.effort 的档位、默认值与支持范围因模型供应商而异。本文档所列的档位语义来源于 OpenAI 官方协议规范,并非适配所有供应商;不同供应商对同一档位名的解释或支持的档位子集可能不同。本端点对思考参数做透传,原样发给上游模型——请以你实际调用的模型的官方参考文档为准,不要跨供应商照抄档位设置。各档含义与选择建议见对话补全的 reasoning_effort 参数说明。

请求示例

curl https://api.jimu.chat/v1/responses \
  -H "Authorization: Bearer $JIMU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "input": "你好",
    "instructions": "你是一个简洁的助手",
    "max_output_tokens": 1024
  }'

响应结构

响应200
{
  "id": "resp_0f9583835d5e5762016a68bef03a1c8199a90d35cdc6336b8a",
  "object": "response",
  "created_at": 1785249520,
  "status": "completed",
  "model": "gpt-5.5",
  "output": [
    {
      "id": "msg_0f9583835d5e5762016a68bef137ec81998de27f2fbe177b2a",
      "type": "message",
      "status": "completed",
      "role": "assistant",
      "content": [
        { "type": "output_text", "text": "Hi! How can I help you today?", "annotations": [] }
      ]
    }
  ],
  "reasoning": { "effort": "medium", "summary": null },
  "tool_choice": "auto",
  "tools": [],
  "usage": {
    "input_tokens": 7,
    "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 },
    "output_tokens": 13,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 20
  }
}

关键字段说明:

  • status:响应状态,如 completed、incomplete、failed。incomplete 时 incomplete_details 给出原因(如达到 max_output_tokens)。
  • output:输出项数组。文本回复是 type: "message" 的项,其 content 内含 output_text 片段;工具调用等其他 item 类型(如 function_call)也会出现在此数组中。
  • usage:token 计量。权威字段为 input_tokens / output_tokens / total_tokens。
本端点的计量字段是 input_tokens / output_tokens,与 Chat Completions 的 prompt_tokens / completion_tokens 是两套命名,details 结构也不同(本端点 input_tokens_details 含 cache_write_tokens、cached_tokens,不含 text/audio/image 拆分)。跨端点写计量代码时不要假设字段名一致。

流式事件

设置 "stream": true 后,响应为 SSE 事件流。与 Chat 的 chunk 模式不同,本端点每个事件带 event: 行标明语义类型,典型序列(实测):

event: response.created
event: response.in_progress
event: response.output_item.added
event: response.content_part.added
event: response.output_text.delta      ← 增量文本,可能多次
event: response.output_text.done
event: response.content_part.done
event: response.output_item.done
event: response.completed

以上是纯文本生成的典型序列。平台透传全部事件流,工具调用、联网搜索等场景还会出现相应的其他事件类型;客户端应忽略未识别的事件类型,不要当作错误处理。

  • 增量文本在 response.output_text.delta 事件中:解析事件 data JSON 后读取顶层 .delta 字段,拼接即为完整输出。
  • response.completed 是终态事件,其 data 是一个信封对象:{"type":"response.completed","response":{完整响应对象},"sequence_number":N}——完整响应(含 output、usage)位于 data.response 下,不是 data 顶层,注意解析路径。
  • 本端点的流不以 data: [DONE] 收尾——收到 response.completed 即表示结束。这与 Chat Completions 流式末尾的 [DONE] 标志不同,复用同一套 SSE 解析代码时不要依赖 [DONE] 作为唯一结束条件。

压缩长对话

对话变长后,可用 POST /v1/responses/compact 对历史做压缩(compaction),降低后续请求的上下文占用。