SSEストリームを開く
stream: trueを有効にし、クライアントのバッファリングを無効にします。応答の各部分が利用可能になると、サーバーはデータイベントを送信します。
ストリームは段階的に処理します。一つのイベントに完成したテキストや完全なツール呼び出しが含まれるとは限りません。
SSEストリーム
bash
curl --no-buffer --request POST https://cicora.ai/api/v1/chat/completions \
--header "Authorization: Bearer $CICORA_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "openai/gpt-5.6-sol",
"stream": true,
"stream_options": {"include_usage": true},
"messages": [{"role": "user", "content": "Write a three-line poem."}]
}'差分を組み立てる
- choice/indexまたは項目識別子ごとにテキストを蓄積します。
- ツール引数をJSONフラグメントのストリームとして収集し、完了後に解析します。
- 最終的な指標が重要な場合は、ストリームで利用可能なusageオプションを明示的に有効にします。
完了とキャンセル
終了イベントを受信した場合に限り、ストリームを完了として扱います。終了イベントなしで接続が閉じた場合は、別の障害経路として扱います。
ユーザーの画面遷移にAbortControllerなどを連動させ、不要になったリクエストが開いたままにならないようにします。