流式响应
在对话补全请求中设置 stream: true,即可接收增量输出。服务器发送事件期间,HTTP 连接保持打开。
事件格式
响应内容类型为 text/event-stream。下面是一个用于说明文本增量格式的示意示例:
text
data: {"choices":[{"index":0,"delta":{"content":"Hello"}}]}
data: [DONE]不要假设每个数据块都包含文本。SDK 可能返回空增量、结束原因、用量信息或模型特定字段。处理应用需要的字段,同时为后续新增字段保留兼容性。
JavaScript 客户端
建议在服务端使用 OpenAI 官方 JavaScript 客户端处理 SSE 事件边界,而不是自行拆分原始网络数据包。
sh
npm install openaijs
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 连接。
