Claude Opus 5.5 のあと、なぜ tool_choice で JSON を強制できないのか:breaking changes から JSON Schema へ

2026年9月24日時点:Opus 5.5(9月22日)はモデル文字列の差し替えではない。thinking は切れない。tool_choice の any/tool は 400。強制ツールの JSON パイプラインは auto + strict + JSON Schema、または Structured Output へ。

結論から:Opus 5.5 はモデル文字列の差し替えではない。2026 年 9 月 22 日、Anthropic は Claude Opus 5.5(claude-opus-5-5)を出した。価目表は一見やさしい:入出力 $4 / $20、Opus 5 より 20% 安い;キャッシュ読み $0.20、60% 減。公式は典型ワークロードでおよそ 40% 安いと言う。同日、OpenAI は GPT-6 Sol と Luna をおよそ半額にした。本番を壊すのは四处のハード失敗である:thinking は切れない;tool_choice の any と tool は 400 を返す;thinking ブロックはモデルと会話に束縛される;Claude API と Google Cloud は computer_20251124 を拒む。ツール呼び出しを強制して JSON オブジェクトを保証していたパイプラインは、いま auto に strict: true と JSON Schema を足すか、Structured Output へ移る必要がある。

本稿は 2026 年 9 月 24 日時点。その日なお有効な Anthropic のモデルページと「What's new」に拠る。本サイトにはすでに Tool Calling が JSON Schema に依存する理由、Structured Output とは何か、Agents API のあと JSON がより必要な理由 がある。本稿が答えるのは次だけ:5.5 へ移したあと、JSON 契約のどの層を変えるか。

9 月 22 日に出たもの

Claude Opus 5.5 は Claude 5.5 家族の第一弾。公式の位置づけは、長時間走る Agent のコーディングと知識作業。ID は Claude API、Google Cloud、Microsoft Foundry では claude-opus-5-5;Bedrock は anthropic.claude-opus-5-5。退役は 2027 年 9 月 22 日より早くない。Sonnet 5.5 と Haiku 5.5 は「今後数週間」で続く。

百万 token あたりの価格:入力 $4、出力 $20、5 分キャッシュ書き $5、1 時間キャッシュ書き $8、キャッシュ読み $0.20。バッチは半額。Fast mode は Claude API のみ:speed: "fast" に fast-mode-2026-02-01、$8 / $40、最高およそ 2.5 倍速。既定の effort は medium——Opus 5 の既定は high。effort を省略すると振る舞いは変わる。無言の互換ではない。

発表の基準表は Terminal-Bench 4.0 を 66.4%(GPT-6 Astra の 57.9% に対して)と書く。Anthropic 自身も言う:この能力帯では、点数差は実タスクより弱い指針であり、Fable 5.1 との体感差は表より狭い。本稿はランキングでモデルを選ばない。

四处のハード失敗、表一枚

ドキュメントは、5.5 で 400 になるリクエストをはっきり列挙している。最初の三条は Fable 5.1 にも当てはまる:

旧リクエスト5.5 では代わりに送るもの
thinking: {"type": "disabled"} または enabled に budget_tokens400 invalid_request_errorthinking を省略するか、{"type": "adaptive"} を送る;深さは effort で制御する
tool_choice: {"type": "any"} または {"type": "tool", "name": "..."}400;token 計数エンドポイントも同じ検査をするauto(または none)に strict: true、または Structured Output
system / tools / より前のメッセージを直したあと thinking ブロックを再生する2026 年 8 月 31 日以降に作ったアカウントでは既定で 400会話は追記のみ;指示の変更は会話途中の system メッセージで
Claude API または Google Cloud 上の computer_20251124400computer_toolset_20260801;Bedrock は旧ツールをなお受け付ける

もう一箇所、リクエストは落とさないが静かになる:ツール呼び出しのあいだの短い注記は、いま thinking ブロックで来る。既定の display: "omitted" ではテキストは空。それらの文を進捗バーとして流していた UI は黙る。進捗が要るなら thinking.display をセットせよ。

tool_choice で JSON を強制できなくなった理由

2024–2025 年の定番パッチは:抽出用のツールを定義し、tool_choice を any にするかそのツールを名指しし、モデルに input_schema に合うオブジェクトを出させる。プログラムはツールの arguments を読み、チャット本文を JSON.parse しなかった。5.5 ではその道は 400 である:

tool_choice: type "tool" and "any" are not supported for this model.

