メインコンテンツにスキップ
株式会社ゼットリンカー - Next.js システム開発専門
AI開発

Claude Sonnet 5.5移行|Next.jsで踏む5つの400エラーとSonnet 4.5提供終了への備え

Conclusion

Sonnet 5.5移行は5つの400エラーを検索で洗い出し、画面の無言化とeffort差を検証する。Sonnet 4.5は11/30終了で確認項目が増える。

Claude Sonnet 5.5(2026年9月28日公開)へNext.jsアプリを移す実装手順です。Sonnet 5のコードが400になる5つの変更、エラーなしでストリーミング画面が黙る変更、effortの再調整、拒否レスポンスの扱いに加え、11月30日に提供終了するSonnet 4.5からの移行で追加になる確認項目を整理します。

自然光の入るオフィスで、モニターとノートPCに表示したコードを確認する開発者の写真
•12分で読めます
Next.jsNext.jsClaude Sonnet 5.5保守AI駆動開発運用設計

2026年9月28日に公開されたClaude Sonnet 5.5は、単価こそSonnet 5と同じ入力2ドル/出力10ドル(100万トークンあたり)ですが、Sonnet 5で動いていたコードが400エラーになる変更を5つ含んでいます。 エラーを出さずにストリーミング画面が黙る変更もあります。

期限もあります。Claude Sonnet 4.5(claude-sonnet-4-5-20250929)は2026年11月30日に提供終了し、公式の推奨後継が claude-sonnet-5-5 です。

本記事は稼働中のNext.jsアプリを移すときの実装面の手順です。料金やOpus 5.5との選び方は経営者向けの解説記事(zetlinker.com)にまとめています。

先に結論です(2026年10月6日時点の公式ドキュメントで確認)。

  • Sonnet 5からは、thinkingの無効化・tool_choice・履歴の編集・computer use・advisorの5点を検索で洗い出す
  • 画面が黙るのは、ツール呼び出し間の文章が thinking ブロックに移ったため
  • Sonnet 4.5から移る場合は、prefill・temperature・budget_tokens も400になり、トークン数は約30%増える

本記事のコードは実装例で、お客様の案件の事例ではありません。自社のRoute HandlerやServer Actionに置き換えて確認してください。

Sonnet 5.5で何が変わったのか

エンドポイントとトークナイザーはSonnet 5と同じです。 変わるのはthinkingとツール指定の前提です。

2026年10月時点の仕様(出典:モデル一覧・移行ガイド)

項目Sonnet 5Sonnet 5.5
モデルIDclaude-sonnet-5claude-sonnet-5-5(日付なし)
料金(入力/出力)$2 / $10$2 / $10(同額)
事前の推論をやめる指定{ type: "disabled" }{ type: "between_tools" }
tool_choice の any / tool使える400エラー
computer use(Claude API)computer_20251124computer_toolset_20260801
ツール呼び出し間の文章text ブロック主に thinking ブロック

コンテキストは100万トークン、最大出力は12.8万トークンです。Bedrockでは anthropic.claude-sonnet-5-5 を指定します。モデルIDは環境変数へ逃がし、検証環境から先に切り替えると、戻すときも環境変数の変更で済みます。

移行前に洗い出す5つの破壊的変更

以下の5点に該当しなければ、Sonnet 5からはモデルIDの差し替えで動きます。

① thinking: { type: "disabled" } が400になる

検索するもの:thinking:

Sonnet 5で推論を切っていた disabled は400 invalid_request_error になります。代わりに between_tools を送ります。

// NG:Sonnet 5.5では400
thinking: { type: "disabled" },

// OK:回答前の推論をしない、いちばん軽い設定
thinking: { type: "between_tools" },
output_config: { effort: "medium" }, // low / medium / high のみ

between_tools は、effortが xhigh・max のとき、display などを同時に送ったとき、会話の途中でeffortを変えたときにも400になります。先頭が thinking ブロックになることもあるため、content[0].text の決め打ちは type で絞り込みます。

② tool_choice の強制指定が400になる

検索するもの:tool_choice

{ type: "any" } と { type: "tool", name: "..." } は、トークンカウントAPIを含めて400になります。ツール強制で抽出していた実装は、auto + strict: true + プロンプトでの指示に置き換えます。

