流式输出

三个推理接口都以 stream: true 开启流式:响应是逐帧到达的事件流,客户端边收边渲染,不用等整段答案生成完。

声明

参数类型约束说明
stream boolean 三个接口同名 流式开关;类型写错按 invalid_type 拒绝,不会退回非流式
stream_options.include_usage boolean Chat Completions 请求流式时附带用量:usage 块紧跟 finish_reason 块、与之同帧到达

Chat Completions 的事件形态

每帧是 data: 加一个 chat.completion.chunk 对象,空行分隔;流以 data: [DONE] 结束。函数调用的流式:一次工具调用的首个 delta 携带 id、type、name,后续 delta 只带增量参数。

data: {"id": "chatcmpl-…", "object": "chat.completion.chunk", "created": 1769700000, "model": "your-model", "choices": [{"index": 0, "delta": {"content": "快速"}, "finish_reason": null}]}

data: {"id": "chatcmpl-…", "object": "chat.completion.chunk", "created": 1769700000, "model": "your-model", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}], "usage": {"prompt_tokens": 12, "completion_tokens": 48, "total_tokens": 60}}

data: [DONE]

Messages 与 Responses 的事件序列

  • Messages:message_start → content_block_start → content_block_delta(增量文本或工具调用)→ content_block_stop → message_delta(携带 stop_reason)→ message_stop,与 Anthropic 官方事件一一对应
  • Responses:response.created → response.output_item.added → response.output_text.delta → response.output_text.done → response.output_item.done → response.completed,与 OpenAI 官方事件一一对应;这一接口同样可用 WebSocket 传输,事件对象完全相同,见Responses 的 WebSocket 传输一节

OpenAI 与 Anthropic 的官方 SDK 在各自的接入配置里填入 api.model-r.com 后即可直接消费这两种事件流,无需改代码。