POST /api/v1/completions 請求中設置 stream: true,即可獲得 Server-Sent Events(SSE)流,而非單個 JSON 響應。
請求
傳輸格式
每個事件由兩行組成,後跟一個空行:\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 事件並關閉該流:
SDK 用法
SDK 返回一個TheoStream——一個可異步迭代的對象,帶有用於中途取消的 cancel() 方法,以及最終的元數據屬性。