公式の代替は「JSON を出力してください」をもう一度書くことではない。tool_choice は auto のまま、ツールに strict: true を付け、パラメータを JSON Schema で固定する。最終返答も決まった形が要るなら、Schema を Structured Output へ置く。散文で答えずツールを呼んでほしいなら、いつそのツールが当てはまるかをプロンプトに書け。プロンプトは auto がどのツールを選ぶかに影響する。Schema の代わりにはならない。

だから 5.5 は JSON を二の次にはしない。強制呼び出しという杖を外しただけだ。杖がなくなれば、契約は自分で立たねばならない。Tool Calling が JSON Schema に依存する理由 を見よ。

auto + strict + JSON Schema

移行後の最小形は:

{
  "model": "claude-opus-5-5",
  "tool_choice": { "type": "auto" },
  "tools": [
    {
      "name": "extract_order",
      "description": "Extract a confirmed order. Call when the user has named a sku and a quantity.",
      "strict": true,
      "input_schema": {
        "type": "object",
        "properties": {
          "sku": { "type": "string" },
          "qty": { "type": "integer", "minimum": 1 }
        },
        "required": ["sku", "qty"],
        "additionalProperties": false
      }
    }
  ]
}

strict: true はデコード段階で Schema に合わせてパラメータを受け付ける。欠けたフィールド、型違い、余分なキーはここで止めるべきだ——強制呼び出しがオブジェクトを出すという賭けではない。最終返答もプログラムへ入るなら Structured Output を使え。アシスタントの文をパースするな。Structured Output とは何か と JSON.parse が失敗する理由 を見よ。

会話の途中でツール Schema を変えるなら、5.5 は inline-tools-2026-09-15 のもと、会話途中の system メッセージに完全な定義を載せられる。トップレベルの tools 配列は直さない——これは prefix 束縛の thinking と同じ規則である:履歴は追記する;すでに出した契約のスナップショットは書き直すな。

Thinking は切れない、再生も直せない

5.5 では adaptive thinking は常時オン。disabled や手動の budget_tokens は 400。深さ、遅延、費用は effort で決める:low / medium / high / xhigh / max。以前 thinking を切って token を節約していた箇所は、effort を下げろ。同じ effort 設定でも、5.5 は Opus 5 よりターンあたり多く考える傾向がある。とくに xhigh と max。max_tokens にその thinking の余地を残せ。

各 thinking ブロックは、どのモデルが書いたかを記す。5.5 は Opus 5 とそれ以前の Opus / Sonnet / Haiku のブロックを読める。Fable と Mythos は読まない。逆方向:Claude API 上の Fable 5.1 と Mythos 5.1 は 5.5 のブロックを読める;他のモデルは読めない。読めないブロックはモデルが見る前に落とされる。リクエストはなお 200;落ちたブロックは課金されない。何が落ちたかを見るには、thinking-binding-controls-2026-08-01 を送り、トップレベルの input_transformations 配列を読め。

prefix 束縛はより厳しい。2026 年 8 月 31 日 00:00 UTC 以降に作ったアカウントは、ブロックが作られたあと system、tools、より前のメッセージが変わったかを既定で検査する。変えたあとの再生は 400。これは Fable 5.1 から来た preserved thinking である。履歴のツール Schema を後から直して「契約を直す」な——thinking が無効になる。新しいツールは会話途中の system メッセージで足せ。ツール結果を戻すとき、thinking ブロックは手を入れずにそのまま返せ。

computer_20251124 と静かになった進捗バー

Claude API と Google Cloud では、5.5 は computer_toolset_20260801 だけを受け付ける。computer-use-2025-11-24 の beta ヘッダと旧ツール型を残すと 400。Bedrock はなお computer_20251124 を受け付ける。ブラウザツールと、すでに toolset に乗っている統合は変えなくてよい。ループ側はメンバーの tool_use ブロック、バッチ動作、結果上の toolset_name を扱え。

ツール呼び出しのあいだの短い文は、もう text ブロックではない。display を省略したままでは進捗ストリームは消え、エラーもない。Schema の失敗ではない。ブロックを type ではなく位置で読んでいる。先に型で分岐し、それから thinking.display を開くかを決めよ。

価目表の隣に Sol と Luna が立つ

同日、OpenAI は GPT-6 Sol(gpt-6-sol、$2 / $10)と GPT-6 Luna(gpt-6-luna、$0.10 / $0.50)を出した。GPT-5.6 同帯のおよそ半分。Astra は $10 / $50 のまま。Luna の公式の仕事は、高流量で目標がはっきりした抽出と要約——JSON パイプラインが好むレーンである。値札が安いことは、Schema を緩めてよい許可ではない。

