Claude Fable 5 API ガイド
API から Claude Fable 5 を呼び出す方法。モデル ID、400 エラーの罠(新しい thinking-disabled の罠を含む)、effort の調整、タスク予算、キャッシュ、そして Bedrock のデータ保持の落とし穴まで。
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。
Claude Fable 5 を呼び出すには、モデル ID claude-fable-5 を使い、thinking: {"type": "adaptive"} で思考をオンにします。ハッピーパスはこれだけです。罠は、その周りのすべてにあります。以前は通っていたサンプリングパラメータが今は 400 を返し、Opus 4.8 では問題ないパラメータが Fable 5 ではリクエストを壊します。
Fable 5 は2026年6月9日に、Anthropic の最も能力の高いモデルとして、Opus の一段上のティアでローンチされました。1M のコンテキストウィンドウと128K の出力上限を持ち、料金は入力100万トークンあたり$10、出力100万トークンあたり$50です。Opus 4.8 の2倍なので、ルーチンワークではなく難しい問題に向けるモデルです。
これは実践ガイドです。呼び出し方、どんなときに 400 が出てなぜなのか、effort と予算の調整方法、キャッシュがどう変わるか、そしてスキップするとブロックされる Bedrock の1ステップを解説します。
最小の動作する呼び出し
ここから始めましょう。これが動作する最小の呼び出しで、公式の Anthropic SDK を使った Python です。クライアントは環境から ANTHROPIC_API_KEY を読み込み、モデルを選び、適応的な思考をオンにし、effort を xhigh に設定します。コーディングやエージェント的な作業にはこれが適切な設定だからです。
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "xhigh"},
messages=[{"role": "user", "content": "Explain what a row-level security policy does."}],
)
print(message.content[0].text)モデル ID は正確に claude-fable-5 という文字列です。日付のサフィックスはありません。付けると 404 になります。
思考をまったく使いたくない場合は、thinking の行を削除します。disabled に設定するのではありません。この区別がこのモデル最大の落とし穴で、後ほど独立したセクションを設けます。
400 エラーの罠
Fable 5 は、以前のモデルが受け付けていた一連のパラメータを削除しました。それらのどれかを送ると HTTP 400(invalid_request_error)が返ります。何が壊れ、どう直すかの完全な一覧を示します。
| 送るパラメータ | 何が起きるか | 修正 |
|---|---|---|
thinking: {"type": "adaptive"} | 動作する。これがオンモード。 | そのまま使う。 |
thinking: {"type": "enabled", "budget_tokens": N} | 400 | {"type": "adaptive"} を使う。 |
thinking: {"type": "disabled"} | 400(Fable 5 で新たに) | thinking パラメータをまるごと省く。 |
(thinking フィールドなし) | 思考なしで動作する。 | これが思考をオフにする方法。 |
temperature | 400 | 削除する。代わりにプロンプトで誘導する。 |
top_p | 400 | 削除する。 |
top_k | 400 | 削除する。 |
| Assistant ターンの prefill | 400 | 構造化出力(output_config.format)を使う。 |
output_format(トップレベル) | API 全体で非推奨 | output_config: {"format": {...}} を使う。 |
prefill とは、messages 配列の末尾を、モデルに続きを書かせるために自分で書き始めた role: "assistant" ターンで終えることです。このパターンは Fable 5 で 400 を返します。JSON を強制するために使っていたなら、後述の構造化出力に切り替えてください。
なぜ thinking disabled は 400 を返すのか
これは「ドロップイン」アップグレードを壊す罠なので、正確に押さえておく価値があります。
Opus 4.8 と Opus 4.7 では、思考なしでリクエストを走らせる方法が2つあります。thinking フィールドを省くか、thinking: {"type": "disabled"} を設定するかです。どちらも同じです。
Fable 5 では、そうではありません。明示的な thinking: {"type": "disabled"} は 400 を返します。思考なしで走るのは、フィールドを省いたときだけです。だから、昨日まで Opus で動いていて disabled を明示的に設定していたコードは、モデル ID を入れ替えた瞬間にエラーを出し始めます。
このスニペットは、壊れるバージョンと動作するバージョンを並べて示します。最初のものは Fable 5 で 400 を返します。2番目のものは思考なしで走り、最初のものがやろうとしていたことを実現します。
# WRONG on Fable 5 - returns a 400
message = client.messages.create(
model="claude-fable-5",
max_tokens=4096,
thinking={"type": "disabled"},
messages=[{"role": "user", "content": "Classify this ticket as bug or feature."}],
)
# RIGHT - omit the thinking param to run without thinking
message = client.messages.create(
model="claude-fable-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Classify this ticket as bug or feature."}],
)修正は値の変更ではなく、削除です。行を消してください。type に別の値を探そうとしないでください。
もうひとつ知っておくべき挙動の変化があります。思考をオフにすると、Fable 5 はときどき長めの推論を見える回答の中に書き込みます。短く速い返答が必要なら、最もきれいな修正は適応的な思考をオンのままにしておくことです。これで推論が最終的なテキストの外に保たれます。どうしても思考なしで走らせる必要があるなら、最終的な答えだけを返すようモデルに指示するシステム命令を追加してください。
effort の調整
effort は、モデルがどれだけ深く考え、どれだけ行動するかをコントロールします。設定するのはトップレベルではなく output_config の中です。デフォルトは high です。
この呼び出しは effort を明示的に設定します。値が低いほどツール呼び出しが少なく、前置きが減り、出力が簡潔になります。高いほど推論が深く、徹底的になりますが、トークンコストも上がります。
message = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "high"}, # low | medium | high | xhigh | max
messages=[{"role": "user", "content": "Refactor this module for testability."}],
)レベルの選び方は次のとおりです。
| レベル | 用途 |
|---|---|
low | subagents、シンプルでスコープの限られたタスク、レイテンシ重視の作業、安価な大量実行。 |
medium | 多少の知能と引き換えにトークンを減らせる、コスト重視の作業。 |
high | デフォルト。知能が問われるものすべてに推奨される最低ライン。 |
xhigh | コーディングとエージェント的な作業。その大半に最適で、Claude Code のデフォルト。 |
max | 最も難しい問題と上限テスト。コストより正しさが優先される場面。 |
effort は、どの以前の Opus よりも Fable 5 で重要です。移行するなら、古い設定がそのまま合うと決めつけず、ルートごとに再調整してください。長時間のエージェント的なタスクには、タスク仕様を最初の1ターンですべて与え、high か xhigh で走らせます。xhigh か max では、max_tokens に十分な余裕を持たせ(64K から始める)、モデルがツール呼び出しをまたいで考え、行動する余地を確保します。
タスク予算
タスク予算は、思考、ツール呼び出し、最終出力を数えて、エージェントのループ全体に何トークン使えるかをモデルに伝えます。モデルはカウントダウンを見ながらペース配分し、予算が尽きるにつれて優雅にまとめていきます。
これは max_tokens とは違います。max_tokens はモデルに見えないハードな上限です。タスク予算はモデルが認識し、それを織り込んで計画する目安です。予算でモデルを自己調整させ、max_tokens は強制される上限として残しておきましょう。
タスク予算はベータなので、ベータヘッダーを渡し、ベータ名前空間を通して呼び出します。最小予算は20,000トークンです。
message = client.beta.messages.create(
betas=["task-budgets-2026-03-13"],
model="claude-fable-5",
max_tokens=64000,
thinking={"type": "adaptive"},
output_config={
"effort": "high",
"task_budget": {"type": "tokens", "total": 128000},
},
messages=[{"role": "user", "content": "Migrate the auth module off the deprecated API."}],
)オープンエンドなエージェント的実行には寛大な予算を、レイテンシ重視のタスクにはきつめの予算を設定します。予算が作業に対して小さすぎると、モデルはあまり徹底できずに終え、予算が制約だったと伝えてきます。
キャッシュに関する注意
プロンプトキャッシュは、すべての Claude モデルと同じように機能します。プレフィックスのマッチングなので、キャッシュされたプレフィックス内のどこか1バイトでも変われば、それ以降がすべて無効になります。安定したコンテンツを先頭に置き、変動するコンテンツ(タイムスタンプ、リクエスト ID、リクエストごとの質問)は最後のブレークポイントの後に置きましょう。
Fable 5 では2つの数字が異なります。キャッシュ可能な最小プレフィックスは2048トークンで、Opus 4.8 の4096から下がりました。だから Opus 4.8 では静かにキャッシュに失敗していた3Kトークンのプロンプトが、Fable 5 ではキャッシュされます。キャッシュ読み込みは基本入力料金の約0.1倍、書き込みはデフォルトの5分ウィンドウで約1.25倍のコストです。
この呼び出しは、大きく安定したシステムプロンプトをキャッシュします。cache_control マーカーはシステムブロックに付けます。user ターンのリクエストごとの質問はキャッシュされないままで、それが望ましい状態です。
message = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
system=[
{
"type": "text",
"text": LARGE_STABLE_SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "Summarize the key risks in section 4."}],
)キャッシュヒットを確認するには、message.usage.cache_read_input_tokens を読みます。同じプレフィックスで繰り返しリクエストしてもゼロのままなら、プレフィックス内の何かが毎回変わっています。よくある原因は、システムプロンプト内のタイムスタンプ、キーをソートせずにシリアライズした JSON、あるいはリクエストごとに変わるツールセットです。
大きな出力のためのストリーミング
Fable 5 は最大128K の出力トークンを生成できますが、大きな出力を求める非ストリーミングのリクエストでは、SDK が HTTP タイムアウトに当たります。目安は、おおよそ16K の max_tokens を超えるものはすべてストリーミングすることです。
これは応答をストリーミングし、最後に最終メッセージを集めるので、ライブのトークンと完全な結果オブジェクトの両方が得られます。
with client.messages.stream(
model="claude-fable-5",
max_tokens=64000,
thinking={"type": "adaptive"},
output_config={"effort": "xhigh"},
messages=[{"role": "user", "content": "Write the full migration plan."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()Fable 5 特有のストリーミングの注意点がひとつ。thinking ブロックはストリーミングされますが、そのテキストはデフォルトで空です。推論をユーザーに表示する場合、このデフォルトは答えが始まる前の長い沈黙の間に見えてしまいます。目に見える進捗を取り戻すには、thinking={"type": "adaptive", "display": "summarized"} で要約された思考をリクエストしてください。
Amazon Bedrock 上の Fable 5
Bedrock には、やるまですべてのリクエストをブロックする1ステップがあります。Fable 5 を呼び出す前に、データ共有にオプトインしなければなりません。ローンチ時点でこれ用のコンソール UI はないので見落としやすく、出るエラーも分かりにくいものです。
オプトインは Data Retention API で、モードを provider_data_share に設定して行います。この curl 呼び出しは、Anthropic Messages API で使う bedrock-mantle エンジンに対してそれを行います。最初のモデル呼び出しの前に、アカウントごとに一度だけ実行してください。
curl -X PUT https://bedrock-mantle.us-east-1.api.aws/v1/data_retention \
-H "x-api-key: <your-bedrock-api-key>" \
-H "Content-Type: application/json" \
-d '{ "mode": "provider_data_share" }'代わりに bedrock-runtime エンジンで Converse API や Invoke API を呼ぶ場合は、エンドポイントと認証が異なります。これがそのエンジン向けの同等のオプトインです。
curl -X PUT https://bedrock.us-east-1.amazonaws.com/data-retention \
-H "Authorization: Bearer <your_bearer_token>" \
-H "Content-Type: application/json" \
-d '{ "mode": "provider_data_share" }'オプトインすると、Anthropic はあなたの入力と出力を30日間保持します。データは訓練には使われず、それへの人間のアクセスはログに記録され、30日後に削除されます。これはすべての Mythos クラスのトラフィックの要件で、いったんオプトインすると、あなたのデータは AWS のセキュリティ境界の外に出ます。それをオンにする前に、自分のワークロードにとって許容できるかを判断してください。
オプトインしたら、Anthropic SDK を Bedrock のエンドポイントに向けます。Messages API でのモデル ID は anthropic.claude-fable-5 で、anthropic. プレフィックスが付きます。この Python の呼び出しは bedrock-mantle に対して走ります。
import anthropic
client = anthropic.Anthropic(
base_url="https://bedrock-mantle.us-east-1.api.aws/anthropic",
api_key="<your-bedrock-api-key>",
)
message = client.messages.create(
model="anthropic.claude-fable-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Design a multi-region architecture for 100k requests per second."}],
)
print(message.content[0].text)boto3 経由で Converse API を使いたい場合は、モデル ID が global.anthropic.claude-fable-5 に変わり、bedrock-runtime を呼び出します。これは同じリクエストをその形にしたものです。
import boto3
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
response = bedrock_runtime.converse(
modelId="global.anthropic.claude-fable-5",
messages=[{"role": "user", "content": [{"text": "Design a multi-region architecture for 100k RPS."}]}],
inferenceConfig={"maxTokens": 4096},
)
print(response["output"]["message"]["content"][0]["text"])ローンチ時点で、Bedrock は Fable 5 を US East(N. Virginia)と Europe(Stockholm)で提供します。アクセスは AWS アカウントをまたいで徐々に広がります。あなたのアカウントがまだ有効でないなら、早めたい場合は AWS サポートに連絡してください。
想定しておくべき課金のサプライズ
Fable 5 には保守的なセーフガードが搭載されています。サイバー、生物、化学、健康に関するトピックのクエリは、代わりに Opus 4.8 からの応答にフォールバックし、ユーザーにその旨が伝えられます。これは平均してセッションの5%未満で発火します。
あなたのコードに影響する部分は課金です。フォールバックの応答は Fable 料金ではなく Opus 料金で課金されます。Bedrock では、リクエストが会話の途中でブロックされると、最初のトークンは Fable 料金で、残りは Opus 料金で課金されます。だから一部の応答は、モデルピッカーが示すより安くなり、Opus 4.8 が答えた旨の注記が付きます。あらゆる Fable 呼び出しを一律の Fable 料金と扱うのではなく、これを織り込んだコストモデルを組んでください。
Opus 4.8 または 4.7 からの移行
既存の Opus コードがすでにクリーンなら、Fable 5 への移行はモデル ID の入れ替えだけで済みます。「クリーン」とは、サンプリングパラメータなし、budget_tokens なし、明示的な thinking: {"type": "disabled"} なし、という意味です。
チェックリストはこちらです。
- モデル ID を
claude-fable-5に入れ替える。 thinking: {"type": "disabled"}をすべて削除する。Fable 5 では 400 になる。代わりにフィールドを省く。temperature、top_p、top_kを削除する。これらは Opus 4.7 と 4.8 ですでに 400 になっており、ここでも 400 になる。budget_tokensをthinking: {"type": "adaptive"}に置き換える。- 末尾の assistant ターンの prefill を
output_config: {"format": {...}}に置き換える。 effortをルートごとに再調整する。Fable 5 ではより重みを持つ。- 推論をユーザーに見せるなら、
thinking.displayを"summarized"に設定する。 max_tokensとコストダッシュボードを再基準化する。Fable は Opus の2倍の価格で走るため。
Opus 4.6 以前から来る場合は、まず適応的な思考への移行を完全に適用してから、上記の Fable 5 の差分を適用してください。
Opus 4.8 と 4.7 に対して本当に新しい破壊的変更は、明示的な thinking-disabled の 400 だけです。このリストの他のすべては、最近の Opus モデルにすでに当てはまっていました。だから人々は Fable 5 を「ほぼドロップイン」と呼ぶのです。仕事をしている言葉は「ほぼ」です。
よくある質問
Claude Fable 5 のモデル ID は何ですか?
一次のモデル ID は、日付サフィックスのない正確な文字列 claude-fable-5 です。Amazon Bedrock では anthropic. プレフィックスが付きます。Messages API(bedrock-mantle)では anthropic.claude-fable-5、Converse または Invoke API(bedrock-runtime)では global.anthropic.claude-fable-5 です。
なぜ Fable 5 では thinking disabled が 400 を返すのですか?
Fable 5 では、明示的な thinking: {"type": "disabled"} が受け付けられず、400 を返します。これは Fable 5 に固有で、Opus 4.8 と 4.7 は受け付けます。思考なしでリクエストを走らせるには、thinking パラメータを disabled に設定するのではなく、まるごと省いてください。
Bedrock で Fable 5 を使うにはどうすればいいですか?
まず Data Retention API のモードを provider_data_share に設定して、データ共有にオプトインします。ローンチ時点でこれ用のコンソール UI はないので、data-retention エンドポイントへの curl 呼び出しで行います。その後、Anthropic SDK を Bedrock のベース URL に向け、モデル ID anthropic.claude-fable-5 を使うか、boto3 の Converse API を global.anthropic.claude-fable-5 で使います。
Claude Fable 5 の料金はいくらですか?
入力100万トークンあたり$10、出力100万トークンあたり$50です。Opus 4.8 の$5と$25の2倍です。セーフガードに引っかかって Opus 4.8 にフォールバックする応答は、代わりに Opus 料金で課金されるので、一部の呼び出しは表向きの Fable 料金より安くなります。
Fable 5 でエラーを出さずに思考をオフにするには?
リクエストから thinking フィールドを削除してください。thinking フィールドのないリクエストは思考なしで走ります。thinking: {"type": "disabled"} は設定しないでください。400 を返します。思考をオフにしたときにモデルが見える回答へ長い推論を書き込むようなら、適応的な思考をオンのままにするか、最終的な答えだけを返すシステム命令を追加してください。
Fable 5 でプロンプトキャッシュは変わりますか?
仕組みは同じですが、キャッシュ可能な最小プレフィックスが低くなっています。Fable 5 では2048トークンで、Opus 4.8 の4096に対してです。だから Opus 4.8 ではキャッシュされなかった中サイズのプロンプトが、Fable 5 ではキャッシュされます。ヒットは usage.cache_read_input_tokens で確認してください。
出典
- Claude Fable 5 and Claude Mythos 5
- Anthropic Claude Fable 5 on AWS (AWS News Blog)
- Models overview (API docs)
- Model migration guide (API docs)
- Building with extended thinking (API docs)
- Claude Fable 5 model card (Amazon Bedrock)
- Data retention practices for Mythos-class models
関連ページ
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。
Claude Fable 5 の料金とコスト管理
Claude Fable 5 は入力100万トークンあたり$10、出力100万トークンあたり$50。ちょうど Opus 4.8 の2倍です。コストの計算式、フォールバック料金の癖、そして請求額を抑える5つのレバー(effort、タスク予算、キャッシュ、バッチ、ルーティング)を解説します。
Claude Code で使う Claude Fable 5
Claude Fable 5 は Pro・Max・Team・Enterprise プランで 6 月 22 日まで無料、その後は usage credits に切り替わります。この期間をどう活かすか、Opus 4.8 ではなく Fable 5 を選ぶべき場面、そして長時間の自律実行に向けた effort の設定方法を解説します。