Fable 5 APIリジェクトの対応方法

Fable 5のリクエストは、Opus 4.8からの応答で返ってくることがあります。response.modelを介してリルートを検出する方法、ベータ版フォールバックパラメータを使用する方法、拒否パスをテストする方法を学びましょう。

Ashley Innocent

Ashley Innocent

2 7月 2026

Fable 5 APIリジェクトの対応方法

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

claude-fable-5を呼び出すと、応答は正常に見えますが、modelフィールドを確認するとclaude-opus-4-8と表示されます。これは、リクエストが安全分類器に引っかかり、Fable 5が応答を拒否し、別のモデルが代わりに処理したことを意味します。これはバグではありません。Fable 5が意図的に設計された動作であり、あなたの統合はこの挙動を偶然ではなく意図的に処理すべきです。

このアーキテクチャの背景にある理由は、Fable 5の安全対策に関する解説で説明しました。この記事は実践的な補足です。リルートがトリガーされる条件、コードでそれを検出する方法、ベータ版のfallbacksパラメータがリトライを自動化する方法、そして実際のユーザーが遭遇する前に拒否処理をテストする方法を学びます。

Fable 5が一部のリクエストをリルートする理由

Claude Fable 5には、受信リクエストをスクリーニングする安全分類器が搭載されています。これらは、サイバーセキュリティ、生物学と化学、モデル蒸留の3つの領域を監視します。分類器がトリガーされると、Fable 5はリクエストを拒否します。Claudeの消費者向けインターフェースでは、そのリクエストはClaude Opus 4.8によって処理され、ユーザーにその旨が通知されます。APIでは、復旧はあなた次第であり、そこでfallbacksパラメータが登場します。

分類器は固定ではありません。6月の一時停止後、Anthropicは報告された脱獄技術に対して分類器を再学習させました。更新されたバージョンは、試行の99%以上をブロックします。Fable 5は、新しい分類器が導入された2026年7月1日に再展開されました。サービス停止中に統合を一時停止していた場合、弊社のFable 5復活ハブで完全なタイムラインと変更点を確認できます。

ここで、もう1つ背景情報が役立ちます。分類器はモデルの内部ではなく、手前に配置されています。Claude Mythos 5は分類器のない同じモデルであり、アクセスはProject Glasswing参加者に限定されています。Fableのセッションの95%以上ではフォールバックは全く発生せず、それらのセッションではFable 5のパフォーマンスはMythos 5と実質的に同じです。Fable 5とMythos 5の違いで、その差を詳しく解説しています。

リルートがあなたのアプリに何を意味するか

Fable 5とOpus 4.8はどちらも強力なモデルですが、エンジニアリングの観点からは互換性がありません。Fable 5は、100万入力トークンあたり10ドル、100万出力トークンあたり50ドルで、1Mトークンのコンテキストウィンドウと128Kの最大出力を実行します。Opus 4.8には独自の料金体系と独自の動作プロファイルがあります。モデルの概要には、両方の現在の仕様が記載されています。Fable 5に合わせて調整したプロンプトは、Opus 4.8では異なる長さ、異なるフォーマット、または異なるツール呼び出しパターンを生成する可能性があります。

それが重要かどうかは、あなたのユースケースによります。

プログラムによるフォールバックの検出

信頼できるシグナルは、応答のmodelフィールドです。すべてのMessages API応答は、それを作成したモデルを名指しするため、claude-fable-5に送信されたリクエストがclaude-opus-4-8を返す場合、それはリルートされたことを意味します。これは標準的なMessages APIの動作であり、これを読み取るためにベータ機能は必要ありません。

同じログ行には、他に2つのフィールドが含まれます。stop_reasonは、リクエストが完全に拒否されたかどうかを示します。フォールバック処理なしで拒否されたリクエストは、stop_reason"refusal"に設定され、使用可能なコンテンツがないHTTP 200を返すため、response.contentを読み取る前に確認してください。そしてusageは、課金されたモデルにコストを帰属させるために必要なトークン数を提供します。

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=16000,
    messages=[{"role": "user", "content": prompt}],
)

if response.stop_reason == "refusal":
    # Declined with no fallback configured: no usable content came back
    handle_refusal(response)
elif not response.model.startswith("claude-fable-5"):
    logger.info(
        "fallback served_by=%s in=%d out=%d",
        response.model,
        response.usage.input_tokens,
        response.usage.output_tokens,
    )

APIをゼロから設定する場合は、Claude Fable 5 APIの使用方法に関するガイドから始め、最初の呼び出しが機能したらこのチェックを追加してください。

fallbacksパラメータ

フォールバック設定がない場合、拒否されたAPIリクエストは単純に停止します。あなたは拒否を受け取り、ユーザーは何も得られず、リトライロジックはあなたが記述することになります。fallbacksパラメータは、そのリトライをサーバー側に移動させます。Fable 5が拒否した場合、APIは同じ呼び出し内であなたが指定したモデルに対して同じリクエストを再実行し、そのモデルの応答を返します。

