細粒度ツールストリーミング
ツール使用は、パラメータ値の細粒度ストリーミングをサポートするようになりました。これにより、開発者はバッファリング/JSON検証なしでツール使用パラメータをストリーミングでき、大きなパラメータの受信開始までの遅延を削減できます。
細粒度ツールストリーミングはベータ機能です。本番環境で使用する前に、必ずレスポンスを評価してください。
モデルレスポンスの品質、API自体、またはドキュメントの品質についてのフィードバックを提供するには、このフォームをご利用ください。皆様からのご意見をお待ちしております!
細粒度ツールストリーミングを使用する際、無効または部分的なJSON入力を受信する可能性があります。コードでこれらのエッジケースを考慮するようにしてください。
細粒度ツールストリーミングの使用方法
このベータ機能を使用するには、ツール使用リクエストにベータヘッダーfine-grained-tool-streaming-2025-05-14
を追加し、ストリーミングを有効にするだけです。
APIで細粒度ツールストリーミングを使用する例を以下に示します:
この例では、細粒度ツールストリーミングにより、Claudeはlines_of_text
パラメータが有効なJSONかどうかを検証するためのバッファリングなしで、長い詩の行をツール呼び出しmake_file
にストリーミングできます。これにより、パラメータ全体のバッファリングと検証を待つことなく、到着時にパラメータストリームを確認できます。
細粒度ツールストリーミングでは、ツール使用チャンクのストリーミング開始が速くなり、多くの場合より長く、単語の区切りが少なくなります。これはチャンキング動作の違いによるものです。
例:
細粒度ストリーミングなし(15秒の遅延):
細粒度ストリーミングあり(3秒の遅延):
細粒度ストリーミングはバッファリングやJSON検証なしでパラメータを送信するため、結果のストリームが有効なJSON文字列で完了する保証はありません。
特に、停止理由 max_tokens
に達した場合、ストリームはパラメータの途中で終了し、不完全になる可能性があります。一般的に、max_tokens
に達した場合を処理するための特別なサポートを記述する必要があります。
ツールレスポンスでの無効なJSONの処理
細粒度ツールストリーミングを使用する際、モデルから無効または不完全なJSONを受信する可能性があります。この無効なJSONをエラーレスポンスブロックでモデルに戻す必要がある場合は、適切な処理を確保するためにJSONオブジェクトでラップできます(適切なキーを使用)。例:
このアプローチにより、モデルはコンテンツが無効なJSONであることを理解しながら、デバッグ目的で元の不正な形式のデータを保持できます。
無効なJSONをラップする際は、ラッパーオブジェクトで有効なJSON構造を維持するために、無効なJSON文字列内の引用符や特殊文字を適切にエスケープしてください。