await client.messages.create({
  model: MODEL,
  max_tokens: 4096,
  // strict では input_schema のすべての object に additionalProperties: false が必要
  tools: [{ ...recordInquiryTool, strict: true }],
  tool_choice: { type: "auto" },
  messages: [{ role: "user", content: `record_inquiry ツールで記録してください。\n\n${body}` }],
});

auto ではツールを呼ばないこともあるため、呼ぶ条件をプロンプトに書きます。Amazon BedrockではSonnet 5.5の構造化出力(strict を含む)が使えません。 Bedrock経由なら strict を外し、ツール入力をZodなどで検証します。

③ thinkingブロックがモデルと会話に結びつく

検索するもの:履歴を加工している箇所・リトライでモデルを切り替える箇所

Sonnet 5.5はOpus 5・Opus 5.5・Fable・Mythos系のthinkingブロックを読めず、APIが黙って落とします(200で返り、課金なし)。

問題は履歴の編集です。2026年8月31日00:00 UTC以降に作成されたアカウントでは、thinkingブロックより前のsystem・tools・過去メッセージを書き換えて送り直すと400になります。対策は会話を追記のみ(append-only)にし、指示の変更は会話途中のシステムメッセージで行うことです。ベータヘッダ thinking-binding-controls-2026-08-01 + block_binding の "drop_block" 指定でブロックを落として続ける方法もあります。

④ computer_20251124 が使えない

検索するもの:computer_20251124

Claude APIとGoogle Cloudでは tools: [{ type: "computer_toolset_20260801" }] へ移行します。fine-grained-tool-streaming-2025-05-14 ヘッダはツールセットと併用すると400になるため外します。Amazon Bedrockでは computer_20251124 を引き続き使えます。ループ側は公式の移行手順で確認します。

⑤ advisorツールで組める相手が減った

検索するもの:advisor

advisorツール(ベータ)でOpus 4.8・Opus 4.7・Sonnet 5をadvisorに指定すると400になります。助言は advisor_redacted_result ブロックとして暗号化されて返ります。

この判断から次に進む

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

エラーなしで画面が黙る:ツール呼び出し間の文章

移行でいちばん気づきにくいのがこの変更です。 Sonnet 5.5では、ツール呼び出しの合間に書く1〜2文より長い文章が、進捗用の thinking ブロックで返ります。既定の display は "omitted" で中身は空です。text_delta だけを流しているチャットUIは、リクエストが成功しているのに途中経過が出なくなります。

直し方は3通りです。

  • display: "updates"(ベータヘッダ thinking-display-updates-2026-08-18):進捗だけが返る
  • display: "summarized":進捗と推論の要約が返る
  • between_tools にする:display なしで文章が返る

Route Handlerで進捗を別の種類として流す実装例です。

// app/api/agent/route.ts(認可チェックと入力検証は省略)
const stream = client.messages.stream({
  model: MODEL,
  max_tokens: 16000,
  thinking: { type: "adaptive", display: "summarized" },
  output_config: { effort: "medium" },
  tools,
  messages,
});

for await (const event of stream) {
  if (event.type !== "content_block_delta") continue;
  if (event.delta.type === "text_delta") send("text", event.delta.text);
  if (event.delta.type === "thinking_delta") send("progress", event.delta.thinking);
}

ツールループで履歴を返すときは、空のものも含めてthinkingブロックを変えずに送り返します。

effortの再調整:API既定はhigh、Claude Codeはmedium

同じeffortの値でも、Sonnet 5とSonnet 5.5では推論量が違います。 5段階(low〜max)の水準が再調整され、Claude APIでの既定は high です。公式は、通常の処理を high、仕様が明確なエージェント処理を medium、チャットを medium か low から始めるよう案内しています。

混同しやすいのが、Claude CodeでのSonnet 5.5の既定effortは medium という点です(Claude Codeのモデル設定)。Claude Codeでの感触とAPIの結果が違うときは、まずeffortの差を疑います。

既定値と同じでも output_config.effort は明示しておきます。Anthropicが発表した「1タスクあたり最大30%安い」は自社計測で、単価は据え置きです。請求額は自社のリクエストで切り替え前後を比べます。

拒否は200で返る:stop_detailsの扱い

