Skip to main content
ARouter 支持所有模型的流式响应。启用流式传输后,token 会在生成时实时传递。 要启用流式传输,请在请求体中设置 stream: true

Anthropic 流式传输

Anthropic SDK 使用其自有的流式传输格式:

Gemini 流式传输

Gemini 使用 streamGenerateContent 而非 generateContent

SSE 格式

底层流式传输使用 Server-Sent Events。每个内容事件的格式如下:
[DONE] 之前的最后一个数据块包含用量数据,且 choices 数组为空:
ARouter 可能偶尔发送 SSE 注释(以 : 开头的行)以防止连接超时。根据 SSE 规范,这些注释可以安全忽略。

推荐的 SSE 客户端库

部分 SSE 客户端实现可能无法正确解析数据。我们推荐:

取消流式请求

流式请求可通过中断连接来取消。对于支持的提供商,这将立即停止模型处理。

流式传输中的错误处理

ARouter 根据错误发生的时间,以不同方式处理流式传输中的错误。

发送任何 Token 之前出现的错误

如果在开始流式传输之前发生错误,ARouter 会返回带有适当 HTTP 状态码的标准 JSON 错误响应:
常见 HTTP 状态码:

已发送部分 Token 后出现的错误(流中途)

如果在已传输部分 token 后发生错误,ARouter 无法更改 HTTP 状态码(此时已为 200 OK)。错误将以 SSE 事件的形式发送:
关键特征:
  • 错误出现在顶层,与标准响应字段并列
  • choices 数组包含 finish_reason: "error" 以终止流
  • 由于响应头已发送,HTTP 状态保持 200 OK

错误处理代码示例