Skip to Content
APIリファレンスストリーミング

ストリーミングの形式

3つの推論エンドポイントはいずれも stream: true でServer-Sent Eventsを返します。 公式SDKを使う場合はSDKがイベントを解釈するため、この形式を直接扱う必要はありません。

共通のヘッダー

HTTP
Content-Type: text/event-stream; charset=utf-8 Cache-Control: no-cache Connection: keep-alive

X-AIGateway-Requested-ModelX-AIGateway-Served-ModelX-AIGateway-Fallback-Count も通常のレスポンスと同じように付きます。

Chat Completions

POST /v1/chat/completions は、OpenAI Chat Completionsと同じ chat.completion.chunk を順に返し、最後に終了を示す行を送ります。

data: {"id":"...","choices":[{"delta":{"content":"こん"}}]} data: [DONE]

Responses

POST /v1/responses のストリームは、Responses形式のイベントを返します。 各イベントは event: 行とJSONの data: 行の組です。

event: response.created data: {"type":"response.created","response":{"id":"resp_..."}}

送られるイベント名は次のとおりです。

イベント意味
response.created応答の開始
response.output_item.addedresponse.content_part.added出力アイテムとコンテンツパートの追加
response.output_text.deltaテキストの差分
response.function_call_arguments.deltatool callの引数の差分
response.output_text.doneresponse.content_part.doneresponse.function_call_arguments.doneresponse.output_item.done各単位の完了
response.completed応答の完了

compaction_trigger を含むリクエストのストリームでは、response.in_progress も送られます。 Chat Completionsと違い、終了を示す [DONE] は送られません。 response.completed が最後のイベントです。

Messages

POST /v1/messagesPOST /anthropic/v1/messages のストリームは、Anthropic Messagesのイベントを組み立てて返します。

イベント意味
message_startメッセージの開始
content_block_startcontent_block_deltacontent_block_stopコンテンツブロックの開始・差分・終了
message_deltaメッセージ単位の差分
message_stopメッセージの完了

最後のイベントは message_stop です。

途中で失敗したとき

ストリームはヘッダーを送った時点で 200 が確定するため、途中の失敗はHTTPステータスでは表せません。 モデル提供元から正しい応答を受け取れない場合や、終了イベントの前に接続が切れた場合は、ストリームが中断されます。 受信側は、最後のイベントを受け取らずに接続が閉じる場合を扱えるようにしてください。

長いストリーム

利用額とレート制限の予約は、ストリームを読んでいる間も保持されます。 長時間のストリームでは一定の間隔で予約を延長し、ストリームの終了時、または接続が切れた時点で実際の利用量に基づいて精算します。 途中で接続を切った場合も、そこまでの利用は記録されます。