Sonnet 5.5は断るカテゴリが増えました。断った場合もHTTP 200で、stop_reason: "refusal" と stop_details が返ります。例外処理だけでは空の回答が画面に出ます。

if (message.stop_reason === "refusal") {
  // category: cyber / bio / frontier_llm / reasoning_extraction / general_harms / null
  console.warn("claude refusal", message.stop_details?.category, message.id);
  // explanation は文言が固定されないため、表示に使い分岐には使わない
  return Response.json({ error: "refused" }, { status: 422 });
}

ストリーミング途中の拒否では、それまでの出力を破棄します。サーバー側フォールバック(fallbacks: "default"、ベータヘッダ server-side-fallback-2026-07-01、Claude APIのみ)では、cyber と frontier_llm の拒否がSonnet 5で再試行されます。

reasoning_extraction は、「<thinking> 欄に考えを書いて」「JSONに reasoning を入れて」という指示がプロンプトやツール定義に残っていると起きることがあります。推論が必要ならthinkingブロックから読みます。

Sonnet 4.5からの移行は11月30日が期限

claude-sonnet-4-5-20250929 は2026年11月30日に提供終了します。 Sonnet 4.5から直接移る場合は、前章までに加えて次の差分が該当します。

2026年10月時点の差分(出典:移行ガイド・廃止予定一覧)

項目Sonnet 4.5Sonnet 5.5直し方
thinking 省略時推論なし推論ありmax_tokens を推論込みで見直す
budget_tokens使える400エラーoutput_config.effort に置き換える
assistantのprefill使える400エラー構造化出力かsystemの指示に置き換える
temperature 等の既定以外の値使える400エラー削除する
同じ文章のトークン数基準約30%多いトークンカウントAPIで数え直す
画像の上限1568px・1,568トークン2576px・4,784トークン画像の予算を置き直す

2000×1500の画像は約2.5倍のトークンになります。prefillでJSONを返させていた実装は、次のように置き換えます。

// NG:Sonnet 5.5では400(最後がassistantのprefill)
messages: [{ role: "user", content: prompt }, { role: "assistant", content: "{" }],

// OK:構造化出力でJSONを受け取る
output_config: { effort: "medium", format: { type: "json_schema", schema: inquirySchema } },
messages: [{ role: "user", content: prompt }],

Bedrock経由では構造化出力が使えないため、形式はプロンプトで指示してコード側で検証します。

Claude Codeで移行作業を進める

公式移行ガイドは、Claude Codeで次のコマンドを実行する方法を案内しています。

/claude-api migrate this project to claude-sonnet-5-5

同梱のClaude APIスキルが、モデルIDの差し替え、破壊的なパラメータの修正、prefillの置き換え、effortの調整を行い、手で確認する項目のチェックリストを出します。作業後は本記事の検索項目を自分でも確かめ、検証環境で実リクエストを流してから本番を切り替えます。

まとめ

  • 400にならない変更が2つある。 文章の移動とeffortの再調整は、画面と請求額を切り替え前後で比べて確認する
  • Sonnet 4.5は11月30日に提供終了。 Sonnet 5からの5点に加え、prefillなど3点の置き換えとトークンの見積もり直しが要る

Opus 5.5へ移る場合の手順はClaude Opus 5.5への移行手順、モデル更新を保守契約でどう扱うかはNext.js保守運用の費用と契約にまとめています。

私たちは、Next.js構成でのClaude API組み込みを、PoC実装から本番移行までお手伝いしています。「Sonnet 4.5の提供終了までに移行を終えたい」という段階でも、15分のカジュアルな相談を受け付けています(営業はしません)。

※本記事のモデルの仕様・料金・提供条件は、2026年10月6日時点の公開情報(Anthropic公式発表・Sonnet 5.5の新機能・移行ガイド)に基づく整理です。導入の判断にあたっては必ず公式情報で最新の内容をご確認ください。本記事はNext.js 16.x時点の情報です。

よくある質問

Sonnet 5のコードはモデルIDを変えるだけで動きますか?

thinking: { type: "disabled" }、tool_choice の any / tool 指定、会話履歴の編集、computer_20251124、advisorツールの一部の組み合わせのいずれかを使っていなければ、モデルIDの差し替えで動きます。該当する場合は400エラーになるため、検証環境で先に確認してください。

Sonnet 5.5で推論をオフにするにはどうしますか?