このパラメータは、Claude APIおよびAWS上のClaude Platformでベータ版として提供されており、Anthropicの拒否とフォールバックのページで文書化されています。ベータヘッダーでオプトインし、ローンチ時点ではサポートされるフォールバックターゲットはclaude-opus-4-8のみです。

response = client.beta.messages.create(
    model="claude-fable-5",
    max_tokens=16000,
    betas=["server-side-fallback-2026-06-01"],
    fallbacks=[{"model": "claude-opus-4-8"}],
    messages=[{"role": "user", "content": prompt}],
)

print(response.model)  # claude-opus-4-8 if the request was rerouted

課金は有利に働きます。出力が生成される前に拒否されたリクエストは一切課金されません。救済試行は、フォールバックモデル独自のレートで課金されます。検出方法は以前と同じで、response.modelが応答したモデルを特定します。

いくつかの注意点があります。このパラメータはBatches APIでは拒否され、Amazon Bedrock、Google Vertex AI、またはMicrosoft Foundryでは利用できません。これらのプラットフォームでは、クライアント側でリトライを処理する必要があります。また、フォールバックモデルも拒否した場合、最終応答にはstop_reason: "refusal"が含まれるため、フォールバックが有効な場合でも前のセクションの拒否ブランチを維持してください。

ハンドリングポリシーの設計

検出とリトライはメカニクスです。本当の決定は、フォールバックが発生したときにあなたの製品がどうするかであり、合理的なポリシーは3つあります。

どのポリシーを選択しても、フォールバック率を追跡してください。ゼロに近い率は、プラットフォーム全体のベースラインと一致します。数パーセントを超える率は、あなたのプロンプトがトリガー領域に触れていることを意味し、ボリュームが増える前にそれらを見直す価値があります。

本番環境投入前の拒否パスのテスト

フォールバック処理は、デモでは機能するものの、拒否が設計上まれであるため、6週間後に失敗する可能性のある種類のコードです。実際のユーザーが分類器をトリガーするのを待って、ロギング、リトライ、UIがすべて適切に動作するかどうかを確認することはできません。自分でそのパスを誘発する必要があります。

Apidogを使えば、これが現実的になります。Claude Messagesエンドポイントを一度定義し、APIキーを環境変数に保持し、少数のエッジケースプロンプトのスイートからテストシナリオを構築します。分類器のターゲットに近いセキュリティ関連および生物関連のプロンプトと、決してリルートされるべきではない良性のコントロールを含めます。そして、応答ボディでアサートします。各テストはmodelフィールド(コントロールはclaude-fable-5のままでしたか?エッジケースはclaude-opus-4-8から返ってきましたか?)とstop_reason(何かが完全に拒否されましたか?)をチェックします。

このシナリオをスケジュールで、またはCIで実行します。Anthropicが分類器を再学習した際(7月1日の再展開前のように)、あなたのスイートは、エッジケースがあなたのハンドリングコードの期待通りに動作するかどうかを1日以内に教えてくれます。これはApidogでの5分間のセットアップと、本番環境での静かな予期せぬ事態との違いです。

よくある質問

fallbacksパラメータは追加料金がかかりますか? いいえ。出力が生成される前に拒否されたリクエストは課金されません。フォールバックモデルが応答した場合、救済試行に対してそのモデルの通常のトークンあたりの料金が課金されます。同じ回答に対して二重に課金されることはありません。

セキュリティ関連のプロンプトは常にフォールバックをトリガーしますか? いいえ。分類器がターゲットとするのは、サイバーセキュリティ、生物学と化学、モデル蒸留における有害なリクエストであり、トピックそのものではありません。ほとんどのセキュリティエンジニアリング作業は影響を受けずに通過します。全セッションの95%以上ではフォールバックは発生しません。ただし、これらの領域の近くでは偽陽性が発生することがあり、それがパスをテストしレートを記録する理由です。

6月の一時停止中にFable 5の使用をやめました。戻っても安全ですか? はい。7月1日の再展開により、再学習された分類器が稼働しており、API表面は変更されていません。Fable 5 APIへの切り替えガイドでは、再度有効にする手順を説明しており、fallbacksパラメータは、多くのチームが復帰時に追加する要素です。

まとめ

Fable 5のリルートはインシデントではなく、設計上の決定であるため、コードでもそのように扱ってください。すべての呼び出しでresponse.modelをチェックし、フォールバックが有効な場合でも拒否ブランチを維持し、特別な理由がない限りfallbacksパラメータを有効にし、Opus 4.8が応答したときに製品がどうするかのポリシーを選択してください。そして、すべてのパスが機能することを証明してください。Apidogでエッジケーススイートを構築し、modelstop_reasonでアサートし、スケジュールで実行します。Apidogをダウンロードすれば、次回のデプロイ前に拒否スイートを実行できます。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる