
Claude Fable 5.1移行ガイド:ツール選択400エラー修正
Claude Fable 5からの移行ガイド。ツール選択の強制解決、思考ブロック、会話履歴の圧縮、フォールバック対応への実装方法を解説します。
Claude Fable 5からClaude Fable 5.1への移行は、単純なモデル名の変更だけでは不十分な場合があります。新しいモデルはツール選択の強制を拒否し、保存された思考ブロック(thinking blocks)を、それを生成した会話プレフィックスにバインドします。また、その思考ブロックを古いClaudeモデルに返送することはできません。したがって、単一ターンのスモークテストに成功した統合でも、最初の構造化出力リクエスト、圧縮された会話履歴、またはフォールバックで失敗する可能性があります。
安全な移行には3つの部分があります。強制的なツール呼び出しを自動選択とスキーマ検証に置き換える、マルチターン履歴を追記のみにする、会話を古いモデルに戻すことができるすべてのルートをテストすることです。OpenAI互換ルートを使用する場合は、Claude Fable 5.1 Request Guideから開始してください。以下のネイティブの例はAnthropicのMessages APIを使用するため、各ブレーキングチェンジが明確に表示されます。
クイックアンサー
- ネイティブモデルIDを
claude-fable-5-1に変更し、ツール選択の強制モードを削除してください。anyと名前付きツールはHTTP 400を返します。[1] - Fable 5.1の思考ブロック後、システムプロンプト、ツール、および以前のメッセージプレフィックスを変更しないままにしてください。履歴を上書きするのではなく、新しい指示を追記してください。[1]
- すべてのフォールバックをテストしてください。古いClaudeモデルはFable 5.1の思考ブロックを読むことができないため、API継続前にそれらを削除します。[1]
- 適応的な思考は有効なままです。手動のトークン予算を
effortに置き換え、ロールアウト前にCIでプレフィックスミスマッチを演習してください。[1]
まず、実際に移行しているコードパスをインベントリ化する
文字通りのモデルIDだけでなく、より広く検索してください。ラッパーが汎用の「必須ツール」設定をAnthropicのtool_choice: {"type":"any"}に変換したり、思考ブロックを会話ストアに保持したり、リクエストのたびにシステムプロンプトを変更したりする場合があります。リリース直後に浮上したOpenCodeの問題は、実践的な例です。その構造化出力アダプタが必須のツール使用を選択し、それがAnthropicの非サポートanyモードになり、400を生成しました。[6]このイシューは実際の統合パターンを示しており、AnthropicのマイグレーションガイドはAPIの動作の権限です。
編集前にこれらのコンポーネントを監査してください:
| コンポーネント | 検索対象 | 予想される失敗 |
|---|---|---|
| モデル選択 | claude-fable-5、エイリアス、フォールバックリスト | 古いモデルが引き続きトラフィックの一部を受け取る |
| ツールアダプタ | tool_choice、required、any、名前付きツール | 400 invalid_request_error |
| 構造化出力 | 合成ツール、スキーマラッパー | ラッパーが黙ってツールを強制する |
| 会話ストア | thinking、redacted_thinking、署名 | 編集後の無効な思考署名 |
| 圧縮 | サマリ注入、テール保持、メッセージ削除 | 後続ブロックが古いプレフィックスにバインドされている |
| 動的プロンプト | 現在の日付、権限、有効なツール | システムまたはツールプレフィックスがターンごとに変更される |
| リトライとフォールバック | 古いClaudeモデルID | Fable 5.1の思考がスイッチ時に削除される |
| 保持ポリシー | ZDRワークスペースまたは組織 | 生成前にリクエストが拒否される |
可能であれば、シリアル化されたリクエスト境界でインベントリを実行してください。アプリケーションオブジェクトは、SDKまたはプロバイダアダプタがそれらを書き直している場合でも、変更されていないように見える場合があります。
ステップ1:モデルIDを更新しますが、残りを監視可能にしておく
ネイティブIDはclaude-fable-5-1です。Fable 5.1は100万トークンのコンテキストウィンドウを保持し、最大128,000の出力トークンをサポートし、常にオンの適応的な思考を使用します。[2]同じプロダクショントラフィック形状で開始し、リクエストID、ステータスコード、停止理由、トークン使用率、ツール呼び出し、およびフォールバックをログに記録してください。
この移行を使用して、努力、圧縮、プロンプト表現、ツールフレームワークを同時に変更しないでください。狭い最初のデプロイメントは、400または動作シフトを追跡可能にします。互換性が確立されたら、古い設定が最適だと仮定するのではなく、ワークロード上でlow、medium、high、xhigh、maxを試してください。Anthropicはhighをデフォルトとして文書化しています。[1]
前の統合がそれらを提供する場合、これらの構成のいずれかを削除してください(両方ともClaude Fable 5.1では無効です):
thinking={"type": "disabled"}
thinking={"type": "enabled", "budget_tokens": 12000}Fable 5.1は、いつ、どの程度の思考を行うかを決定します。プリフィルとして使用される後続のアシスタントメッセージも400を返すため、出力指示をシステムまたはユーザーコンテンツで表現してください。[1]
ステップ2:強制的なツール選択を置き換える
互換性の境界は正確です:
tool_choice値 | Fable 5 | Fable 5.1 |
|---|---|---|
{"type":"auto"} | サポート | サポート |
{"type":"none"} | サポート | サポート |
{"type":"any"} | サポート | HTTP 400 |
{"type":"tool","name":"record_summary"} | サポート | HTTP 400 |
チェックはMessages、Message Batches、およびトークンカウントに適用されます。報告されたエラーは、ツール選択タイプtoolとanyがこのモデルでサポートされていないことを示しています。[1]同じボディで再試行しても役立ちません。
一般的な移行前のパターンはこちらです:
response = client.messages.create(
model="claude-fable-5",
max_tokens=4096,
tools=[record_summary_tool],
tool_choice={"type": "tool", "name": "record_summary"},
messages=[
{"role": "user", "content": "Summarize the meeting notes."}
],
)Fable 5.1の場合、自動選択を使用し、要件を現在の指示に入れ、ツールを厳密にします:
record_summary_tool = {
"name": "record_summary",
"description": "Record the structured meeting summary.",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"summary": {"type": "string"},
"action_items": {
"type": "array",
"items": {"type": "string"},
},
},
"required": ["summary", "action_items"],
"additionalProperties": False,
},
}
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=4096,
tools=[record_summary_tool],
tool_choice={"type": "auto"},
messages=[{
"role": "user",
"content": (
"Summarize the meeting notes, then call record_summary "
"with the summary and action items."
),
}],
)strict: trueはツールが呼び出されるときの引数を制限します。ツールが呼び出される必要があるというトランスポートレベルの保証を再作成するわけではありません。アプリケーションは、応答に必要なツール使用ブロックが含まれていることをまだ確認する必要があります。Anthropicは、強制的なツールがスキーマ有効なJSONを取得するためだけに存在する場合、output_config.formatを通じたJSON出力も推奨しています。[1]
アプリケーションが会話の途中で1つの名前付きツールが必要な場合、最新のユーザーメッセージの後にrole: "system"メッセージを追記してください。ツールに名前を付け、このターンに必要であることを示し、呼び出しを開始するようにモデルに指示してください。後の履歴でこのシステムメッセージを保持してください。これにより、以前のプレフィックスが保持されます。トップレベルのシステムプロンプトを書き直すと保持されません。[1]
「モデルが指示を無視した」を処理された結果として扱ってください。ターンを拒否し、境界のある方針の下で再試行するか、安全に失敗してください。プロンプティングを絶対的な実行メカニズムとして説明しないでください。
ステップ3:APIがサポートする方向に思考を保持する
すべてのFable 5.1の思考ブロックは、モデルと会話のバインディング情報を持っています。互換性は一方向です:
Fable 5の思考 ───────► Fable 5.1はそれを読むことができます
Opus 5の思考 ───────► Fable 5.1はそれを読むことができます
Fable 5.1の思考 ──X──► Fable 5はそれを読むことができません
Fable 5.1の思考 ──X──► Opus 5はそれを読むことができませんClaude Mythos 5.1はFable 5.1ブロックを読むことができる文書化された例外です。ルータ、拒否フォールバック、またはクライアント再試行が会話を古いモデルに送信する場合、APIは対象が読むことができないブロックを削除します。リクエストは依然として成功でき、削除された入力トークンは課金されませんが、対象はそのreasoningなしで再計画する必要があります。[1]
これはフォールバック評価に重要です。Fable 5での最初のリクエストとFable 5.1での最初のリクエストは、5.1から5への会話中スイッチと同等ではありません。両方を測定してください。thinking-binding betaが有効な状態でinput_transformationsをログに記録してください。model_binding_mismatchはモデルが変更されたために削除されたブロックを識別します。
ステップ4:会話プレフィックスを追記のみにする
Fable 5.1の思考ブロックは、それを前置した正確なシステムプロンプト、ツールセット、およびメッセージ履歴に対して有効です。ブロックを再生する前にそのいずれかを変更すると、無効な思考署名について400を生成できます。[1]
一般的な誤った編集には以下が含まれます:
- 新しいタイムスタンプでシステムプロンプトを再構築する;
- トップレベルの
tools配列にツールを追加または削除する; - トークンを節約するために古いツール結果を削除する;
- 最近のターンの前にサマリを挿入しながらその思考ブロックを保持する;
- 次のリクエストでター単位のリマインダを削除する;
- 同じURLから異なる画像またはドキュメントバイトをフェッチする;
最後のケースは見落としやすい:バインディングはURLストリングだけではなくファイルバイトをカバーします。ターンをまたいで再利用されるファイルの場合、Anthropicは安定したFiles APIfile_idまたはBase64コンテンツを推奨しています。[1]
これらのパターンを優先してください:
- 以前のバイトを変更せずに新しいターンを追記する;
- 変更された指示のための会話中のシステムメッセージを追記する;
- ツール変更のための文書化されたツール追加およびツール削除ブロックを使用する;
- サーバー側の圧縮またはコンテキスト編集を使用する;
- クライアント上で圧縮する場合、古い思考ブロックを持たずに1つのサマリメッセージと新しいユーザーターンで履歴全体を置き換える;
この最終的なクライアント側の形式は意図的にシンプルです。新しいサマリの後ろに最近のターンを保持することは、そのthinkingとredacted_thinkingブロックが削除された場合のみ安全です。これらのブロックはpre-summaryの履歴に対して作成されたためです。[1]
ユーザーがする前にプレフィックスミスマッチを診断する
Anthropicは、2026年8月31日以降に作成されたアカウント用にデフォルトで会話プレフィックスチェックを実装しています。古いアカウントは、コントロールにオプトインしない限り失敗しない場合があります。これにより、顧客キーで使用されるライブラリにとって危険な「私たちのキーで機能する」テストギャップを作成します。[1]
ステージングセッションでベータコントロールを使用してください:
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=4096,
thinking={
"type": "adaptive",
"block_binding": {
"prefix_mismatch_behavior": "drop_block"
},
},
messages=conversation,
betas=["thinking-binding-controls-2026-08-01"],
)
for change in response.input_transformations or []:
print(change.path, change.reason)drop_blockでは、APIは最初のミスマッチ思考ブロックとすべての後続の思考ブロックを削除し、prefix_binding_mismatchを報告します。デフォルトのerrorでは、リクエストを拒否します。degradedな継続が失敗より優先される場合はdrop_blockを使用します。CIで履歴突然変異をすぐに公開するにはerrorを使用してください。[1]
同じ無効なボディの自動再試行はミスマッチを修復できません。元のプレフィックスを復元するか、影響を受けた思考ブロックを削除するか、ドロップの動作を明示的にリクエストしてください。
400を生成しない動作を再確認する
互換性テストはより静かな変更もカバーする必要があります。Anthropicは、Fable 5.1は長いエージェントループで並列ツール呼び出しが少なく、より少ない進捗メッセージを生成し、low努力でSearchまたはRetrievalを少なく呼び出す可能性があると述べています。[3]これらのいずれも必ずしも欠陥を示しませんが、各々がレイテンシまたは製品の動作を変更できます。
アプリケーションが必要とするもののまわりに注釈を構築してください:
- 並列化可能な読み取りの場合、ターンごとの呼び出しと総ラウンドトリップを記録してください;
- 進捗UIの場合、表示されると仮定するのではなく、定義されたインターバルでユーザー向けの更新を要求してください;
- Retrieval根拠付き回答の場合、Retrieval基準を明示的にして、必要な証拠を欠く回答を拒否してください;
- エディットエージェントの場合、変更されたファイルリストを確認し、小さいパッチが必要な場合は全ファイル書き直しを避けてください。[4]
拒否の処理も保持してください。Fable 5.1はstop_reason: "refusal"をstop_details.categoryで返す場合があります。空の応答テキストをトランスポートの失敗として扱わないでください。フォールバックは一方向の思考互換性を説明する必要があります。[2]
FAQ
Fable 5.1が構造化出力リクエストで400を返すのはなぜですか?
シリアル化されたAnthropicリクエストを検査してください。フレームワークは、tool_choice: anyを使用して合成ツールを強制することで、構造化出力を実装する場合があります。Fable 5.1はanyと名前付きtool選択の両方を拒否します。自動ツール選択と厳密なスキーマと明示的な指示に切り替えるか、AnthropicのJSON出力メカニズムを使用してください。
strict: trueはClaudeがツールを呼び出すことを保証しますか?
いいえ。ツールが呼び出されるときのスキーマ適合引数を保証します。指示は呼び出しを要求できますが、アプリケーションは依然として期待されたツール使用ブロックが存在することを確認し、その不在を処理する必要があります。
Fable 5.1はFable 5会話を続行できますか?
はい。Fable 5.1はFable 5および他の文書化された以前のClaudeモデルからの保持された思考を読むことができます。逆方向は互換性がありません。古いターゲットはFable 5.1思考ブロックが削除された後に会話を受け取ります。
ターン間でシステムプロンプトを変更できますか?
後続のFable 5.1思考ブロックを再生している間に、プレフィックスを書き直すことはできません。会話中のシステムメッセージを追記し、履歴に保持してください。アプリケーションが意図的に新しい会話を開始する場合、保持する古い思考ブロックがないため、新しいシステムプロンプトを使用できます。
最も安全なクライアント側の圧縮戦略は何ですか?
すべての以前の履歴を1つのサマリメッセージと新しいユーザーターンに置き換え、古い思考ブロックを再生しないでください。最近のテールを保持する場合は、そのテールから思考ブロックとredacted-thinkingブロックを削除するか、文書化されたドロップの動作を使用してください。
移行はすべてのAPI請求を低くしますか?
いいえ。入出力リスト価格は100万トークンあたり10ドルおよび50ドルのままです。キャッシュ読み取りはより安いですが、タスクコストは出力、ターン数、努力、再試行、およびキャッシュが有効なままであるかによっても異なります。[5]Fable 5.1コスト内訳はその計算を個別に処理しています。
リリースゲート:すべての行がパスするまでデプロイしない
| ゲート | パス条件 |
|---|---|
| モデルルート | すべてのプロダクションエイリアスが意図したclaude-fable-5-1に解決する |
| 強制ツール | シリアル化されたリクエストがtool_choice: anyまたは名前付き強制ツールを含まない |
| 必須出力 | 欠落しているツール呼び出しと無効なデータがアプリケーションコードで安全に失敗する |
| 思考履歴 | マルチターン、ツール変更、および圧縮テストが説明のつかないプレフィックスミスマッチを示さない |
| フォールバック | ダウングレードテストが削除されたFable 5.1思考を許容し、副作用を二重実行しない |
| 保持 | ターゲットワークスペースがモデルの必須保持ポリシーを許可する |
| 動作チェック | Retrieval、進捗、ツールバッチ処理、拒否、およびファイル編集スコープが製品基準を満たす |
緑色の単一ターン応答は、モデルIDと認証情報のみが機能することを証明しています。緑色の移行は、ツール呼び出し後、履歴変更後、およびプロダクションが既にストレスの下にある場合にのみ通常実行されるフォールバック後の会話を対象とします。
参照
- Anthropic, Migrating to Claude Fable 5.1 and Claude Mythos 5.1, accessed September 7, 2026.
- Anthropic, Claude Fable 5.1 overview, accessed September 7, 2026.
- Anthropic, What's new in Claude Fable 5.1, accessed September 7, 2026.
- Anthropic, Prompting Claude Fable 5.1, accessed September 7, 2026.
- Anthropic, API pricing, accessed September 7, 2026.
- OpenCode, Issue #46735: Claude Fable 5.1 structured output tool-choice error, accessed September 7, 2026. The issue is cited as an integration example; API behavior is sourced from Anthropic.
著者

カテゴリ
strict: trueはClaudeがツールを呼び出すことを保証しますか?Fable 5.1はFable 5会話を続行できますか?ターン間でシステムプロンプトを変更できますか?最も安全なクライアント側の圧縮戦略は何ですか?移行はすべてのAPI請求を低くしますか?リリースゲート:すべての行がパスするまでデプロイしない参照他の記事

Seedanceのクレジットと限度額:残高がなくなる理由
クレジット残高で生成できる動画本数は、解像度・出力長・入力方式に同時に依存して変わります。秒単位課金は、乗算で同じ質問に答えるシンプルな方法です。


Seedance 2.0の「Not Eligible」エラー:原因と有効な対処法
Seedance 2.0のnot eligibleエラーは、ByteDance APIの顔とIP検出が原因です。発生条件、確認すべきモデルと入力方式、正規の対処法を解説します。


AI動画生成API比較2026:主要5モデルを検証
Seedance 2.5、MiniMax H3、Kling 3.0、Veo 3.1、Vidu Q3を、再生時間・参照素材・音声・解像度・課金・実務適合で比較。
