一度のパスで回答するモデルは、最初の試行ですべてを正しく行わなければなりません。下書きも、確認も、途中での方向転換もありません。証明、厄介なバグ、長時間のエージェントタスクでは、最初のアプローチが最善であることはほとんどありません。
思考はこの制約を取り除きます。思考が有効な場合、Claudeは回答する前に自分の言葉で問題に取り組みます。何が求められているかを言い換え、アプローチを試し、中間結果を確認し、成り立たない道筋を放棄します。その推論は応答の前にthinkingコンテンツブロックとして届き、Claudeはそれを活用して最終的な回答を生成します。これが、数学、コーディング、分析、長時間のエージェント作業など、回答の質が中間作業に依存する複雑なタスクで思考がパフォーマンスを向上させる理由です。思考がなければ、その中間作業は応答自体に圧縮されるか、スキップされてしまいます。
思考にはコストがかかります。Claudeが推論に費やすトークンは、思考テキストが返されない場合でも出力トークンとして課金され、応答テキストとともにmax_tokensにカウントされます。このページでは、API全体での思考の動作について説明します。思考を有効にする方法、その出力の読み方、ツール、ストリーミング、キャッシング、コンテキストウィンドウとの相互作用の管理方法を扱います。
特定のリクエストでClaudeが思考するかどうか、そしてどの程度深く思考するかは、思考の設定とリクエストの複雑さによって決まります。
応答における思考は次のようになります。1つ以上のthinkingコンテンツブロックがtextブロックの前に届きます。思考ブロックも、その後に続くtextブロックと同様に生成されたコンテンツですが、正式な応答とは分離されています。各思考ブロックにはsignatureフィールドも含まれており、これは完全な推論の暗号化されたコピーで、マルチターンおよびツール使用の会話で変更せずに渡し返します(思考の暗号化を参照)。
{
"content": [
{
"type": "thinking",
"thinking": "Let me break this down. The question has two parts, so I'll start with the simpler one and use its result to constrain the second...",
"signature": "WaUjzkypQ2mUEVM36O2Txu...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}このテキストが常に表示されるわけではなく、表示されるものは生の思考の連鎖ではありません。思考ブロック内のテキストはClaudeの推論の要約です。思考設定のdisplayフィールドは、その要約が返されるかどうかを制御します。"summarized"は要約を返し、最新モデルのデフォルトである"omitted"はthinkingフィールドが空の思考ブロックを返します。いずれの場合も、ブロックは同じように課金され、マルチターン会話で同じように渡し返されます。モデルごとのデフォルトと詳細については、思考表示の制御を参照してください。
Claudeがツールを使用する場合、思考はツール呼び出しの間にも現れることがあります。ツール使用と思考を参照してください。完全な応答形式については、Messages APIリファレンスを参照してください。
現在のモデルでは、思考はデフォルトで有効になっているか、1つのパラメータで有効にできます。各モデルが受け入れる設定とそのデフォルトは、トラブルシューティングページのモデルごとの設定表に記載されています。
Claude Opus 5、Claude Sonnet 5、Claude Fable 5、Claude Mythos 5、Claude Mythos Previewでは、思考はすでに有効になっており、設定は不要です。これらのモデルでほとんどの開発者が最初に必要とするのは、思考テキストを表示することです。なぜなら、これらのモデルではdisplayのデフォルトが"omitted"だからです。thinking: {"type": "adaptive", "display": "summarized"}でオプトインします。これは、モデル文字列を入れ替えた以下のリクエストとまったく同じです。
Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 4.6では、thinking: {type: "adaptive"}を設定するまで思考は無効です。この設定により、Claudeはリクエストに基づいていつ、どの程度深く思考するかを決定できます。以下の例ではこれを行い、思考テキストが表示されるようにdisplay: "summarized"を設定し、余裕のあるmax_tokensを使用しています。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
)
for block in response.content:
if block.type == "thinking":
print(f"\nThinking: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")この例を実行すると、要約された思考が出力され、その後に回答が出力されます。
Thinking: Use Euclidean algorithm.
1071 = 2*462 + 147
462 = 3*147 + 21
147 = 7*21 + 0
GCD = 21
Response: ## Finding GCD of 1071 and 462
I'll use the **Euclidean algorithm**, repeatedly dividing and taking remainders...思考トークンはmax_tokensにカウントされるため、思考と応答テキストの両方に十分な余裕を持たせるように高く設定してください。ステアリングページのコスト管理と思考とコンテキストウィンドウを参照してください。
思考がデフォルトで有効になっているClaude Sonnet 5では、思考を無効にできます。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=4096,
thinking={"type": "disabled"},
messages=[{"role": "user", "content": "Summarize this article in one sentence."}],
)Claude Opus 5も思考がデフォルトで有効になっており、effortがhigh以下の場合にthinking: {type: "disabled"}を受け入れます。effortがxhighまたはmaxの場合、思考を無効にすることはできません。thinking: {type: "disabled"}とこれらのeffortレベルを組み合わせたリクエストは400エラーを返します。この制限はClaude Opus 5以降のモデルに適用され、各リクエストで強制されます。思考を無効にすると、Claude Opus 5はツール呼び出しをプレーンテキストとして出力したり、表示される出力に内部XMLタグを含めたりすることがあります。プロンプトによる緩和策については、思考を無効にして実行するを参照してください。
Claude Fable 5、Claude Mythos 5、Claude Mythos Previewはthinking: {type: "disabled"}を拒否します。これらのモデルでは思考を無効にできません。
モデルが拡張思考のみをサポートしている場合(モデルごとの設定表を参照)、代わりにtype: "enabled"とbudget_tokens値で設定してください。拡張思考ページでその設定について説明しています。また、思考設定が400エラーで返される場合は、思考のトラブルシューティングで各エラーメッセージとその修正方法を確認できます。
思考設定のdisplayフィールドは、API応答で思考コンテンツがどのように返されるかを制御します。displayは両方のモードで機能します。type: "adaptive"またはtype: "enabled"と一緒に設定してください。2つの値を受け入れます。
"summarized":思考ブロックには要約された思考テキスト、つまりClaudeの推論の読みやすい要約が含まれます。これはClaude Opus 4.6、Claude Sonnet 4.6、およびそれ以前のモデルのデフォルトです。"omitted":思考ブロックはthinkingフィールドが空の状態で返されます。signatureフィールドには、マルチターンの連続性のために暗号化された完全な思考が引き続き含まれます(思考の暗号化を参照)。これはClaude Fable 5、Claude Mythos 5、Claude Opus 5、Claude Sonnet 5、Claude Opus 4.8、Claude Opus 4.7、およびClaude Mythos Previewのデフォルトです。アプリケーションが思考コンテンツをユーザーに表示しない場合は、display: "omitted"を設定してください。主な利点は、ストリーミング時の最初のテキストトークンまでの時間が短縮されることです。サーバーは思考トークンのストリーミングを完全にスキップし、署名のみを配信するため、最終的なテキスト応答のストリーミングがより早く開始されます。
display: "omitted"の場合、応答にはthinkingフィールドが空のthinkingブロックが含まれます。
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}省略された思考を扱う際は、以下の点に注意してください。
signatureを復号化して、プロンプト構築のために元の思考を再構築します(思考ブロックの保持を参照)。往復した省略ブロックのthinkingフィールドに配置したテキストは無視されます。displayはthinking.type: "disabled"では無効です(表示するものがありません)。thinking.type: "adaptive"を使用していて、モデルが単純なリクエストに対して思考をスキップした場合、displayに関係なく思考ブロックは生成されません。display: "omitted"でストリーミングする場合、thinking_deltaイベントは発行されません。イベントシーケンスについては、思考のストリーミングを参照してください。Ruby SDKでは、プレーンハッシュは例に示すようにdisplay:を受け取ります。型付きのThinkingConfigAdaptiveクラスでは、パラメータ名はdisplay_(末尾にアンダースコア、RubyのKernel#displayをシャドウイングしないため)です。いずれの場合も、ワイヤー上のフィールドはdisplayのままです。
displayが"summarized"の場合、受け取る思考テキストは生の思考の連鎖ではなく、Claudeの完全な思考プロセスの要約です。要約された思考は、悪用を防ぎながら思考の完全なインテリジェンスの利点を提供します。生の思考の連鎖を返すdisplay設定はありません。
要約された思考を扱う際は、以下の点に注意してください。
思考はストリーミングと連携します。思考ブロックはcontent_block_deltaイベント内のthinking_deltaイベントとしてストリーミングされ、その後、ブロックのcontent_block_stopの直前に単一のsignature_deltaイベントが続きます。テキストブロックはその後、通常どおりストリーミングされます。
以下の例では、適応型思考で応答をストリーミングし、思考とテキストのデルタを到着次第出力します。
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive", "display": "summarized"},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)ストリーミング後に署名付きの完全な思考ブロックを再構築するには、デルタを自分で連結するのではなく、SDKのメッセージ蓄積ヘルパー(例えば、Pythonのstream.get_final_message()やTypeScriptのstream.finalMessage())が存在する場合はそれを使用してください。
display: "omitted"が設定されている場合、思考ブロックが開き、単一のsignature_deltaが到着し、thinking_deltaイベントなしでブロックが閉じます。テキストストリーミングはその直後に開始されます。
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}一般的なストリーミングの仕組みについては、メッセージのストリーミングを参照してください。
thinkingパラメータは、Claudeが回答する前に思考ブロックで思考するかどうかを制御します。effortパラメータは、Claudeが応答全体にどれだけの労力をかけるかを制御し、adaptiveモードでは思考の頻度と深さも含まれます。effortの値としてadaptiveを渡さないでください。adaptiveは思考モードであり、effortレベルではありません。
各effortレベルが思考の動作にどのような影響を与えるかについては、思考のステアリングページのレベルごとの思考動作表を参照してください。Effortページでは、各モデルがサポートするレベルを含め、パラメータ自体について説明しています。effortをサポートする唯一の拡張思考専用モデルであるClaude Opus 4.5では、effortはbudget_tokensと組み合わせて機能します。予算ルールとチューニングを参照してください。
2つの制御がこのように分離されているため、目的に合ったものを選択してください。
effortを下げてください。思考を含め、応答全体がスケールダウンされます。effortを上げるか、ステアリングページのClaudeの思考頻度のステアリングを参照してください。thinking: {type: "disabled"}を使用してください(モデルごとの設定表を参照)。max_tokensを使用してください。effortはソフトなガイダンスです。max_tokensは厳格な制限です。思考はツール使用と連携し、Claudeがツール選択を推論し、ツール結果を処理できるようにします。2つの制約が適用されます。
thinking: {type: "enabled"})でのツール使用は、tool_choice: {"type": "auto"}(デフォルト)またはtool_choice: {"type": "none"}のみをサポートします。tool_choice: {"type": "any"}またはtool_choice: {"type": "tool", "name": "..."}を使用すると、これらのオプションはツール使用を強制するため、手動拡張思考と互換性がなく、エラーになります。適応型思考は、思考がデフォルトで有効なモデルを含め、強制ツール使用をサポートします。ツール使用ループは1つのアシスタントターンです。 モデルの観点からは、アシスタントターンはClaudeが完全な応答を完了するまで完了しません。これには複数のツール呼び出しと結果が含まれる場合があります。このシーケンス全体が単一のアシスタントターンです。
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]ターン全体が単一の思考モードで実行されます。ツール使用ループ中を含め、ターンの途中で思考を切り替えることはできません。拡張(手動)モードでは、APIはさらに、思考が有効なリクエストの最後のアシスタントターンが思考ブロックで始まることを強制します。適応型モードではこれが緩和され、どのアシスタントターンも思考ブロックで始まる必要はありません。
ターン途中の競合は適切に劣化します。 ターンの途中で思考を切り替えた場合(例えば、ツール呼び出しを送信してからその結果を返すまでの間)、APIはエラーを返しません。代わりに、そのリクエストに対して思考を暗黙的に無効にします。モデルの品質を維持するために、APIは無効なターン構造を作成する思考ブロックを削除したり、会話履歴が思考の有効化と互換性がない場合に思考を無効にしたりすることがあります。思考が有効だったかどうかを確認するには、応答にthinkingブロックが存在するかどうかを確認してください。
ターン内ではなく、ターン間で切り替えてください。 各ターンの開始時に思考戦略を計画してください。アシスタントターンを完了してから、次のターンの思考設定を変更してください。
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)思考モードを切り替えると、プロンプトキャッシングも無効になります。思考とプロンプトキャッシングを参照してください。
Claudeがツールを呼び出すと、外部情報を待つために応答の構築を一時停止します。ツール結果を返すと、Claudeは同じ応答の構築を続行するため、以前の推論がまだ存在している必要があります。すべてのthinkingブロックを、それに付随するtool_useブロックとともに、完全かつ変更せずにAPIに渡し返してください。これは2つの理由で重要です。
要約すると:
古い思考を自分で削除する必要はありません。マルチターン会話ですべての思考ブロックを渡し返すと、APIが自動的にフィルタリングし、モデルの推論を保持するために必要なブロックを保持し、実際にClaudeに表示されるブロックに対してのみ入力トークンを課金します。どの以前のターンのブロックが保持されるかはモデルごとに異なります。モデルごとの思考ブロック保持を参照してください。デフォルトを上書きするには、clear_thinking_20251015コンテキスト編集戦略を使用してください。
最新のアシスタントメッセージ内では、連続するthinkingブロックのシーケンスは、元のリクエストでモデルが生成したものと一致する必要があります。並べ替え、編集、部分的な削除はできません。これにはredacted_thinkingブロックも含まれます。
すべてのSDKでのコードを含む完全な2ターンのウォークスルーについては、ツールおよびマルチターンワークフローでの思考を参照してください。ツールを定義し、思考とツール使用の応答を受け取り、ツール結果とともにアシスタントターンをエコーバックします。
「interleaved thinking」(インターリーブ思考)により、Claudeはツール呼び出しの間に思考し、各ツール結果について推論してから行動できます。インターリーブ思考により、Claudeは次のことができます。
適応型思考では、適応型思考をサポートするすべてのモデルでインターリーブ思考が自動的に行われます。ベータヘッダーは不要です。Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7では、ツール呼び出し間の推論は常に思考ブロックに表示されます。Claude Haiku 4.5はインターリーブ思考をサポートしていません。手動拡張思考を使用するモデルでは、インターリーブにはベータヘッダーが必要で、思考予算のカウント方法が変わります。手動モードでのインターリーブ思考では、モデルごとのルールとプラットフォーム固有のヘッダー動作について説明しています。
インターリーブ思考では、思考の割り当ては単一の応答ではなく、アシスタントターン全体にわたることができます。インターリーブ思考は、Messages APIを通じて使用されるツールでのみサポートされています。
2つのツールを使用するワークフローでインターリーブ思考が何を変えるかを示す実例比較については、インターリーブ思考がフローをどのように変えるかを参照してください。
以前のアシスタントターンの思考ブロックがデフォルトでコンテキストに残るかどうかは、モデルによって異なります。
保持には2つの利点があります。
トレードオフはコンテキストの使用量です。保持された思考ブロックは他の会話履歴と同様に入力としてカウントされるため、長い会話はすべて保持するモデルでより多くのコンテキストスペースを消費します(思考とコンテキストウィンドウを参照)。この動作は両方の方式で自動的に行われます。コードの変更やベータヘッダーは不要で、思考ブロックの保持で説明されているように、完全で変更されていない思考ブロックを渡し返し続ける必要があります。いずれかの方向でデフォルトを上書きするには、思考ブロックのクリアを使用してください。
会話の途中でモデルを切り替える。 例えば分類器による拒否フォールバックの後など、2つのモデル間で切り替える場合は、以前のアシスタントターンからthinkingおよびredacted_thinkingブロックを削除してください。思考ブロックは、それを生成したモデルに紐付けられています。他のモデルはリクエストを拒否するのではなく暗黙的に無視しますが、無視されたブロックも入力トークンを追加します。
プロンプトキャッシングは、いくつかの特定の方法で思考と相互作用します。以下のルールは両方の思考モードに適用されます。
設定の変更はキャッシングを無効にします。 思考設定と解決されたeffortレベルはプロンプト自体にレンダリングされるため、いずれかを変更すると新しいキャッシュプレフィックスが開始されます。adaptive、enabled、disabled間の切り替え、budget_tokensの変更、effort値の変更はすべてキャッシュブレークポイントを無効にします。メッセージレベルのブレークポイントは常にミスし、ツールおよびシステムプロンプトのブレークポイントも、モデルが設定をレンダリングする場所によってはミスする可能性があります。思考またはeffortの変更は、キャッシュを最初からやり直すものとして扱ってください。同じ設定を維持する連続したリクエストはキャッシュを保持し、パラメータを明示的にデフォルト値に設定することは、それを省略することと同等です。使用量出力を含む実例デモンストレーションは、思考のステアリングページにあります。
思考ブロックはツール結果とともにキャッシュされます。 ツール使用ループ中、キャッシングはツール結果を含むフォローアップリクエストを行うときに発生します。その時点で、思考ブロックを含む以前の会話履歴をキャッシュでき、それらのキャッシュされた思考ブロックは、キャッシュから読み取られるときに使用量メトリクスで入力トークンとしてカウントされます。これは、明示的なcache_controlマーカーがなくても自動的に発生し、通常の思考とインターリーブ思考で同じように動作します。トレードオフ:応答で二度と見ることのない思考ブロックも、キャッシュから読み取られるときに入力トークン使用量に寄与します。
以前のブロックがコンテキストに存在するかどうかはモデルごとに異なります。 保持のデフォルトがこれを決定します。すべて保持するモデルでは、以前のターンの思考ブロックはキャッシュされ、コンテキストに残ります。最後のターンのみのモデルでは、ツール結果ではないユーザーメッセージを送信すると、以前のすべての思考ブロックがコンテキストから削除されます。それらのモデルでは、次のような会話は:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]思考ブロックが存在しなかったかのように処理されます。
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]すべて保持するモデルでは、同じリクエストでthinking_block_1とthinking_block_2がコンテキストとキャッシュに保持されます。
劣化により、キャッシュ可能な履歴から思考が削除されます。 ターンの途中で思考が無効になり、現在のツール使用ターンで思考コンテンツを渡した場合、思考コンテンツは削除され、そのリクエストでは思考は無効のままになります(適切な劣化を参照)。インターリーブ思考は、複数のツール呼び出しの間に思考ブロックが発生する可能性があるため、キャッシュ無効化の影響を増幅させます。
現在のターンでClaudeが生成するすべての思考を含むmax_tokensは、厳格な制限として強制されます。Claude 4.5モデル以降では、入力トークンとmax_tokensの合計がコンテキストウィンドウサイズを超える場合、APIはリクエストを受け入れます。その後、生成がコンテキストウィンドウの制限に達すると、エラーを返す代わりにstop_reason: "model_context_window_exceeded"で停止します。それ以前のモデルでは、APIは代わりに検証エラーを返します。停止理由の処理を参照してください。
思考がウィンドウに対してどのようにカウントされるかは、いつ生成されたかによって異なります。
max_tokensにカウントされ、出力トークンとして課金され、それを生成したターンのコンテキストウィンドウスペースを占有します。実際には:
max_tokensにカウントされ、その後ウィンドウから削除されます。以下の図は、最後のターンのみ(削除)の方式を示しています。最初の図はマルチターン会話を示しています。各ターンの思考ブロックは出力で生成されますが、後のターンの入力には引き継がれません。
2番目の図は、ツール使用を伴う同じ方式を示しています。思考はアシスタントターンの間、ツール結果とともにコンテキストに残り、次のユーザーターンで削除されます。
特に思考を含むマルチターン会話では、特定のユースケースの正確なカウントを取得するためにトークンカウントAPIを使用してください。
完全な思考コンテンツは暗号化され、各思考ブロックのsignatureフィールドで返されます。APIは署名を使用して、渡し返された思考ブロックがClaudeによって生成されたことを検証します。
署名を扱う際は、以下の点に注意してください。
content_block_stopイベントの直前にcontent_block_deltaイベント内のsignature_deltaとして到着します。signature値は、Claude 4以降のモデルでは以前のモデルよりも大幅に長くなっています。signatureフィールドは不透明です。解釈したり解析したりしないでください。signature値はプラットフォーム間(Claude API、Amazon Bedrock、Google Cloud)で互換性があります。あるプラットフォームで生成された値は別のプラットフォームでも機能します。通常のthinkingブロックに加えて、Claudeの推論の一部が安全上の理由で編集された場合、APIはredacted_thinkingブロックを返すことがあります。redacted_thinkingブロックには、読み取り可能なテキストがなく、dataフィールドに暗号化された思考コンテンツが含まれています。
{
"type": "redacted_thinking",
"data": "..."
}dataフィールドは不透明で暗号化されています。通常の思考ブロックのsignatureフィールドと同様に、ツールを使用してマルチターン会話を続ける際は、redacted_thinkingブロックを変更せずにAPIに渡し返してください。
Claude Fable 5およびClaude Mythos 5では、生の思考の連鎖は返されません。受け取るブロックはredacted_thinkingではなく通常のthinkingブロックであり、display設定は他のモデルと同じように機能します(要約されたテキスト、または省略された場合は空のthinkingフィールド。ここではこれがデフォルトです)。思考ブロックの応答形式については、Messages APIリファレンスを参照してください。
同じモデルで会話を続ける場合は、thinkingフィールドが空のブロックを含め、各思考ブロックを受け取ったとおりにAPIに渡し返してください。編集や再構築はしないでください。表示のために要約テキストを読むことは問題ありません。APIは、返されたコンテンツが変更されたブロックを拒否しますが、読み取っただけのブロックは拒否しません。空の省略されたthinkingフィールドに配置されたテキストは、拒否されるのではなく無視されます。
会話の途中でモデルを切り替える際の思考ブロックの処理方法については、モデルごとの思考ブロック保持を参照してください。
フォールバッククレジットで説明されている2つの例外:
fallbackブロックは、表示された場所に残ります。モデルの推論を可視化するには、応答テキストで推論を促すのではなく、このページで説明されているthinkingブロックを読んでください。Claude Fable 5では、モデルの内部推論を応答テキストの一部として引き出そうとするリクエストは、stop_details.category: "reasoning_extraction"で拒否されることがあります。フィールドリファレンスと処理ガイダンスについては、拒否カテゴリを参照してください。
サンプリングパラメータ。 Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Sonnet 5 では、デフォルト以外の temperature、top_p、top_k の値を指定すると、思考が使用されているかどうかに関係なく、すべてのリクエストで 400 エラーが返されます。それより古いモデルでは、この制限は思考が有効な場合にのみ適用されます。temperature と top_k は思考と互換性がなく、top_p は 0.95 から 1 の間の値で許可されます。
レスポンスの事前入力と強制ツール使用。 思考が有効な間は、アシスタントのレスポンスを事前入力することはできません。強制ツール使用(tool_choice: {"type": "any"} または {"type": "tool", ...})は手動の拡張思考とは互換性がありませんが、適応型思考では動作します。ツール使用での思考を参照してください。
出力制限。 Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Sonnet 5、Claude Opus 4.6、Claude Sonnet 4.6 は、リクエストあたり最大 128k の出力トークンをサポートします。Claude Haiku 4.5、Claude Sonnet 4.5、Claude Opus 4.5 は最大 64k をサポートします。Message Batches API では、output-300k-2026-03-24 ベータヘッダーにより、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Sonnet 5、Claude Opus 4.6、Claude Sonnet 4.6 の制限が 300k に引き上げられます。レガシーモデルの制限については、モデル概要を参照してください。
長時間のリクエスト。 SDK では、長時間実行されるリクエストでの HTTP タイムアウトを回避するため、max_tokens が 21,333 を超える場合にストリーミングが必須となります。これはクライアント側のバリデーションであり、API の制限ではありません。イベントを逐次処理する必要がない場合は、.stream() を .get_final_message()(Python)または .finalMessage()(TypeScript)と組み合わせて使用することで、個々のイベントを処理せずに完全な Message オブジェクトを取得できます。ストリーミングメッセージを参照してください。思考が有効な場合、思考ブロックの生成により処理時間が増加するため、レスポンス時間が長くなることを想定してください。リクエストあたりの思考がおおよそ 32k トークンを超えるワークロードでは、ネットワークの問題を回避するためにバッチ処理を使用してください。このようなリクエストは、システムタイムアウトやオープン接続数の制限に達するほど長時間実行される可能性があります。
エフォートレベル、システムプロンプトによるガイダンス、メッセージごとのステアリングを使って、Claude が思考する頻度と深さを制御し、思考のコストと料金について理解します。
思考ブロックを正しく保持する完全な 2 ターンのツール使用ラウンドトリップを順を追って確認し、インターリーブ思考がフローをどのように変えるかを確認します。
最も一般的な思考の失敗(設定による 400 エラー、空または欠落した思考ブロック、max_tokens による停止、キャッシュミス)を診断して修正します。
effort パラメータを使用して、Claude が応答時に使用するトークン数を制御し、レスポンスの徹底度とトークン効率のトレードオフを調整します。
Was this page helpful?