Claudeモデルの移行ガイド — Opus 4.xからClaude 5世代へ、model IDとコスト影響
Opus 4.xからClaude Opus 5 / Sonnet 5へ移る手順。model IDの書き換え表、400が返る互換性の変更、トークナイザー増分がコストに乗る範囲、提供終了の期限と検証の進め方をまとめます。
Claudeモデルの移行は、どこから移るかで作業量が10倍変わります。Opus 4.8からOpus 5なら、model の文字列を差し替えて thinking 周りを1箇所直すだけ。Opus 4.6以前から上げるなら、400が返るパラメータを3種類外し、トークン数を測り直す作業が加わります。自分がどちらの経路にいるかを最初に確定させ、そこから必要な作業だけを拾う順序でまとめます。
移行の経路を先に確定させる
作業量を決めるのは移行先ではなく、移行元です。次の4問を上から当てると、読むべき節が決まります。
- いま
claude-opus-4-8かclaude-opus-4-7を使っているか → YESなら「Opus 5への移行」の節だけで足ります。トークナイザーもパラメータも同じです claude-opus-4-6以前(4.5 / 4.1 / 4.0 / Opus 3系)か → 「400が返る3つの変更」と「トークナイザーの増分」の両方が必要ですclaude-sonnet-4-6以前か → 移行先はSonnet 5。トークナイザーの増分が確実に乗りますclaude-3-7-sonnetなどの終了済みIDか → すでに404が返る状態です。まず動かすことが優先で、以降の最適化は後回しにできます
経路ごとの作業量を並べると次のようになります。
| 移行元 | 移行先 | 必要な作業 |
|---|---|---|
| Opus 4.8 / 4.7 | 移行先claude-opus-5 | 必要な作業ID差し替え + thinking既定の確認 |
| Opus 4.6 / 4.5 | 移行先claude-opus-5 | 必要な作業上記 + パラメータ3種の除去 + トークン再計測 |
| Opus 4.1 / 4.0 / Opus 3系 | 移行先claude-opus-5 | 必要な作業上記 + ツールバージョンとstop_reasonの追加対応 |
| Sonnet 4.6 / 4.5 | 移行先claude-sonnet-5 | 必要な作業パラメータ除去 + トークン再計測 |
| 終了済みID(404) | 移行先各系統の最新 | 必要な作業まずIDを通す。最適化は分けて進める |
3行目まではOpusクラスに留まる想定です。Fable 5へ上げる判断は単価が2倍になる別の話なので、Claude Fable 5の仕様解説とClaudeモデル比較(使い分けと組み合わせ)を先に読むほうが判断を誤りません。
model IDの書き換え対応表
移行先のIDは日付サフィックスを持ちません。旧世代のIDに付いていた -20250514 のような日付を新IDに足すと404になります。
| 移行元のID | 移行先のID |
|---|---|
claude-opus-4-8 / claude-opus-4-7 | 移行先のIDclaude-opus-5 |
claude-opus-4-6 / claude-opus-4-5 | 移行先のIDclaude-opus-5 |
claude-opus-4-1 / claude-opus-4-20250514 | 移行先のIDclaude-opus-5 |
claude-sonnet-4-6 / claude-sonnet-4-5 / claude-sonnet-4-20250514 | 移行先のIDclaude-sonnet-5 |
claude-3-5-haiku-20241022(終了済み) | 移行先のIDclaude-haiku-4-5 |
クラウド経由の場合、同じ移行先でも文字列の形が分かれます。
| 経由 | Opus 5のID |
|---|---|
| Claude API / Claude Platform on AWS | Opus 5のIDclaude-opus-5 |
| Amazon Bedrock | Opus 5のIDanthropic.claude-opus-5 |
| Google Cloud(Vertex AI) | Opus 5のIDclaude-opus-5 |
Bedrockだけが anthropic. を前置きします。BedrockのクライアントにプレフィックスなしのIDを渡すと400になり、逆にClaude APIにプレフィックス付きを渡しても通りません。同じリポジトリで両方を叩いている構成では、置換をかける前に呼び出し側のクライアントを見分ける必要があります。
提供終了の期限と、すでに終了したモデル
すでに提供が終了してリクエストが失敗するモデルと、これから期限が来るモデル(Opus 4.1)があります。
| モデル | 状態 | 期限 |
|---|---|---|
claude-opus-4-1(claude-opus-4-1-20250805) | 状態非推奨 | 期限2026年8月5日に提供終了 |
claude-sonnet-4-20250514 / claude-opus-4-20250514 | 状態終了済み | 期限2026年6月15日 |
claude-3-7-sonnet-20250219 | 状態終了済み | 期限2026年2月19日 |
claude-3-5-haiku-20241022 | 状態終了済み | 期限2026年2月19日 |
claude-3-opus-20240229 | 状態終了済み | 期限2026年1月5日 |
今すぐ差し替えが要るのは、終了済みのSonnet 4とOpus 4です。2026年6月15日に提供が終了しており、これらのIDへのリクエストは既に失敗します。コードに残っていれば、他の作業を待たず先に対応する対象です。
次に期限が来るのはOpus 4.1で、2026年8月5日を過ぎると404になり、リトライでは回復しません。Opus 4.1からOpus 5へは世代がいくつも飛ぶため、後述する破壊的変更をまとめて踏みます。期限まで日が短いなら、全機能の移行を一度にやらず、まず動く状態を作ってからeffortやプロンプトの調整を分けるほうが安全です。
400が返る3つの変更
Opus 4.7以降のモデルで削除され、送ると400が返るパラメータが3つあります。Opus 4.6以前から移行するなら、この3つは必ず外します。
budget_tokens による思考量の指定
thinking: {"type": "enabled", "budget_tokens": N} は受け付けられません。adaptive thinkingと effort の組み合わせに置き換えます。思考の深さをトークン数で切る発想そのものがなくなり、low / medium / high / xhigh / max の5段階で指定する方式になりました。
# 旧(400 が返る)
thinking = {"type": "enabled", "budget_tokens": 8000}
# 新
thinking = {"type": "adaptive"}
output_config = {"effort": "xhigh"}サンプリング系パラメータ
temperature / top_p / top_k はいずれも削除されました。決定性のために temperature=0 を置いていたなら、effort を下げてプロンプトを絞る形に寄せます。もともと temperature=0 が同一出力を保証していたわけではないので、実質的に失うものは多くありません。逆に生成の揺らぎを作るために使っていた場合は、プロンプト側で「複数案を出させてから選ばせる」構成に組み替えることになります。
アシスタントターンのプレフィル
messages の末尾を role: "assistant" で埋めて出力の書き出しを固定する手法は使えません。JSON形式を強制していたなら output_config.format の構造化出力へ、前置きを消す目的だったならシステムプロンプトの指示へ移します。会話の途中に少数事例としてアシスタントメッセージを置く用法は、これまでどおり動きます。
このほか thinking.display の既定値が "omitted" になっている点も、Opus 4.6以前からの移行では効きます。思考の要約をUIに出していた場合、そのままだと空文字が流れてきます。{"type": "adaptive", "display": "summarized"} を明示すると要約が返ります。
Opus 5への移行で唯一気をつける点
Opus 4.8やOpus 4.7からOpus 5へ上げる場合、上の3つはすでに対応済みのはずです。残るのは1点だけ。
thinking を省略したリクエストの挙動が変わりました。Opus 4.8では思考なしで走っていたものが、Opus 5ではadaptive thinkingで走ります。max_tokens は思考と応答テキストの合計に掛かる上限なので、思考ゼロを前提に上限を詰めていた経路は応答が途中で切れます。
もう1つ、thinking: {"type": "disabled"} が使えるのはeffortがhigh以下のときだけです。xhighやmaxと組み合わせると400が返り、しかも検証はリクエストごとに走ります。会話の途中でeffortを上げると、それまで通っていた同じ会話が弾かれます。詳しい挙動と回避策はClaude Opus 5の使い方と仕様にまとめてあります。
Claude Codeを使っている場合は、v2.1.219以降で /model のOpusがOpus 5に切り替わっています。設定を変えていなければ更新するだけで移行が終わる形です。含まれる変更はv2.1.219のリリースノートを参照してください。
トークナイザーの増分は「どの経路か」で有無が変わる
移行のコスト試算でいちばん誤解されやすいのがここです。新世代のトークナイザーは同じテキストをより多くのトークンに割りますが、増分が発生するのは古い世代から新しい世代へ跨いだときだけです。
| 移行元 | 移行先 | 同じテキストのトークン数 |
|---|---|---|
| Opus 4.7 / 4.8 | 移行先Opus 5 | 同じテキストのトークン数ほぼ変わらない(同じトークナイザー) |
| Opus 4.6以前 | 移行先Opus 5 | 同じテキストのトークン数およそ1.0〜1.35倍に増える |
| Sonnet 4.6 | 移行先Sonnet 5 | 同じテキストのトークン数およそ30%増える |
| Haiku / Sonnet 4.5以前 | 移行先Sonnet 5 | 同じテキストのトークン数増える(幅は素材で変動) |
新しいトークナイザーはOpus 4.7で導入され、Opus 4.8 / Opus 5 / Sonnet 5 / Fable 5が同じ系列を共有しています。だからOpus 4.8からOpus 5への移行では、トークン数の再計測はほぼ不要です。単価も$5 / $25で据え置きなので、実請求はプロンプトの内容が同じならほぼ横ばいになります。
一方、Opus 4.6やSonnet 4.6から上げる構成では、単価が同じでも実請求が上がります。増分は素材の性質で動き、日本語や記号の多いコードでは英文より振れ幅が大きくなります。ここに一律の倍率を当てるのは危険です。
倍率を推測せず、実測します。count_tokens は同じ本文を旧モデルと新モデルでそれぞれ1回ずつ叩くだけなので、代表的なプロンプトを数本流せば自分のワークロードでの増分が出ます。
def count(model, text):
return client.messages.count_tokens(
model=model,
messages=[{"role": "user", "content": text}],
).input_tokens
before = count("claude-opus-4-6", sample)
after = count("claude-opus-5", sample)
print(after / before)トークン数が増えると、影響は請求書だけに留まりません。1Mのコンテキストウィンドウに入る実テキスト量が減り、max_tokens の上限に当たるタイミングが早まり、圧縮を発火させる閾値の意味も変わります。旧モデル基準で詰めた数値は、移行後にひととおり見直す対象です。
コスト影響の全体像
トークナイザー以外にも、実請求を動かす要因が3つあります。
単価は据え置きです。Opus 4.8とOpus 5はどちらも入力$5 / 出力$25(100万トークンあたり)です。Sonnet 5は標準価格が$3 / $15で、2026年8月31日までは導入価格の$2 / $10が適用されます。9月1日以降は標準価格へ移るため、Sonnet 4.6から移行するチームは9月をまたぐ試算をしておく価値があります。
思考が既定でオンになる分、出力トークンが増えます。Opus 4.8で thinking を明示していなかった経路では、Opus 5に上げた時点で思考のトークンが乗ります。単価が同じでも量が増えるので、実請求は上がる方向です。effortを一段下げると、この増分は縮みます。
プロンプトキャッシュの最小長が下がります。Opus 4.8では1024トークン未満のプレフィックスはキャッシュに乗りませんでしたが、Opus 5では512トークンから乗ります。短いシステムプロンプトを使っている構成では、コードを変えずにキャッシュ読み取り(入力単価の10分の1)の対象が広がります。移行後に cache_read_input_tokens がゼロのままでないかを確認しておくと、取りこぼしを拾えます。
レート上限の扱いも押さえておきます。Opus 5はOpus 4.x系の合算プールとは別枠です。旧プールで余裕があったからといってOpus 5でも同じ余裕があるとは限らず、逆にトラフィックを移しても旧プールの空きが増えるわけではありません。
小さく試す — 5ステップの検証手順
一括で切り替えず、次の順で確認すると事故が減ります。
ステップ1: スコープを決める
どのファイルとどのルートを移すかを先に確定させます。前述のとおり、定義側(レジストリ・料金テーブル・機能ゲート)は呼び出し側と扱いが違います。
ステップ2: 1リクエストだけ通す
IDを差し替え、レスポンスの model が期待どおりかを確認します。
response = client.messages.create(
model="claude-opus-5",
max_tokens=64,
messages=[{"role": "user", "content": "ping"}],
)
assert response.model.startswith("claude-opus-5"), response.modelステップ3: stop_reason の分岐を足す
Opus 5とFable 5は安全分類器の判断でHTTP 200のまま stop_reason: "refusal" を返します。content[0] を無条件に読むコードは、ここで壊れます。分岐を入れたうえで、拒否を実際に回復させたいならサーバー側のフォールバックを有効にします。
ステップ4: トークンとコストを測り直す
count_tokens で増分を確認し、max_tokens と圧縮の閾値を調整します。移行元がOpus 4.7 / 4.8ならこのステップは省けます。
ステップ5: effortを掃く
前世代向けに固めたeffortをそのまま使わず、medium / high / xhighを自分の評価セットで比べます。Opus 5は低いeffortでも品質が落ちにくいので、下げる方向に余地がある場合があります。
APIの実装全体を組み直す場合は、Anthropic API完全ガイド2026に認証やストリーミングを含めた設計をまとめてあります。
よくあるつまずき
旧IDの機械置換で、まだ使われているモデルを登録から消してしまうのが、いちばん被害の大きいパターンです。旧モデルは提供が続いているので、レジストリや料金テーブルからは消さず、新モデルの行を足します。
能力判定のゲートの書き換えにも同じ罠があります。if "opus-4-8" in model_id: のような判定を新IDに置き換えると、まだ流れている旧モデルのリクエストがその機能を失います。ここも置換ではなく追加です。
テストのシードデータの更新忘れも典型です。モデル名だけ差し替えても、課金ティアやモデル認可のシードリストを参照するテストは定義側に新モデルの行がないと実行時に落ちます。テストをスキップするのではなく、シードに行を足します。
新IDへの日付サフィックスの付与も動きません。claude-opus-5-20260724 のようなIDは存在しません。日付なしのIDですが挙動が固定されたスナップショットなので、そのまま使ってバージョンは固定されます。
temperature=0 の削除を「品質が落ちる変更」と受け取る必要もありません。サンプリングパラメータは削除されたので選択の余地がありません。決定性が欲しい場面では、effortを下げてプロンプトの指示を具体化するほうが再現性は上がります。
よくある質問
Opus 4.8からOpus 5へ移るとコストは上がりますか
単価は入力$5 / 出力$25で据え置き、トークナイザーも同じなので入力側は変わりません。ただし thinking を明示していなかった経路では思考が既定でオンになり、出力トークンが増えます。effortを一段下げれば、この増分は相殺できる範囲に収まることが多くなります。
トークナイザーの増分はどのくらい見ておけばよいですか
Opus 4.7 / 4.8からの移行なら増分はありません。Opus 4.6以前からならおよそ1.0〜1.35倍、Sonnet 4.6からSonnet 5ならおよそ30%増が目安です。素材で振れるため、count_tokens を旧新それぞれで叩いて自分のプロンプトで測るのが確実です。
Opus 4.1はいつまで使えますか
2026年8月5日で提供が終了します。以降は404が返ります。移行先は claude-opus-5 で、世代を跨ぐため budget_tokens とサンプリングパラメータの除去、プレフィルの置き換えが必要です。
Sonnet 4とOpus 4はまだ使えますか
使えません。どちらも2026年6月15日に提供が終了しており、リクエストは失敗します。コードに残っている場合は最優先で差し替える対象です。
プロンプトキャッシュは移行後も効きますか
キャッシュはモデル単位なので、IDを差し替えた最初のリクエストは書き込みになります。2回目以降は通常どおり読み取りに乗ります。Opus 5では最小長が512トークンへ下がっているため、これまで対象外だった短いプレフィックスがキャッシュに入る場合もあります。
Bedrock経由でも同じ手順で移行できますか
破壊的変更の中身は同じですが、IDに anthropic. が前置きされる点と、fast modeやBatch APIといった一部機能が使えない点が異なります。それらの機能に依存した実装は、Claude API側へ寄せるか設計を変える判断が要ります。
まとめ
Claudeモデルの移行で最初に決めるのは、移行元がOpus 4.7以降かどうかです。4.7以降なら model の差し替えと thinking 既定の確認で終わり、単価もトークン数も動きません。4.6以前なら、budget_tokens とサンプリングパラメータとプレフィルを外し、count_tokens でトークンの増分を測り直す作業が加わります。
期限があるのはOpus 4.1の2026年8月5日だけです。ほかは急ぐ必要がないぶん、一括置換で定義側まで壊す事故のほうがリスクとして大きくなります。呼び出し側は差し替え、定義側は追加する。この切り分けを守れば、移行そのものは小さな作業に収まります。移行先のスペックや料金、Claude CodeやAPIでの使い方はClaude Opus 5の使い方と仕様にまとめてあります。