ツール使用は、パラメータ値の細粒度ストリーミングをサポートするようになりました。これにより、開発者はバッファリング/JSON検証なしでツール使用パラメータをストリーミングでき、大きなパラメータの受信開始までの遅延を削減できます。

細粒度ツールストリーミングはベータ機能です。本番環境で使用する前に、必ずレスポンスを評価してください。

モデルレスポンスの品質、API自体、またはドキュメントの品質についてフィードバックを提供するには、このフォームをご利用ください。皆様からのご意見をお待ちしております!

細粒度ツールストリーミングを使用する場合、無効または部分的なJSON入力を受信する可能性があります。コードでこれらのエッジケースを考慮するようにしてください。

細粒度ツールストリーミングの使用方法

このベータ機能を使用するには、ツール使用リクエストにベータヘッダーfine-grained-tool-streaming-2025-05-14を追加し、ストリーミングを有効にするだけです。

以下は、APIで細粒度ツールストリーミングを使用する方法の例です:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: fine-grained-tool-streaming-2025-05-14" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 65536,
    "tools": [
      {
        "name": "make_file",
        "description": "Write text to a file",
        "input_schema": {
          "type": "object",
          "properties": {
            "filename": {
              "type": "string",
              "description": "The filename to write text to"
            },
            "lines_of_text": {
              "type": "array",
              "description": "An array of lines of text to write to the file"
            }
          },
          "required": ["filename", "lines_of_text"]
        }
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Can you write a long poem and make a file called poem.txt?"
      }
    ],
    "stream": true
  }' | jq '.usage'

この例では、細粒度ツールストリーミングにより、Claudeはlines_of_textパラメータが有効なJSONかどうかを検証するためのバッファリングなしで、長い詩の行をツール呼び出しmake_fileにストリーミングできます。これは、パラメータ全体のバッファリングと検証を待つことなく、到着時にパラメータストリームを確認できることを意味します。

細粒度ツールストリーミングでは、ツール使用チャンクのストリーミング開始が速くなり、多くの場合より長く、単語の区切りが少なくなります。これはチャンキング動作の違いによるものです。

例:

細粒度ストリーミングなし(15秒の遅延):

チャンク1: '{"'
チャンク2: 'query": "Ty'
チャンク3: 'peScri'
チャンク4: 'pt 5.0 5.1 '
チャンク5: '5.2 5'
チャンク6: '.3'
チャンク8: ' new f'
チャンク9: 'eatur'
...

細粒度ストリーミングあり(3秒の遅延):

チャンク1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
チャンク2: ' new features comparison'

細粒度ストリーミングはバッファリングやJSON検証なしでパラメータを送信するため、結果のストリームが有効なJSON文字列で完了する保証はありません。 特に、停止理由 max_tokensに達した場合、ストリームはパラメータの途中で終了し、不完全になる可能性があります。一般的に、max_tokensに達した場合を処理するための特別なサポートを記述する必要があります。