output_config.effort(エフォートレベル)および thinking(アダプティブ・シンキング)の正しい使い方を説明します。
チャネル、課金、基本的なオンボーディングについては、まず Claude API 基礎 のページをご覧ください。
対応モデル: Claude Opus 4.8 / 4.7 / 4.6、Sonnet 4.6 など。このページでは Opus 4.8 を例にしています。
オンラインテストツール
コードを書きたくありませんか? まずは APIYI のオンライン推論テスターをお試しください。モデルと effort レベルを選び、Max Tokens を設定し、「return thinking summary」をオンにして、各 effort レベルがどのように推論するかをブラウザ上で比較できます。推論テスター · APIYI オンラインツール
ブラウザで直接 Claude(および GPT / Gemini)の推論テストを実行できます。コードは不要で、APIYI キーを貼り付けるだけです。

リクエスト構造
エンドポイントとヘッダー
APIYI が Bedrock にルーティングする場合でも、クライアントは引き続き Anthropic ネイティブ形式(
x-api-key + /v1/messages)を使用します。ゲートウェイが Bedrock の bedrock-2023-05-31 への変換を内部で処理します。anthropic_version: bedrock-2023-05-31 を設定する必要はありません。最小リクエストボディ
努力度レベル
effort は、Claude が結果の生成に費やす token 数をどれだけ許容するかを制御し、丁寧さと速度/コストの間でトレードオフを取ります。これは、回答、ツール呼び出し、拡張思考を含むすべての token 消費に影響します。
effort を指定したリクエストボディ
レベルの概要
各モデルがサポートするレベル
すべてのモデルがすべてのレベルをサポートしているわけではありません。xhigh は Opus 4.7 で追加され、max は Sonnet ではサポートされていません:
アダプティブ思考
Opus 4.7 / 4.8 は アダプティブ思考 を使用します: モデルがいつ、どれだけ考えるかを決め、effort が深さを制御します。thinking.type: "adaptive"— アダプティブ思考を有効にします(省略するとモデルは思考しません)。thinking.display: "summarized"— 応答で thinking summary ブロックを返します。表示する必要がなければ省略してください。- effort と思考の関係:
high/xhigh/maxはほぼ常に深く考えます。low/mediumは簡単な問題では思考を省略する場合があります。 displayのデフォルトはモデルによって異なります: Opus 4.6 のデフォルトはsummarizedで、Opus 4.7 / 4.8 のデフォルトはomittedです(thinking block 自体は存在しますが、そのthinkingテキストは空で、回答の前に一時停止として表示されます)。サマリーを確実に取得するには、display: "summarized"を明示的に設定してください。- ネイティブ API に
-thinkingサフィックス付きモデルはありません。モデルが思考するかどうかはモデル名のサフィックスではなくthinkingパラメータ で制御されます。xxx-thinkingはサードパーティのエイリアスにすぎません。ベースモデル ID とthinkingパラメータだけを使ってください。
思考サマリーの実体とは(重要)
- サマリーは Anthropic(モデル/サービングレイヤー)によって生成されるもので、ゲートウェイでも別のモデルでもありません。生の思考の連鎖が逐語的に返されることはなく、取得できるのは公式サマリーです。
- system prompt で thinking summary のスタイルを変えることはできません。
systemはモデルの思考のしかたと最終回答のスタイルを形作りますが、サマリーは内部推論の読みやすい表現にすぎません。トーン、書式、スタイルの要件は最終回答への制約に入れて、textブロックに反映されるようにしてください。 - モデルに内部推論を回答内で逐語的に出力するよう促さないでください。拒否される場合があります(
stop_reason: "refusal"、stop_details.categoryがreasoning_extractionになることもあります)。推論を確認したい場合は、代わりにdisplay: "summarized"サマリーを読み取ってください。
複数ターンの会話を 同じモデル で続ける場合は、前のターンの thinking blocks を(署名や空テキストのブロックを含めて)変更せずにそのまま返してください。API は 変更された thinking blocks を拒否します。サマリーを表示するのは問題ありませんが、返す前に編集するのはできません。
レスポンスの解析
レスポンスcontent は、type によって区別されるブロックの配列です:
usage フィールドにあります:
stop_reason が max_tokens の場合、出力は max_tokens によって切り詰められています(高い effort では thinking が簡単に予算を使い切ることがあり)、回答テキストが空になることもあります — その場合は単に max_tokens を送出してください。ストリーミング(stream)中の thinking フィールド
stream: true では、thinking コンテンツは delta.text では送られてこず、専用のイベントシーケンスとして出力されます。
回答テキストは引き続き
delta.type = "text_delta" → delta.text で送られます。display: "omitted" の場合でも thinking ブロックは表示されますが、delta.thinking は空文字列です。
完全に実行可能なサンプル
Bedrock ルートの注意事項
トラブルシューティング
"thinking.type.enabled" is not supported for this model
AWS(Bedrock)経由で Opus 4.7 / 4.8 を呼び出す際に最もよく発生する 400 エラーは次のとおりです:
thinking: { "type": "enabled", "budget_tokens": N } を使っています。Opus 4.7 / 4.8(および新しいモデル)ではこれが 削除 され、適応型推論のみをサポートします。AWS 側の上流では ValidationException の 400 が返されます。これは上の 適応型推論 セクションの注記と一致しています。
対処: type: "enabled" と budget_tokens を削除し、推論の深さは adaptive + output_config.effort で制御します。
推論なしで実行するには: Opus 4.7 / 4.8 は
thinking: { "type": "disabled" } を受け付けます。あるいは thinking フィールドを単純に省略してください(フィールドがなければ推論なしです)。参考資料
- Anthropic — Effort ドキュメント:
platform.claude.com/docs/en/build-with-claude/effort - AWS Bedrock — 適応型 thinking:
docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html - AWS Bedrock — Claude Opus 4.8:
docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html