效果示意 | 优势说明 |
| 更早展示内容:收到首个片段后即可开始渲染,不必等待完整响应。 |
| 提供实时反馈:对话界面、长内容生成和思考过程可以持续更新。 |
| 支持增量处理:客户端可以分别聚合正文、思考内容和工具参数。 |
| 保留部分结果:终态前断连时可保留已接收内容,但必须标记为不完整。 |
当前 API | 请求改动 | 响应处理 |
Chat API | 在请求体中设置 stream=true。 | |
Responses API | 在请求体中设置 stream=true;Go SDK 使用 CreateResponsesStream。 | |
Messages API | 在请求体中设置 stream=true。 |
API | 语义信号 | 结果分类 | 客户端动作 |
Chat | finish_reason=stop | 完整 | 提交该 choice.index 的正文结果。 |
Chat | finish_reason=length 或 content_filter | 部分 | 保留已接收内容并标记不完整;前者可在确认业务需要后调整输出或输入长度,后者不得通过自动重试规避拦截。 |
Chat | finish_reason=tool_calls | 工具中间态 | 将该候选结果下各工具参数缓冲区标记为完整,解析参数并进入工具调用流程;不得当作最终文本回答。 |
Chat | data: [DONE] | 仅传输结束 | 以此前各候选结果的 finish_reason 判定状态;缺少语义终态时按提前中断处理。 |
Responses | response.completed 且 response.status=completed | 完整 | 提交已聚合的输出项。 |
Responses | response.incomplete | 部分 | 读取 response.incomplete_details,保留部分结果,再决定是否续写或调整限制。 |
Responses | response.failed 或 error | 失败 | 读取 response.error 或错误事件中的 code、message;仅在原因可重试且业务允许重复生成时重新请求。 |
Responses | data: [DONE] | 仅传输结束 | 以此前的 response.completed、response.incomplete、response.failed 或 error 判定状态。 |
Messages | stop_reason=end_turn 或 stop_reason=stop_sequence,随后收到 message_stop | 完整 | 提交已完成的内容块;命中停止序列时同时记录 stop_sequence。 |
Messages | stop_reason=max_tokens,随后收到 message_stop | 部分 | 保留已接收内容并标记不完整;确认业务需要后调整 max_tokens 或输入长度。 |
Messages | stop_reason=tool_use,随后收到 message_stop | 工具中间态 | 执行已完成的工具调用,并按 Messages 工具调用流程续接;不得当作最终文本回答。 |
Messages | error 事件或 HTTP 请求失败 | 失败 | 保留错误信息并关闭连接;仅在原因可重试且业务允许重复生成时重新请求。 |
Messages | 仅收到 message_stop,没有可识别的 stop_reason | 未确认 | 不将结果标记为完整,记录原始事件并按异常结果处理。 |
观测维度 | 预期影响 | 指标或信号 | 阈值或单位 |
首段内容等待时间 | 客户端可在完整响应结束前开始处理内容;这不代表总生成时间缩短。 | 从发出请求到收到首个正文或思考 delta 的时间,并以毫秒记录。 | 毫秒;本文不提供固定阈值。 |
token 用量 | 三类 API 的统计位置不同,中断时统计可能缺失。 | Chat 的有效 usage 数据块;Responses 终态事件的 response.usage;Messages 的 message_start.message.usage 或 message_delta.usage。 | token;缺失不记为零,累计快照不重复相加。 |
连接资源 | 流对象未关闭会持续占用客户端连接资源。 | 活跃连接数、客户端超时、消费循环是否退出、流对象是否关闭。 | 连接数、秒;按业务容量设置告警。 |
维度 | 具体值 | 后果 | 处理方式 |
参数类型 | stream 不是 boolean | 请求参数类型不符合 Chat API、Responses API 或 Messages API 定义。 | 仅传 true 或 false。 |
能力组合 | Responses API 创建前缀缓存时 stream=true | 无法在创建前缀缓存的同一次请求中使用流式输出。 | 先以非流式请求创建前缀缓存,再通过 previous_response_id 续接后续请求。 |
连接释放 | 客户端停止消费但未关闭流对象 | 连接和套接字资源可能继续占用。 | 正常和异常路径都关闭流对象;设置有界的连接与读取超时。 |