开发者文档

从这些内容开始

搜索标题与正文↑ ↓ 选择 · Enter 打开 · Esc 关闭

流式输出

边生成边展示回复,并正确处理流结束、用量与网络中断。

选择对应协议

Chat Completions、Messages 与 Responses 使用不同的流事件结构。优先使用对应 SDK 的解析能力,避免把一种协议的解析器用于另一种接口。

用 SDK 读取 Chat Completions

先按 OpenAI Node.js 安装 SDK、配置 UOUO_API_KEYUOUO_MODEL。将以下代码保存为 stream.mjs,运行 node stream.mjs

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.UOUO_API_KEY,
  baseURL: "https://uouo.cloud/v1",
});
const stream = await client.chat.completions.create({
  model: process.env.UOUO_MODEL,
  messages: [{ role: "user", content: "Hello" }],
  stream: true,
});
try {
  for await (const chunk of stream) {
    process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
  }
  process.stdout.write("\n");
} catch (error) {
  console.error("流式响应中断,请保留当前输出并检查请求日志。", error.message);
}

如果直接处理 SSE

网络分片不等于一条完整 SSE 事件。一条事件可能跨多个分片到达;保存未完成片段,只消费完整事件,避免重复拼接已处理的缓冲区。

Chat Completions 的结束标记与 Messages 的结束事件不同,按所选接口判断完成状态。

中断后怎么处理?

保留已有输出,并把界面标记为未完成。不要把连接关闭一概视为成功,也不要自动把整段请求再次发送而不考虑重复生成。

用量核对

流内用量信息取决于模型与参数;连接中断时可能收不到最后的统计。到 调用日志Usage 核对消耗。

相关指南

流式输出 · uouo cloud