thinking: { type: "between_tools" } を送ります。Sonnet 5で使っていた { type: "disabled" } は400エラーです。between_tools は effort が low / medium / high のときだけ使え、display や budget_tokens を同時に送ると400になります。

切り替えたらツール実行中の進捗表示が消えました。

ツール呼び出しの合間に書かれる1〜2文より長い文章が、text ではなく thinking ブロックで返るようになったためです。既定の display は omitted で中身が空になります。adaptive thinking で display を updates(ベータヘッダ thinking-display-updates-2026-08-18)か summarized にするか、between_tools を使ってください。

Sonnet 4.5はいつまで使えますか?

claude-sonnet-4-5-20250929 は2026年11月30日に提供終了し、公式の推奨後継は claude-sonnet-5-5 です。Sonnet 4.5から移る場合は、assistantのprefill、temperature などの既定以外の値、thinking の budget_tokens がいずれも400になるため、置き換えが必要です。同じ文章でもトークン数が約30%増える点も見積もりに入れてください。

料金はSonnet 5から変わりましたか?

2026年10月時点で、100万トークンあたり入力2ドル・出力10ドルとSonnet 5と同額です。Anthropicは1タスクあたりの消費が減る作業が多いと発表していますが、これは同社の計測によるものです。effortの水準も再調整されているため、請求額は自社のリクエストで切り替え前後を比べて確認してください。

技術仕様・対象バージョンは本文と参照先をご確認ください。

最終更新:2026年10月6日

Share this article

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

先に整理したい方はシステム引き継ぎの初動・調査シート・AI相談プロンプトをご利用ください。未確認の項目は空欄のままご相談いただけます。

次に読む記事

ALL ARTICLES →

プライバシーポリシー

株式会社ゼットリンカー(以下、「当社」といいます。)は、お客様の個人情報の重要性を認識し、 その保護の徹底を図るため、以下のプライバシーポリシー(以下、「本ポリシー」といいます。)を定めます。

1. 個人情報の定義

本ポリシーにおいて「個人情報」とは、生存する個人に関する情報であって、 当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの、 及び他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを指します。

2. 個人情報の収集

当社は、お客様が当社のサービスをご利用になる際、お客様の個人情報を収集することがあります。収集する個人情報は以下の通りです:

  • 氏名
  • メールアドレス
  • 電話番号
  • 会社名・組織名
  • 住所
  • その他当社が定める入力フォームにお客様が入力する情報

3. 個人情報の利用目的

当社は、お客様からご提供いただいた個人情報を、以下の目的で利用します:

  • お客様への連絡やサービスの提供
  • お客様からのお問い合わせへの対応
  • 当社サービスの改善や新サービスの開発
  • メールマガジンの配信(お客様の同意がある場合)
  • 契約や法令等に基づく権利の行使や義務の履行
  • その他、上記利用目的に付随する目的

4. 個人情報の第三者提供

当社は、以下の場合を除き、お客様の同意なく個人情報を第三者に提供することはありません:

  • 法令に基づく場合
  • 人の生命、身体または財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
  • 公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合
  • 国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合

5. 個人情報の管理

当社は、お客様の個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス、 個人情報の紛失、破損、改ざん及び漏洩などを防止するため、 セキュリティシステムの維持・管理体制の整備等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行います。

6. 個人情報の開示・訂正・削除

お客様は、当社に対してご自身の個人情報の開示を求めることができます。 また、開示の結果、個人情報の内容が事実でないことが判明した場合には、 速やかに訂正または削除に応じます。

7. 導入事例の公開について

当社は、お客様から依頼いただいたプロジェクトを導入事例として記事にさせていただく場合があります。導入事例として公開する場合は、以下の点に配慮いたします:

  • 機密情報や個人情報は公開いたしません
  • 社名を公開する場合は、公開内容について事前にお客様に確認いただきます
  • 社名を非公開とする場合でも、お客様のご要望に応じて公開内容を確認いただくことが可能です

8. Cookie(クッキー)の使用について

当社のウェブサイトでは、お客様により良いサービスを提供するため、Cookie を使用することがあります。 Cookie により個人を識別できる情報を収集することはありません。 お客様はブラウザの設定により Cookie の受信を拒否することができます。

9. SSL(Secure Socket Layer)について

