跳转到正文

流式响应 ​

在对话补全请求中设置 stream: true,即可接收增量输出。服务器发送事件期间,HTTP 连接保持打开。

事件格式 ​

响应内容类型为 text/event-stream。下面是一个用于说明文本增量格式的示意示例:

text
data: {"choices":[{"index":0,"delta":{"content":"Hello"}}]}

data: [DONE]

不要假设每个数据块都包含文本。SDK 可能返回空增量、结束原因、用量信息或模型特定字段。处理应用需要的字段,同时为后续新增字段保留兼容性。

JavaScript 客户端 ​

建议在服务端使用 OpenAI 官方 JavaScript 客户端处理 SSE 事件边界,而不是自行拆分原始网络数据包。

sh
npm install openai
js
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.STREAMINGTELLIGENCE_API_KEY,
  baseURL: process.env.STREAMINGTELLIGENCE_BASE_URL,
});

const stream = await client.chat.completions.create({
  model: process.env.STREAMINGTELLIGENCE_MODEL,
  messages: [{ role: 'user', content: 'Describe this moment.' }],
  stream: true,
});

try {
  for await (const chunk of stream) {
    process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
  }
} finally {
  stream.controller.abort();
}

断连与重试 ​

用户离开或不再需要答案时,应取消请求。连接在生成完成前关闭,应视为响应中断;不要将第二次独立生成的结果直接拼接到第一次结果后。

对暂时性故障使用有次数上限的指数退避重试。自动重试可能产生额外用量。认证或请求校验错误应先修正请求,而不是反复重试。

多模态流式会话 ​

支持的输入格式、上下文限制和会话传输方式取决于所选模型。接入持续摄像头输入或历史上下文时,请遵循该模型已发布的接口规范,不要默认对话补全接口同时支持 WebSocket 连接。

StreamingTelligence Lab