Delta(增量) 协议
别名:
增量
流式响应中每个事件携带的「增量」:`choices[0].delta.content` 是一小块文本,完整输出 = 累积所有 delta,与普通响应的 `choices[0].message.content` 语义等价。
它是什么
Delta(增量)是 OpenAI 兼容的流式响应中每个事件携带的「变化量」。普通响应里 choices[0].message 一次给出完整消息;流式响应里它变成 choices[0].delta——每一帧只携带一小块增量,客户端累积所有 delta.content 才能拼出完整文本。
帧的结构
一个典型的流式序列:
- 第一帧
delta.role: "assistant"——没有 content,只宣布「下面开始是模型的话」; - 中间若干帧
delta.content——真正的增量,通常是一个 token 或一小段字符; - 倒数第二帧
delta为空对象,只有finish_reason: "stop"表示生成完毕; - 最后
data: [DONE]哨兵表示整个流结束。
注意点
三处防守缺一不可:只认 data: 行;先判断 [DONE] 再 JSON.parse;delta.content 必须是字符串才处理(role 帧、finish_reason 帧没有 content,直接跳过)。另外 usage 帧在 [DONE] 之前出现,但不是每个兼容实现都发,要当可选信息处理。后续做工具调用时,delta.tool_calls 增量是同一套机制(见第 06 章)。