コンテンツにスキップ

ストリーミング応答

RouteAPI のストリーミング出力は Server-Sent Events(SSE)を使用します。リクエストで stream: true を設定すると、サーバーは増分内容を段階的に返します。

Terminal window
curl https://www.routeapi.ai/v1/chat/completions \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"stream": true,
"messages": [
{ "role": "user", "content": "ストリーミング出力とは何かを段階的に説明してください" }
]
}'
data: {"id":"chatcmpl_xxx","choices":[{"delta":{"content":"RouteAPI"}}]}
data: {"id":"chatcmpl_xxx","choices":[{"delta":{"content":" は"}}]}
data: [DONE]

クライアントは data: の内容を行単位で読み取り、[DONE] を受け取ったら今回のレスポンスを終了します。

現在のモデルが対応している場合、ストリーミングリクエストでは stream_options により最後に usage を返すよう要求できます。

{
"stream": true,
"stream_options": {
"include_usage": true
}
}

このフィールドに対応しているかどうかは、選択したモデルとサービス能力に依存します。

ストリーミングリクエストでは、接続確立後にサービス側エラーが発生することがあります。例:

  • モデルサービスのタイムアウト
  • アカウントクォータ不足
  • ネットワーク切断
  • クライアントによる切断
  • ツール呼び出しパラメータ生成失敗

クライアント側の推奨事項:

  1. 各リクエストで request id を記録します。
  2. ネットワーク切断には限定的な再試行を行います。
  3. すでに副作用を発生させたツール呼び出しを自動再試行しないでください。
  4. コンソールの使用ログでサービス側エラーを調査します。