读取 Chat Completions 流式响应¶
向 Chat Completions 请求添加 stream: true,以服务器发送事件(SSE)持续读取生成增量。此页只说明 Chat Completions 的流式事件;Responses 和 Anthropic Messages 使用各自的事件结构。
POST https://token.moi.matrixorigin.cn/v1/chat/completions
调用前准备¶
请求地址为 https://token.moi.matrixorigin.cn/v1/chat/completions。准备具有 Genesis 权限的访问凭据,以及支持 Chat Completions 流式输出的模型 ID。
下方示例使用:
$GENESIS_ACCESS_TOKEN:实际访问令牌或服务账号 API Key,通过AuthorizationHeader 传递。$MODEL_ID:要调用的模型 ID,填入请求体的model字段。
请求头¶
请求头 |
是否必填 |
说明 |
|---|---|---|
|
是 |
使用 |
|
是 |
设置为 |
|
否 |
可设置为 |
请求体¶
请求体包含以下字段。
字段 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
|
string |
是 |
支持 Chat Completions 流式输出的模型 ID。 |
|
array |
是 |
按顺序提交的消息列表。 |
|
boolean |
是 |
必须设为 |
请求示例¶
curl -N -X POST "https://token.moi.matrixorigin.cn/v1/chat/completions" \
-H "Authorization: Bearer $GENESIS_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-d '{
"model": "'"$MODEL_ID"'",
"messages": [
{
"role": "user",
"content": "用一句话说明主键的作用。"
}
],
"stream": true
}'
-N 使 curl 不缓冲输出,便于逐行读取 SSE 事件。
成功响应¶
成功时响应媒体类型为 text/event-stream。每个 data: 行包含一个 chat.completion.chunk,末尾事件为 data: [DONE]:
data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"主键"}}]}
data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"用于唯一标识表中的每一行。"}}]}
data: [DONE]
单个 data: 行中的 JSON 负载具有以下结构;delta.content 缺失时不应追加文本:
{
"object": "chat.completion.chunk",
"choices": [
{
"delta": {
"content": "主键"
}
}
]
}
单个 data: 行中用于读取增量内容的字段如下。
字段路径中的 [] 表示数组中的每一项。例如,choices[].delta.content 表示 choices 数组中每一项的 delta.content 字段。
字段或事件 |
类型 |
说明 |
|---|---|---|
|
string |
事件对象类型,示例为 |
|
array |
当前事件的增量列表。 |
|
object |
增量对象。 |
|
string,可选 |
存在时追加到当前文本。 |
|
事件标记 |
正常结束标记。收到该标记后再将结果标记为完成。 |
网络分片可能将一条 SSE 事件拆开。客户端应按事件边界解析,并在收到 [DONE] 前保留未完成状态。
错误响应¶
流开始前的错误使用普通 HTTP 状态和 JSON 错误正文处理;流开始后的错误可能表现为事件异常或连接中断。错误对象由兼容的模型服务返回;除 error.message 外的字段可能省略。
错误对象字段¶
{
"error": {
"message": "<可读错误信息>",
"type": "<错误类型,可能省略>",
"code": "<错误代码,可能省略>"
}
}
建立流前的错误正文中可能出现以下字段。
字段 |
类型 |
说明 |
|---|---|---|
|
string |
建立流前返回的可读错误信息。 |
|
string,可选 |
上游错误类别。 |
|
string 或 null,可选 |
上游错误代码。 |
常见错误¶
下表说明建立流前或读取事件时应执行的操作。
阶段或 HTTP 状态码 |
错误代码或现象 |
常见原因 |
建议操作 |
|---|---|---|---|
建立流前: |
— |
请求体或 |
修正请求后重新建立连接;不要开始解析 SSE。 |
建立流前: |
— |
凭据无效或没有模型权限。 |
修正认证信息和模型访问范围。 |
建立流前: |
— |
凭据无效或没有模型权限。 |
修正认证信息和模型访问范围。 |
建立流前: |
— |
请求受限或服务暂时不可用。 |
降低请求频率,或稍后建立新连接。 |
建立流前: |
— |
请求受限或服务暂时不可用。 |
降低请求频率,或稍后建立新连接。 |
已收到部分事件 |
连接在 |
流未正常结束。 |
将结果标记为中断,不标记为完成。只有应用可以识别重复内容时才重新请求。 |