Claude Sonnet 5.5 のあと、料金表は動かないのに JSON 抽出が 400 になる理由:between_tools から JSON Schema へ

2026年9月29日時点:Sonnet 5.5(9月28日)は $2/$10 のまま。thinking.disabled は 400。代わりは between_tools。ツールなしの JSON 抽出は adaptive thinking と Structured Output が必要で、thinking オフではない。

結論から:Sonnet 5.5 は価目表の一行も動かさず、リクエスト契約を動かした。2026 年 9 月 28 日、Anthropic は Claude Sonnet 5.5(claude-sonnet-5-5)を出した。入出力は $2 / $10 のまま;キャッシュ読みは $0.20 のまま。公式は出力が 30% 以上速く、大半の仕事はおよそ 30% 安いと言う——その節約はタスクあたりの token であり、値札ではない。本番を壊すのは、Sonnet 5 からコピーした旧スイッチである:thinking: {"type": "disabled"} は 400 を返す;tool_choice の any と tool も 400;既定以外の temperature、top_p、top_k も 400。より静かな罠は JSON 抽出だ:ツールなしのリクエストでは、between_tools はモデルが先に考えないことを意味し、Structured Output でも歪む。Anthropic のプロンプトページは、そのケースを “Reasoning tasks with JSON output” に置いている。

本稿は 2026 年 9 月 29 日時点。その日なお有効なモデルページ、What's new、移行ガイドに拠る。本サイトにはすでに Opus 5.5 が tool_choice で JSON を強制できなくなった理由(9 月 24 日)がある。本稿はあの四处の失敗を書き直さない。答えるのは、Sonnet 5 → 5.5 の JSON パイプラインが、その上で何を変えねばならないかだけ。Haiku 5.5 はなお「今後数週間」。本稿はその日付を借りない。

9 月 28 日に出たもの

Claude Sonnet 5.5 は Claude 5.5 家族の第二弾。公式の位置づけは、速度と知性の中間;日常のコーディング、バグ修正、文書と表。ID は Claude API、Google Cloud、Microsoft Foundry、Claude Platform on AWS では claude-sonnet-5-5;Bedrock は anthropic.claude-sonnet-5-5。退役は 2027 年 9 月 28 日より早くない。tokenizer は Sonnet 5 と同じなので、同じテキストは同じ token 数になる。

百万 token あたりの価格:入力 $2、出力 $10、5 分キャッシュ書き $2.50、1 時間キャッシュ書き $4、キャッシュ読み $0.20。バッチは半額。コンテキストは 1M;同期の最大出力は 128K。Message Batches は output-300k-2026-03-24 で 300K まで出る。キャッシュ可能なプロンプトの下限は、Sonnet 5 の 1,024 token から 512 へ下がる。既定の effort は high——Opus 5.5 の既定は medium。effort を省略するとリクエストは high で走る。Sonnet 5 との無言の互換ではない。

発表は Sonnet 5.5 を、Opus 5.5 のより速くより安い補完として置く。本稿はランキングでモデルを選ばない。見るべきは、価目表は動かず、thinking、tool_choice、JSON 抽出の契約が動いたことだ。

五つのハード失敗、表一枚

ドキュメントは、5.5 で 400 になるリクエストをはっきり列挙している。最初の三条は Opus 5.5 と Fable 5.1 と根を共有する。最初の行の代替だけが違う:

旧リクエスト(Sonnet 5)5.5 では代わりに送るもの
thinking: {"type": "disabled"} または enabled に budget_tokens400 invalid_request_error、between_tools を指す前置の思考を切るなら {"type": "between_tools"};推論が要るなら thinking を省略するか adaptive を送る
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 は旧ツールをなお受け付ける
advisor を Opus 4.8 / 4.7 または Sonnet 5 にしたもの4005.5 が受け付ける advisor を使え(Opus 5.5、Fable / Mythos 5.1、または 5.5 自身を含む)

もう一箇所、リクエストは落とさないが静かになる:ツール呼び出しのあいだの長い注記は、thinking ブロックで来る。既定の display: "omitted" ではテキストは空。それらの文を進捗バーとして流していた UI は黙る。adaptive thinking で進捗が要るなら thinking.display をセットせよ(updates は beta ヘッダが要る)。between_tools は要約テキストを戻すが、この型は display を拒む。

サンプリングはもうつまみではない。既定以外の temperature、top_p、top_k は 400。以前は温度を下げて「JSON を安定」させていたリクエストは、いま Schema を安定させねばならない。

disabled は消えた;between_tools が下限

Sonnet 5 では thinking を disabled で切った。5.5 ではその行は 400 であり、メッセージは between_tools を指す。最低設定はこう見える:

