Skip to main content
在任意 POST /api/v1/completions 请求中设置 stream: true,即可获得 Server-Sent Events(SSE)流,而非单个 JSON 响应。

请求

需要通过 Bearer token 进行身份验证。参见身份验证。

传输格式

每个事件由两行组成,后跟一个空行:
调用方必须缓冲部分数据块并按 \n\n 进行拆分——令牌事件每条可能只有几十字节,且传输层不保证与事件边界对齐。

事件类型(按到达顺序)

服务器以固定顺序发出事件:thinking → meta → (skills? / genui_meta?) → tool* → artifact* → token* → done。若流中途出现失败,将发出 error 事件并关闭该流。

负载模式

meta

token

tool

artifact

负载取决于 artifact.type。通用字段:id、type、title、providerId、modelId。图片类工件包含 imageUrl;视频类工件包含 videoUrl;文档类工件包含 downloadUrl 和 sizeBytes;代码类工件包含 code 和 language。

genui_meta

skills

done

error

error 事件的负载与 REST 错误信封格式一致(参见概览):

流示例

提取 conversation_id

conversation_id 同时出现在 meta 和 done 中。对于无状态调用方(请求中未包含 conversation_id),其值为 null。对于在请求中传入了 conversation_id 的调用方,该值会原样回传。SDK 在流结束后将其暴露为 stream.conversationId。

流中错误

当编排在 meta 已发出之后失败时(例如上游 LLM 提供方超时,或触发了某个模式下的速率限制),服务器会发出带 REST 信封格式的 error 事件并关闭该流:
请使用与 REST 错误处理相同的代码路径:

SDK 用法

SDK 返回一个 TheoStream——一个可异步迭代的对象,带有用于中途取消的 cancel() 方法,以及最终的元数据属性。
参见流式获取概念性指南。