Skip to main content
ARouter はすべてのモデルのストリーミングレスポンスをサポートしています。ストリーミングを有効にすると、トークンは生成されるにつれてリアルタイムで配信されます。 ストリーミングを有効にするには、リクエスト本文に stream: true を設定してください。

Anthropic ストリーミング

Anthropic SDK は独自のストリーミング形式を使用します:

Gemini ストリーミング

Gemini は generateContent の代わりに streamGenerateContent を使用します:

SSE フォーマット

内部的には、ストリーミングは Server-Sent Events を使用しています。各コンテンツイベントは次のようになります:
[DONE] の直前の最後のチャンクには使用量データが含まれ、choices 配列は空になります:
ARouter は接続タイムアウトを防ぐために、SSE コメント(: で始まる行)を時折送信することがあります。SSE 仕様に従い、これらは安全に無視できます。

推奨 SSE クライアントライブラリ

一部の SSE クライアント実装では、ペイロードを正しく解析できない場合があります。以下を推奨します:

ストリームのキャンセル

ストリーミングリクエストは接続を中断することでキャンセルできます。対応プロバイダーでは、これによりモデルの処理が即座に停止します。

ストリーミング中のエラー処理

ARouter は、エラーが発生したタイミングに応じて異なる方法でストリーミング中のエラーを処理します。

トークンが送信される前のエラー

トークンがストリーミングされる前にエラーが発生した場合、ARouter は適切な HTTP ステータスコードを持つ標準的な JSON エラーレスポンスを返します:
一般的な HTTP ステータスコード:

トークン送信後のエラー(ストリーム途中)

一部のトークンがストリーミングされた後にエラーが発生した場合、ARouter は HTTP ステータスコードを変更できません(すでに 200 OK)。エラーは SSE イベントとして送信されます:
主な特徴:
  • エラーは標準レスポンスフィールドとともにトップレベルに表示されます
  • ストリームを終了するために finish_reason: "error" を含む choices 配列が含まれます
  • ヘッダーが既に送信されているため、HTTP ステータスは 200 OK のままです

エラー処理のコード例