{
  "model": "claude-sonnet-5-5",
  "thinking": { "type": "between_tools" },
  "output_config": { "effort": "high" }
}

between_tools に beta ヘッダは要らず、モデルを出すすべてのプラットフォームが受け付ける。切るのは前置の思考だけ。ツール呼び出しのあいだの長い進捗は、なお thinking ブロックで戻る。手を入れずにそのまま返せ;モデルが得るのは全文であり、要約ではない。ツールなしでは、応答はたいてい text だけ——旧 disabled の形。

制限は厳しい。受け付けるのは low / medium / high。xhigh または max を添えると 400。display、budget_tokens、block_binding を足しても 400。会話途中で output_config.effort を変えるのも 400——ターンごとの effort は adaptive thinking が要る。サーバ側 fallback が Sonnet 5 に落ちたとき、between_tools はそちらの disabled に訳される。

だから 5.5 は thinking を常時フルにはしない。外したのは旧 disabled スイッチだ。スイッチがなくなれば、思考を切りたい人は新しい型を送らねばならない。安定した JSON が要る人は、たいてい切るべきではない——次の節を見よ。

ツールなしの JSON 抽出では thinking を切るな

Anthropic のプロンプトページは、この件に独立した節を置いている:Sonnet 5.5 に、数ステップの計算が要る JSON 題(合計、規則、順位)を出すと、low / medium では先に考えずに答えることが多い。Structured Output があると、見える本文は JSON だけなので、計算は thinking の中でしか起きない。thinking を飛ばすと精度が落ちる。

公式の順は:

  1. できるなら Structured Output を使え。本文は Schema に合うオブジェクトになる。チャットの散文を JSON.parse するな。Structured Output とは何か を見よ。
  2. adaptive thinking を使え、between_tools ではない。ツールなしのリクエストでは、between_tools は先に考えないことを意味する。プロンプトに「答える前に考えよ」と書いても、そこでは効かない。「答え、それから JSON」を二回のリクエストに分けると、テストではスコアが良く、遅延と token が高すぎて既定にはできない。
  3. システムプロンプトの末尾に Think the problem through before you answer. を置け。high では精度が xhigh に近づき、出力 token の増分は小さい。low / medium でも上がるが、token はより食う。
  4. max_tokens に thinking の余地を残せ。Structured Output を low / medium にすると、モデルはたまに上限まで考える。stop_reason が max_tokens の応答は、本文が合法 JSON でも失敗として扱い、再試行せよ。