経路を価目表だけで選ぶな。Opus 5.5 の典型 40% 節約は、半分がキャッシュと「タスクあたりの token 減」であり、メニュー上の 20% ではない。既定 effort が high から medium へ下がれば、請求も遅延も動く。ルーティングを変える前に、同じ Schema で抽出を一通り回せ。GPT-5.5 はなお 10 月 14 日に ChatGPT / Work / Codex を去る(API はその退役の外)。別の製品線である。今回の breaking change と一つにまとめて「全部アップグレード」チケットにするな。

モデル文字列を変える前に確かめる四件

  1. tool_choice を探せ。any / 名指しの tool はすべて auto に替えよ。安定した JSON が要るなら strict を開き、input_schema を締めよ。
  2. thinking を探せ。disabled と budget_tokens を消せ。effort を明示せよ。ブロックは type で読め。thinking はそのまま返せ。
  3. computer_20251124 を探せ。Claude API と Google Cloud では toolset へ移せ。Bedrock は待てる。
  4. 再生とキャッシュ。8 月 31 日以降のアカウントでは、履歴の tools / system を直すな。Schema の変更は追記メッセージで。compaction(compact-2026-09-04)は thinking を有効なまま要約ブロックへ差し替えられる。条件は Anthropic の Compaction ページを見よ。

ローカル JSON ツールで Schema を見る

モデルを claude-opus-5-5 にする前に、ブラウザで三つのテキストを広げよ:古い input_schema、tool_choice で強制していた arguments 一通、strict にする予定の Schema。

  • JSONバリデーター — 文法が合法か;Schema があれば必須と余分なキーを合わせて見る。
  • JSONフォーマッター — 一行に潰したツール定義を展開し、additionalProperties が書いてあるかを見る。
  • JSON Diff — 「強制呼び出し時のサンプル」と「strict Schema が許す最小オブジェクト」を比べる。

データはブラウザを出ない。契約が安定してから、モデル文字列を変えよ。5.5 は effort を変え、より考え、旧 tool_choice を拒む。フィールド名と required は一緒に緩めてはならない。

FAQ

model を claude-opus-5-5 に変えるだけで出せるか?

既定としてはできない。リクエストになお thinking.disabled、budget_tokens、tool_choice の any/tool、または Claude API 上の computer_20251124 があれば 400 になる。

強制ツールなしで、どうやって JSON を保証するか?

tool_choice は auto、ツールに strict を開き、required を埋め、additionalProperties を false にする。最終返答は Structured Output。チャット本文を JSON.parse するな。

thinking が切れないなら、請求は必ず高くなるか?

必ずしも。価目は下がり、キャッシュ読みは安く、公式は典型負荷でおよそ 40% 安いと言う。既定 effort は medium。深さは effort で取引せよ。disabled で請求を取引するな。

Fable 5.1 も同じ直しが要るか?

thinking 常時オン、強制ツール禁止、thinking ブロックの束縛は、Fable 5.1 ですでにそうである。computer_20251124 の破綻は、主に Claude API / Google Cloud 上の 5.5 に当たる。Bedrock は旧コンピュータツールをなお受け付ける。

進捗バーが急に消えたのはなぜか?

ツール間の短い注記が thinking ブロックへ移った。既定の display はテキストを省略する。ブロックは type で読め、進捗が要るなら thinking.display をセットせよ。Schema 検証の失敗ではない。

10 月 14 日の GPT-5.5 退役と同じことか?

違う。GPT-5.5 が去るのは ChatGPT / Work / Codex であり、その告知は API に触れない。Opus 5.5 は別ベンダーの新モデルと breaking change である。二本の線は分けて移せ。

まとめ

Opus 5.5 は「ツール呼び出しの強制」を合法な杖から 400 に変えた。価目表と典型 40% 節約は、四处のハード失敗を覆わない。安定した JSON が要るなら、auto に strict と JSON Schema、または Structured Output。thinking は常時オン、ブロックは会話に束縛され、旧コンピュータツールは一部プラットフォームで死ぬ——これは文字列を変える前のチェックリストであり、本番後の観察ではない。

先にローカル検証で Schema、サンプル arguments、strict 契約を平らに見てから、claude-opus-5-5 へ切り替えよ。モデルは替わる。effort は動く。フィールド契約は一緒に緩めてはならない。