Claude Fable 5.1移行ガイド:3つの破壊的変更と実装チェックリスト
Claude Fable 5.1への移行は、基本的にはモデルIDの変更です。APIサーフェス、制限、トークン単価、トークナイザー、常時オンのアダプティブ思考、拒否処理はFable 5と一致します。ただし、Fable 5では発生しなかった3つの変更がエラーを返し、そのうち履歴編集チェックは、長期間動作していたエージェントハーネスを静かに劣化させる可能性があります。Opus 5からの移行では、さらに4項目が加わります。
このガイドは、Anthropicの移行ガイドとClaude Fable 5.1の新機能をもとに、発生順にエラー内容と修正方法をまとめたチェックリストです。スニペットはApidogに貼り付けて、実際のエンドポイントで検証できます。モデルの概要はClaude Fable 5.1とは何かから確認してください。
ステップ0:移行の必要性を確認する
Anthropicのドキュメントでは、Fable 5.1は次の用途に推奨されています。
- 高度な推論
- 長期間にわたるエージェント作業
- Claude Opus 5で高い努力レベルを使っても十分な結果が得られないケース
Opus 5で評価を通過できるなら、移行によってトークン単価が2倍になる一方、測定可能なメリットがない可能性があります。Fable 5からの移行では、キャッシュ読み取りが安価になり、性能指標の改善もあるため、料金は同じです。最終的には、ハーネス変更にかかるコストと得られる改善を比較してください。
移行前に、次の3点を確認します。
-
データ保持:Fable 5.1は30日間の保持期間が必要です。Anthropicから明示的な許可を得ない限り、ゼロデータ保持(ZDR)では利用できません。ZDR組織は、他の変更がなくてもすべてのリクエストで
400 invalid_request_errorを受け取ります。Opus 5はZDRで利用できます。 - 優先ティア:Fable 5.1は未対応です。Fable 5は対応しています。
- レート制限:Fable 5.1はFable 5と「Fable 5.x」プールを共有します。段階的に切り替えても、同じ利用枠から消費されます。
ステップ1:モデルIDを更新する
model = "claude-fable-5" # 変更前
model = "claude-opus-5" # または変更前
model = "claude-fable-5-1" # 変更後
プロバイダー別のモデルIDは次のとおりです。
- Amazon Bedrock:
anthropic.claude-fable-5-1 - Google Cloud、Microsoft Foundry、AWS上のClaude Platform:
claude-fable-5-1
Claude Managed Agentsを利用している場合、通常はこの変更だけで移行できます。
破壊的変更1:強制ツール呼び出しが400を返す
Fable 5では、tool_choiceにauto、none、any、toolを指定できました。Fable 5.1では、Messages API、Batches API、トークンカウントエンドポイントでanyとtoolが拒否されます。
tool_choice: type "tool" and "any" are not supported for this model.
思考が常に有効であり、強制呼び出しが思考をスキップさせるためです。Fable 5のコードは次のようになります。
response = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "tool", "name": "record_summary"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday."}],
)
Fable 5.1では、tool_choiceをautoに戻し、プロンプトでツール名を指定します。引数をスキーマに厳密に一致させる場合は、strict: true(厳格なツール使用)も設定します。
record_summary_tool["strict"] = True
record_summary_tool["input_schema"]["additionalProperties"] = False
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "auto"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)
移行方法は目的に応じて選びます。
- JSON取得が目的なら、
output_config.formatによる構造化出力に置き換える。 - 必ずツールを呼び出す必要があるなら、最新のユーザーターンの後にツール名を指定し、
role: "system"で呼び出し必須と指示する。その指示は履歴に残す。 - 「正確に1つのツール」を求める場合は、
autoとdisable_parallel_tool_use: trueを組み合わせる。ただし、現在の意味は最大1回の呼び出しです。 - ツールが見つからない場合の再試行ループは削除する。Fable 5.1は明示的なツール指示に従うよう設計されています。
- CMEK組織では、Fableモデルで
strict: trueと構造化出力を利用できないため、指示だけで制御する。
破壊的変更2:以前のモデルはFable 5.1の思考ブロックを読めない
思考ブロックには、それを生成したモデルの情報が記録されます。Fable 5.1は、Opus 5、Fable 5、Mythos 5、およびそれ以前のモデルが生成したブロックを読み取れます。そのため、これらのモデルからFable 5.1へ移行する会話では推論を保持できます。
一方、Mythos 5.1を除く他のモデルはFable 5.1の思考ブロックを読み取れません。ルータースイッチ、クライアント側の再試行、分類器拒否からのフォールバックなどでモデルが切り替わると、APIは読み取れないブロックを処理前に破棄します。
リクエスト自体は成功します。破棄されたトークンは課金されず、移行先モデルは思考なしで再計画します。ただし、切り替え直後のターンではコストとレイテンシーが増える可能性があります。
コードで思考ブロックを削除する必要はありません。 生成されたブロックはそのまま渡してください。手動で削除すると、署名エラーの400が発生する場合があります。
破棄されたブロックを可視化するには、次のベータヘッダーを送信します。
thinking-binding-controls-2026-08-01
レスポンスのinput_transformations配列には、reason: "model_binding_mismatch"とともに対象ブロックが記録されます。
破壊的変更3:過去ターンの編集で思考ブロックが無効になる
Fable 5.1の思考ブロックは、先行する正確なsystemプロンプト、tools配列、メッセージ履歴にバインドされます(思考の保持)。
これらを変更した後に思考ブロックを再生すると、チェックが有効なアカウントではリクエストが拒否されます。
messages.5.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block". That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.
適用対象
- 2026年8月31日以降に作成されたアカウントでは、チェックが強制されます。
- それ以前のアカウントでは、不一致を記録しますが、
thinking.block_binding.prefix_mismatch_behaviorを設定した場合にのみ動作します。 - Anthropicは、将来のモデルで全アカウントに強制すると説明しています。
- Claude Code、claude.ai、Managed Agents、Agent SDKはプレフィックスをそのまま保持します。
- Mythos 5.1では、このチェックは実行されません。
後続の思考ブロックを無効にする操作
- 過去ターンの編集、並べ替え、削除(古いツール結果の削除を含む)
- 次のリクエストで削除するテキストを挿入する
- リクエストごとに
systemまたはtoolsを再構築する - 後続ターンで異なるバイト列を返す画像URLを使用する
ブロックを有効に保てる操作
- 履歴への追加のみを行う
- 古い思考ブロックから順番に、先頭の連続したブロックを削除する
-
system、tools、messages以外のパラメータを変更する -
cache_controlマーカーを移動する - サーバー側の圧縮やコンテキスト編集を利用する
緊急時の回避策
ベータヘッダーを有効にし、prefix_mismatch_behaviorを"drop_block"に設定します。
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
thinking={"type": "adaptive", "block_binding": {"prefix_mismatch_behavior": "drop_block"}},
betas=["thinking-binding-controls-2026-08-01"],
messages=history,
)
for t in response.input_transformations or []:
print(t.path, t.reason) # prefix_binding_mismatch or model_binding_mismatch
APIは最初に不一致となったブロックと、それ以降のすべての思考ブロックを削除して処理を続けます。削除内容は各リクエストで報告されるため、このフィールドは継続して送信してください。
CIでは"error"を明示的に設定し、履歴編集によって実行が失敗するようにすると安全です。思考保持ガイドでは、3段階の監査方法と、無効化の原因になる圧縮方法を詳しく説明しています。
| 現在の実装 | 推奨する実装 |
|---|---|
セッション中にsystemを編集する |
セッション開始時に固定する。変更を反映する箇所ではrole: "system"メッセージを追加する |
セッション中にtoolsを編集する |
すべてのツールセットを事前に宣言する。必要ならtool_addition / tool_removalブロックをシステムメッセージで送信する(ベータ版mid-conversation-tool-changes-2026-07-01) |
| ターンごとのリマインダーを挿入して削除する | 履歴に残る、clear_at: "next_user_message"付きのシステムメッセージを使う(ベータ版mid-conversation-system-clear-at-2026-08-21) |
| クライアント側で古いツール結果を削除する | サーバー側のコンテキスト編集を使う |
| クライアント側で最近のターンだけを保持して圧縮する | サーバー側の圧縮を使う。または、1つの要約メッセージと新しいユーザーターンだけを再生し、他の履歴は再生しない |
| ターンをまたいでURLで画像を参照する | Files APIに一度アップロードし、file_idを送信する |
Opus 5からの移行:追加の4項目
1. 思考は努力レベルに関係なく無効化できない
Opus 5は、high以下の努力レベルで次の設定を受け入れていました。
thinking={"type": "disabled"}
Fable 5.1では、努力レベルに関係なく400が返ります。
-
thinking: {"type": "disabled"}を削除する - 努力レベルを下げてコストを調整する
- 思考なしで実行していたルートの
max_tokensを見直す
2. ツール間のナレーションが思考ブロックに移動する
Opus 5では、ツール呼び出し間のテキストはtextブロックとして返されました。Fable 5.1では、進捗更新が思考ブロックとして返されます。デフォルトのdisplay: "omitted"では、その内容は空です。
UIでナレーションを表示していた場合は、次の設定とベータヘッダーを追加します。
thinking={"type": "adaptive", "display": "updates"}
thinking-display-updates-2026-08-18
3. 分類器の対象範囲が広がる
Opus 5ではサイバー専用の分類器が使われます。Fable 5.1では次の領域が対象です。
cyberbiofrontier_llmreasoning_extractiongeneral_harms
コンテンツを読み取る前に、stop_reason: "refusal"を処理してください。また、次のベータヘッダーとフォールバック設定を利用できます。
server-side-fallback-2026-07-01
fallbacks="default"
フォールバック先として許可されるのはOpus 4.8とOpus 5です。
4. 料金と保持期間が変わる
Opus 5からの移行では、料金が$5と$25から$10と$50になります。一方、キャッシュ読み取りは$0.50から$0.25に下がります。ZDRは利用できなくなります。
詳しい計算は料金の内訳を参照してください。
Opus 4.8以前から移行する場合は、まずOpus 4.8からOpus 5への移行を適用してから、このガイドに従います。
Opus 4.8向けの統合では、古いターンの切り捨てや、リクエストごとのシステムプロンプト再構築がよく行われていました。Opus 4.8はこれらを拒否しませんでしたが、Fable 5.1では見直しが必要です。
テストすべき動作変更
エラーを返さない動作変更にも注意してください。詳細と1行のプロンプト修正は、プロンプティングガイドにまとめられています。
- 長いループでは、Fable 5が複数のツール呼び出しをまとめて処理していたのに対し、Fable 5.1は1ターンに1回だけ呼び出す場合があります。複数呼び出しターンの割合を測定し、減少していればバッチ処理を促す指示を追加します。
- 進捗メッセージが少なくなるため、
display: "updates"を設定します。結果を保持するよう求める不要なプロンプト行は削除します。 -
low努力レベルでは検索ツールの呼び出し頻度が下がる可能性があります。新しいデータが必要なターンでは努力レベルを上げます。
推奨される変更
-
メッセージごとの努力レベル:ベータ版
mid-conversation-output-config-2026-07-01を使い、キャッシュをリセットするトップレベル設定ではなく、空のコンテンツを持つrole: "system"メッセージのoutput_configで変更する。 -
highからスイープする:Fable 5に対する改善は
xhighとmaxで最大になります。Anthropicによると、mediumはFable 5に近い性能をより低コストで提供します。努力レベル名はモデル間でそのまま引き継がれません。 -
サーバー側でコンテキストをトリミングする:サーバー側圧縮(ベータ版
compact-2026-01-12)やコンテキスト編集を利用する。これらは履歴編集とはみなされません。
移行チェックリスト
- [ ] 30日間のデータ保持と、優先ティアに依存しないことを確認する
- [ ] モデルIDを
claude-fable-5-auto+明示的な指示+strict: true、または構造化出力に置き換える - [ ] Opus 5から移行する場合、
thinking: {"type": "disabled"}を削除し、max_tokensを見直す - [ ] 空の思考ブロックも含め、すべての思考ブロックを変更せずに返す
- [ ]
prefix_mismatch_behavior: "drop_block"で実行し、input_transformationsをログに記録する - [ ] すべての
prefix_mismatch_behaviorを修正する - [ ]
systemとtoolsをセッション開始時に固定する - [ ] ターンごとのリマインダーを、削除しないターン限定のシステムメッセージに移す
- [ ] 本番環境で
prefix_mismatch_behaviorを選択し、監視する - [ ]
stop_reason: "refusal"を処理する - [ ]
fallbacks: "default"を追加する - [ ] UIでツール間のテキストを表示する場合、
display: "updates"を設定する - [ ] highから努力レベルのスイープを再実行し、コストを再基準化する
- [ ] トークン数はFable 5から変わらず、キャッシュ読み取りは価格の4分の1であることを確認する
Apidogでチェックリストを実行する
破壊的変更ごとに1つのリクエストを含むコレクションを作成します。
- 強制的な
tool_choice呼び出しを実行し、400を期待する -
thinking: disabledで呼び出し、400を期待する - 思考バインディングヘッダーを設定する
- ターン間でシステムプロンプトを編集する2リクエストのシーケンスを実行し、
prefix_binding_mismatchを確認する - 成功ケースを隣に追加し、
stop_reasonと空のinput_transformations配列をアサートする - ハーネスを変更するたびにApidog CLIをCIで実行する
構築にはApidogをダウンロードしてください。APIウォークスルーにはリクエストボディの例があります。
FAQ
Fable 5からFable 5.1への移行はドロップイン変更ですか?
ほとんどの場合はそうです。ただし、次の点は対応が必要です。
- 強制された
tool_choiceは400を返す - 以前のモデルはFable 5.1の思考ブロックを読めない
- 強制適用されるアカウントで過去ターンを編集すると、後続の思考ブロックが無効になる
その他の仕様は引き継がれます。
「別の会話にバインドされている」とはどういう意味ですか?
Fable 5.1の思考ブロックより前にコードが何かを変更し、そのブロックを再利用したという意味です。履歴を編集する処理を止めるか、thinking-binding-controls-2026-08-01ヘッダーとともにprefix_mismatch_behavior: "drop_block"を送信します。
自分のアカウントでは履歴編集チェックが強制されますか?
2026年8月31日以降に作成されたアカウントでは強制されます。それ以前のアカウントでは、prefix_mismatch_behaviorを設定した場合にのみ強制されます。
Fable 5のプロンプトをそのまま使えますか?
はい。Anthropicによると、変更なしでも良好な性能が期待できます。ただし、努力レベルのスイープは再実行してください。長いループでは、並列ツール呼び出しが減る可能性があります。
Opus 5から移行すると何が壊れますか?
Fable 5からの変更に加えて、次の変更があります。
-
thinking: disabledは努力レベルに関係なく400を返す - ツール間のナレーションが思考ブロックに移動する
- 分類器の対象範囲が広がる
- 料金が2倍になる
- ZDRが利用できなくなる
BedrockとGoogle Cloudにも同じ破壊的変更がありますか?
モデルの変更については同じです。思考バインディングコントロールは、リリース当初はAWS上のClaude APIとClaude Platformで提供され、BedrockとGoogle Cloudではモデルごとに段階的に導入されています。
コントロールが利用できない場合は、思考ブロックを削除して1回だけ再試行するのが復旧方法です。


Top comments (0)