Structured Output がないと、モデルはしばしば散文で計算し、JSON を最後に置く。返信全体をパースすると失敗する。公式のフォールバック:text ブロックだけを読み、各 { または [ からパースを試し、最後の完全な値を残せ。最初の { から最後の } までの区間を取るな——途中に下書きが挟まることがある。JSON.parse が失敗する理由 を見よ。これはフォールバックであり、契約ではない。

強制ツールは 400、Opus 5.5 と同じ

5.5 家族は同じエラーを共有する:

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

代替はなお:tool_choice は auto のまま、ツールに strict: true を付け、パラメータを JSON Schema で固定する。最終返答は Structured Output へ置け。散文で答えずツールを呼んでほしいなら、いつそのツールが当てはまるかをプロンプトに書け。プロンプトは auto がどのツールを選ぶかに影響する。Schema の代わりにはならない。長い版は Opus 5.5 が tool_choice で JSON を強制できなくなった理由 と Tool Calling が JSON Schema に依存する理由 にある。

5.5 は許容を一つ足す:たまにツールを誤った大文字小文字で呼ぶか、パラメータ名が少し違う。致命傷にするな。一意に当たるなら受け、そうでなければ is_error: true を返し正確な名前を書け。Schema は厳しく保て。名前の照合は一段階緩めてよい。

価目表は動かない;既定 effort は high

表示価格は Sonnet 5 と同じ。公式の「およそ 30% 安い」はタスクあたりの token 減であり、メニューではない。独立した記事はすでに裏を見せている:タスクが出力を自分で制限しないと、新モデルのほうが高くなり得る。ルーティングを変える前に、同じ Schema で抽出を一通り回せ。

effort の段階は再較正されている。同じ high でも、考える量は Sonnet 5 と同じではない。公式は日常を high から;仕様のはっきりした Agent コーディングとツールループを medium から;チャットと遅延に敏感な仕事を medium または low から始める。トップレベルの effort を変えると prompt cache が壊れる。ターンごとの変更は、adaptive thinking 下の per-message effort(beta)が要る。between_tools は会話途中で effort を動かさない。

Opus 5.5 と既定値を混ぜるな:あちらは既定 medium;Sonnet 5.5 は既定 high。モデル文字列だけ替えると、請求も遅延も跳ねる。thinking ブロックも自由には渡らない。5.5 は Sonnet 5、Opus 4.8、Haiku 4.5、およびそれ以前のブロックを読める。Opus 5、Opus 5.5、Fable、Mythos は読まない。他のモデルも Sonnet 5.5 のブロックを読まない。会話を Opus 5.5 から Sonnet 5.5 へ移すと、API は推論を落とす。リクエストはなお 200;落ちたブロックは課金されない。

温度、キャッシュ、コンピュータツール、advisor

既定以外の temperature / top_p / top_k は 400。サンプリングで「JSON を締めていた」パイプラインは、いま Schema を締めねばならない。キャッシュの下限は 512 token なので、短いシステムプロンプトは当たりやすい。トップレベルの effort を変えると、そのキャッシュはなお無効になる。

Claude API と Google Cloud では、コンピュータツールは computer_toolset_20260801 だけを受け付ける。Bedrock はなお computer_20251124 を受け付ける。advisor(beta)は、5.5 の実行役に Opus 4.8 / 4.7 または Sonnet 5 を組ませない。5.5 が受け付ける advisor は、暗号化された advisor_redacted_result を返す;クライアントは助言本文を読めない。

会話の途中でツール Schema を変えるなら、inline-tools-2026-09-15 は会話途中の system メッセージに完全な定義を載せられる。トップレベルの tools 配列は直さない。これは prefix 束縛の thinking と同じ規則である:履歴は追記する。compaction(compact-2026-09-04)は thinking を有効なまま、署名付き要約ブロックへ差し替えられる。条件は Anthropic の Compaction ページを見よ。

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

  1. thinking を探せ。disabled と budget_tokens を消せ。前置の思考を切るなら between_tools を送れ、effort は high 以下。JSON の推論タスクは adaptive thinking を使え。
  2. tool_choice を探せ。any / 名指しの tool はすべて auto に替えよ。strict を開き、input_schema を締めよ。
  3. temperature / top_p / top_k を探せ。既定以外は消せ。JSON の安定は Schema で、サンプリングではない。
  4. effort を明示せよ。既定の high を継承するな。Opus 5.5 と経路を共有するなら、既定値は二つある。
  5. 再生とキャッシュ。8 月 31 日以降のアカウントでは、履歴の tools / system を直すな。Opus 5.5 から来るなら、thinking が落とされる前提で置け。

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

モデルを claude-sonnet-5-5 にする前に、ブラウザで三つのテキストを広げよ:古い input_schema、disabled または強制 tool_choice で取っていた arguments 一通、Structured Output に載せる予定の Schema。

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

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

FAQ

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

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

between_tools は新しい disabled か?

ツールなしのときだけ、そう見える。ツールがあると、進捗はなお thinking ブロックで来る。display / budget_tokens / 会話途中の effort 変更を拒み、xhigh や max とは組めない。JSON の推論タスクには使うな。

価目表が動かないなら、請求はなぜ動くか?

既定 effort は high であり、段階は再較正されている。公式の 30% 節約はタスクあたりの token であり、値札ではない。タスクが出力を制限しないと、独立した測定ではより高い請求が出ている。同じ Schema を自分で回せ。

9 月 22 日の Opus 5.5 と同じことか?

強制ツール、束縛された thinking ブロック、旧コンピュータツールは根を共有する。Sonnet 5.5 が足すのは disabled→between_tools、既定 effort high、温度の固定、advisor の組み合わせ、および「ツールなし JSON では thinking を切るな」。二本の線は分けて移せ。

Structured Output なしで、どうやって JSON を集めるか?

text ブロックだけを読み、最後の完全な JSON 値をパースせよ。返信全体をパースするな。stop_reason が max_tokens なら再試行せよ。これはフォールバックだ。できるなら Schema を置け。

Haiku 5.5 は出たか?

2026 年 9 月 29 日時点、公式はなお「今後数週間」。まだ出ていない段階に、この breaking change を先に割り当てるな。

まとめ

Sonnet 5.5 は価目表を押さえ、disabled を 400 に変えた。Sonnet 5 のリクエストをコピーすると、thinking、tool_choice、温度の三箇所でハード失敗する。前置の思考を切るなら between_tools を送れ。安定した JSON が要るなら、adaptive thinking に Structured Output、または auto に strict と JSON Schema。ツールなしの推論タスクで thinking を切ると、公式はすでに精度が落ちると測っている。

先にローカル検証で Schema、サンプル arguments、strict 契約を平らに見てから、claude-sonnet-5-5 へ切り替えよ。値札はそのままでよい。フィールド契約は一緒に緩めてはならない。