当社のウェブサイトはSSLに対応しており、ウェブブラウザとウェブサーバーとの通信を暗号化しています。 お客様が入力する個人情報は自動的に暗号化されて送受信されるため、 万が一、第三者が傍受した場合でも内容を解読することは困難です。

10. プライバシーポリシーの変更

当社は、必要に応じて、本ポリシーの内容を変更することがあります。 変更後のプライバシーポリシーについては、当社ウェブサイトに掲載したときから効力を生じるものとします。

11. お問い合わせ

本ポリシーに関するお問い合わせは、以下の窓口までお願いいたします。

株式会社ゼットリンカー

〒160-0023

東京都新宿区西新宿3丁目3番13号西新宿水間ビル2F

代表取締役: 金原隆利

お問い合わせ先: info@zetlinker.com

制定日:2024年1月1日

最終改訂日:2026/10/8

利用規約

この利用規約(以下、「本規約」といいます。)は、株式会社ゼットリンカー(以下、「当社」といいます。)が 提供するウェブサイトおよびサービス(以下、「本サービス」といいます。)の利用条件を定めるものです。 お客様は、本規約に同意した上で、本サービスをご利用ください。

第1条(適用)

1. 本規約は、お客様と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。

2. 当社は本サービスに関し、本規約のほか、ご利用にあたってのルール等、各種の定め(以下、「個別規定」といいます。)を することがあります。これら個別規定はその名称のいかんに関わらず、本規約の一部を構成するものとします。

3. 本規約の規定と個別規定の規定が異なる場合は、個別規定において特段の定めなき限り、個別規定の規定が優先されるものとします。

第2条(定義)

本規約において使用する以下の用語は、各々以下に定める意味を有するものとします。

  • 「利用契約」とは、本規約を契約条件として当社とお客様との間で締結される、本サービスの利用契約
  • 「知的財産権」とは、著作権、特許権、実用新案権、意匠権、商標権その他の知的財産権(それらの権利を取得し、またはそれらの権利につき登録等を出願する権利を含みます。)
  • 「投稿データ」とは、お客様が本サービスを利用して投稿その他送信するコンテンツ(文章、画像、動画その他のデータを含みますがこれらに限りません。)

第3条(本サービスの提供)

1. お客様は、本規約に同意の上、当社の定める方法によって利用登録を申請し、当社がこれを承認することによって、本サービスを利用することができるようになります。

2. 当社は、お客様に以下のいずれかの事由があると判断した場合、利用登録の申請を承認しないことがあり、その理由については一切の開示義務を負わないものとします。

  • 利用登録の申請に際して虚偽の事項を届け出た場合
  • 本規約に違反したことがある者からの申請である場合
  • その他、当社が利用登録を相当でないと判断した場合

第4条(ユーザーIDおよびパスワードの管理)

1. お客様は、自己の責任において、本サービスのユーザーIDおよびパスワードを適切に管理するものとします。

2. お客様は、いかなる場合にも、ユーザーIDおよびパスワードを第三者に譲渡または貸与し、もしくは第三者と共用することはできません。

3. 当社は、ユーザーIDとパスワードの組み合わせが登録情報と一致してログインされた場合には、そのユーザーIDを登録しているお客様自身による利用とみなします。

第5条(禁止事項)

お客様は、本サービスの利用にあたり、以下の行為をしてはなりません。

  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 本サービスの内容等、本サービスに含まれる著作権、商標権ほか知的財産権を侵害する行為
  • 当社、ほかのお客様、またはその他第三者のサーバーまたはネットワークの機能を破壊したり、妨害したりする行為
  • 本サービスによって得られた情報を商業的に利用する行為
  • 当社のサービスの運営を妨害するおそれのある行為
  • 不正アクセスをし、またはこれを試みる行為
  • 他のお客様に関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 本サービスの他のお客様またはその他の第三者に不利益、損害、不快感を与える行為
  • 他のお客様に成りすます行為
  • 当社が許諾しない本サービス上での宣伝、広告、勧誘、または営業行為
  • 面識のない異性との出会いを目的とした行為
  • 当社のサービスに関連して、反社会的勢力に対して直接または間接に利益を供与する行為
  • その他、当社が不適切と判断する行為

制定日:2024年1月1日

最終改訂日:2026/10/8