流式响应
当您创建响应并将 stream 设置 为 true 时,服务器会在生成 Response 的过程中,通过 Server-Sent Events(SSE)实时向客户端推送事件。本文介绍服务器会推送的各类事件类型及其参数说明。
事件类型概览
流式响应包含以下主要事件类型:
- 响应生命周期事件:
response.created、response.in_progress、response.completed、response.failed、response.incomplete - 输出项事件:
response.output_item.added、response.output_item.done - 内容部分事件:
response.content_part.added、response.content_part.done - 文本增量事件:
response.output_text.delta、response.output_text.done - 函数调用事件:
response.function_call_arguments.delta、response.function_call_arguments.done - 思维链事件:
response.reasoning_summary_part.added、response.reasoning_summary_part.done、response.reasoning_summary_text.delta、response.reasoning_summary_text.done - 错误事件:
error
响应生命周期事件
response.created
当响应被创建时触发的事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.created。 |
| response | object | 创建状态的响应。包含参数与创建模型请求时,非流式调用返回的参数一致。详见 Response 对象。 |
| sequence_number | integer | 事件的序列号。 |
示例:
JSON
{
"type": "response.created",
"sequence_number": 0,
"response": {
"id": "resp_123456",
"object": "response",
"status": "in_progress",
"created_at": 1672531200
}
}
response.in_progress
当响应正在进行中时触发的事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.in_progress。 |
| response | object | 进行中状态的响应。包含参数与创建模型请求时,非流式调用返回的参数一致。 |
| sequence_number | integer | 事件的序列号。 |
response.completed
当响应已完成时触发的事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.completed。 |
| response | object | 已完成状态的响应。包含参数与创建模型请求时,非流式调用返回的参数一致。 |
| sequence_number | integer | 事件的序列号。 |
response.failed
当响应失败时触发的事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.failed。 |
| response | object | 失败状态的响应。包含参数与创建模型请求时,非流式调用返回的参数一致。 |
| sequence_number | integer | 事件的序列号。 |
response.incomplete
当响应以未完成状态结束时触发的事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.incomplete。 |
| response | object | 未完成状态的响应。包含参数与创建模型请求时,非流式调用返回的参数一致。 |
| sequence_number | integer | 事件的序列号。 |
输出项事件
response.output_item.added
表示添加了新的输出项。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.output_item.added。 |
| item | object | 模型输出内容。详见下方 item 参数说明。 |
| output_index | integer | 被添加的输出项的索引。 |
| sequence_number | integer | 事件的序列号。 |
item 参数说明:
文本输出(message)
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 输出消息的类型,固定为 message。 |
| id | string | 输出消息请求的唯一标识。 |
| role | string | 输出信息的角色,固定为 assistant。 |
| status | string | 输出消息的状态。 |
| content | array | 输出消息的内容。包含 type(固定为 output_text)和 text(模型的文本输出)字段。 |
思维链输出(reasoning)
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 对象的类型,固定为 reasoning。 |
| id | string | 请求的唯一标识。 |
| status | string | 该内容项的状态。 |
| summary | array | 推理文本内容。包含 type(固定为 summary_text)和 text(模型生成答复时的推理内容)字段。 |
工具调用输出(function_call)
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 工具调用的类型,固定为 function_call。 |
| id | string | 工具调用请求的唯一标识。 |
| call_id | string | 模型生成的函数工具调用的唯一 ID。 |
| name | string | 要运行的函数的名称。 |
| arguments | string | 要传递给函数的参数的 JSON 字符串。 |
| status | string | 该项的状态。 |
示例:
JSON
{
"type": "response.output_item.added",
"sequence_number": 1,
"output_index": 0,
"item": {
"id": "item_001",
"type": "message",
"role": "assistant",
"status": "in_progress",
"content": []
}
}
response.output_item.done
表示输出项已完成。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.output_item.done。 |
| item | object | 已完成的输出项。结构与 response.output_item.added 中的 item 相同。 |
| output_index | integer | 已完成的输出项的索引。 |
| sequence_number | integer | 事件的序列号。 |
内容部分事件
response.content_part.added
当有新的内容部分被添加时触发。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.content_part.added。 |
| part | object | 所添加的内容部分。包含 type(固定为 output_text)和 text(模型输出的文本内容)字段。 |
| item_id | string | 内容部分所添加的输出项的 ID。 |
| output_index | integer | 内容部分所添加的输出项的索引。 |
| content_index | integer | 内容部分的索引。 |
| sequence_number | integer | 事件的序列号。 |
示例:
JSON
{
"type": "response.content_part.added",
"sequence_number": 2,
"item_id": "item_001",
"output_index": 0,
"content_index": 0,
"part": {
"type": "output_text",
"text": ""
}
}
response.content_part.done
当内容部分完成时触发。
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 事件的类型,固定为 response.content_part.done。 |
| part | object | 所完成的内容部分。包含 type |