Docs

模型 API

流式响应与连接管理

实现 SSE 解析、取消、超时与断流恢复,避免重复生成和错误的完成状态。

更新于

按协议解析 SSE

流式请求在模型生成过程中持续返回事件,通常使用 text/event-stream。TCP 数据块不是一个完整事件:一次 read() 可能只读到半行,也可能读到多个事件。解析器需要缓存未完成的数据,并按 SSE 空行分隔事件。

协议正文与结束
Chat Completionschoices[].delta;通常以 data: [DONE] 结束
Responses按 type 处理文本增量、完成或失败事件
Anthropiccontent_block_delta、message_delta、message_stop 等
Gemini候选结果增量与 finishReason

客户端与代理配置

  • 命令行使用 curl -N 关闭输出缓冲;Web 服务转发时避免把上游完整响应读入内存后才返回。
  • 为首个响应和整个任务设置合理超时,并让用户可以主动取消。
  • 前端只与自己的服务端连接,不在 SSE URL 中携带模型密钥。
  • 使用 SDK 的流式迭代器,或在自行实现时处理 UTF-8 跨数据块、空事件与终止事件。

断流不等于完成

收到 HTTP 200 后仍可能发生供应商错误或连接中断。应用应记录请求 ID,将输出标记为未完成,并允许用户决定是否重新生成。连接断开不保证上游已经停止或没有产生费用。

避免 SDK、反向代理、任务执行器各自叠加多层重试。尤其在已经接收到部分内容后,自动重发可能造成重复输出、额外费用或重复工具动作。

继续阅读