コンテンツにスキップ
メインサイト ニュース コンソール

ストリーミング応答と非ストリーミング応答

このページでは Claude ネイティブ呼び出し(/v1/messages)のレスポンス処理について説明します。接続方法は Claude ネイティブ呼び出しの基礎 を参照してください。

非ストリーミング応答

{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [{ "type": "text", "text": "……" }],
"stop_reason": "end_turn",
"usage": { "input_tokens": 24, "output_tokens": 180 }
}
  • 本文は content 配列内にあり、ブロック(text / tool_use / thinking)ごとに構成されるため、ブロック単位で走査してから結合します;
  • stop_reason:end_turn は正常終了、max_tokens は打ち切り、tool_use はツール呼び出し要求を意味します。

ストリーミング応答(SSE)

リクエストに "stream": true を追加すると、イベントが種類ごとに送信されます:

イベント意味
message_startセッション開始、入力 token 数を含む
content_block_start1つのコンテンツブロック開始(text/tool_use/thinking)
content_block_delta本文の差分、delta.text を連結すればよい
content_block_stop現在のコンテンツブロック終了
message_delta末尾メタデータ(stop_reason、出力 token 数)
message_stopすべて終了
with client.messages.stream(
model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "海についての短い詩を書いて"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

注意事項

  • 公式 Anthropic SDK を使う場合、これらのイベントはすでにラップされているため、SSE を手動で記述する場合のみイベントごとの処理が必要です;
  • token 使用量は message_start(入力)+ message_delta(出力) を基準とし、請求と一致します;
  • 思考モードの thinking ブロックの解析については思考モード を参照してください。