Claude APIAnthropic の機能

FEATURE

fallbacks parameter

Claude API では、安全分類器がリクエストを拒否すると、エラーではなく stop_reason: "refusal" の付いた通常のレスポンスが返ります。

プレビュー・先行提供公式発表と照合済み
初出未調査
ページ更新
提供状態プレビュー・先行提供
公式の記載で確認できた環境API、クラウド基盤経由
提供を確認できたプラン公式に記載なし
目次 CONTENTS
  1. できること
  2. 機能解説
  3. 使い方
  4. 利用シーン
  5. ChatGPT・OpenAI の対応する機能
  6. これまでの変更
  7. 関連する機能
  8. 出典
CAN DO

できること

POINT 01

拒否を別モデルで再実行

fallbacks を "default" にすると、拒否されたリクエストを拒否カテゴリごとに Anthropic が推奨するフォールバック先モデルで、同じ API 呼び出しの中で再実行します。推奨先が無いカテゴリでは拒否のまま返ります。

POINT 02

再実行先を自分で指定

fallbacks には最大 3 つのモデルのリストも指定でき、拒否されると次のモデルが同じリクエストを実行します。各エントリーでは、その試行に限って max_tokens・thinking・output_config・speed を上書きできます。

POINT 03

応答したモデルの確認

レスポンス最上位の model フィールドに、返されたメッセージを生成したモデルが入ります。usage.iterations にはすべての試行が記録され、応答したモデルは fallback_message エントリーとして現れます。

GUIDE

機能解説

概要

通常は、同じリクエストを別の Claude モデルに送ると回答を得られます。fallbacks parameter (拒否時フォールバック) は、拒否されたリクエストを 1 回の API 呼び出しの中で別のモデルに再実行させる仕組みです。拒否が返る可能性のあるリクエストを扱うアプリケーションの設計に関わります。

安全分類器がリクエストを拒否した場合、レスポンスはエラーではなく通常の形で返り、stop_reason が "refusal" になります。Server-side fallback (サーバーサイドフォールバック) は、こうして拒否されたリクエストを 1 回の API 呼び出しの中で再実行します。

再実行のきっかけになるのは安全分類器による拒否だけです。要求したモデルで発生したレート制限・過負荷・サーバーエラーは、そのまま返ります。また、リストで指定したフォールバック先のモデルがレート制限や過負荷の状態にある場合、その試行は行われず、直前の拒否が返ります。

Claude Haiku 5.5 には Server-side fallback がありません。fallbacks: "default" を指定しても拒否は拒否のまま返り、フォールバック先モデルのリストを指定すると 400 エラーが返ります。

fallbacks パラメーターはオプトインで、Claude API と Claude Platform on AWS でベータとして提供されています。Message Batches API ではサポートされません。対象プランは公式のリリースノートには記載がありません。

応答の内容とストリーミング

  • レスポンス最上位の model フィールドは、要求したモデルかフォールバック先かにかかわらず、返されたメッセージを生成したモデルを示します。
  • content の中では、fallback コンテンツブロックが、あるモデルの出力から次のモデルの出力に切り替わる位置を示します。
  • usage.iterations 配列にはすべての試行が記録されます。拒否したモデルは通常の message エントリー、応答したモデルは fallback_message エントリーとして現れます。
  • ストリーミングのリクエストでは、再実行は同じストリーム上で行われ、受信済みの内容は無効になりません。出力の途中で拒否された場合、フォールバック先モデルは途中までの出力から続けます。
  • ストリーミングでないリクエストで出力の途中に拒否された場合、レスポンスには拒否したモデルの途中までの出力が含まれず、フォールバック先モデルはその出力を文脈として使わずに回答します。

会話の継続と SDK ミドルウェア

Sticky routing (スティッキールーティング) により、フォールバックが起きた会話の以降のリクエストで fallbacks を含めると、要求したモデルを実行せずに直接そのフォールバック先モデルへ送られます。この判断は約 1 時間保持され、組織の範囲で適用されます。

サーバー側の仕組みとは別に、SDK の refusal-fallback ミドルウェアを使うクライアント側のフォールバックもあります。

  • BetaRefusalFallbackMiddleware (TypeScript では betaRefusalFallbackMiddleware()、Go では betafallback.BetaRefusalFallbackMiddleware()、C# では BetaRefusalFallbackHandler、Java では BetaRefusalFallbackInterceptor、PHP では RefusalFallbackMiddleware) をクライアントのコンストラクターに渡し、1 つの会話のリクエスト間で 1 つの BetaFallbackState インスタンスを共有します。
  • 設定後は、client.beta.messages を通した呼び出しで、拒否されたリクエストがプラットフォームを問わず自動で再実行されます。
  • ミドルウェアは、処理するすべてのリクエストに fallback-credit-2026-07-01 ベータヘッダーを付けます。
  • リストのすべてのモデルが拒否した場合、エラーを発生させずに最後の拒否レスポンスを返します。
  • 受け入れたモデルは BetaFallbackState に記録され、同じ状態を共有する後続のリクエストはそのモデルに固定されます。
  • ミドルウェアとサーバー側の fallbacks パラメーターは、同じリクエストで両方を設定せず、どちらか一方だけを使います。

手動での再実行と Message Batches

自分で再実行を書く場合は、レスポンスに stop_reason: "refusal" があるかを確認し、model をフォールバック先モデル (例: Claude Opus 4.8) にした同じリクエストを送ります。複数ターンの会話では、元のモデルに戻さず、以降のターンもフォールバック先モデルを使い続けます。

fallbacks パラメーターは Message Batches API ではサポートされないため、バッチでは次の流れで扱います。

  1. バッチの結果から拒否された項目を集めます。
  2. 複数ターンの履歴に含まれる thinking ブロックは、そのまま残すか、入力トークンを節約するために取り除きます。
  3. 拒否された項目が thinking: {"type": "between_tools"} を送っていた場合は、thinking を省くか、フォールバック先モデルが受け付ける値にします。
  4. 拒否された項目を、フォールバック先モデルで新しいバッチまたは直接のリクエストとして再送信します。
HOW TO USE

使い方

fallbacks パラメーターはベータとして提供されており、"default" モードの利用には server-side-fallback-2026-07-01 ベータヘッダーが必要です。

  1. リクエストで fallbacks パラメーターに文字列 "default" を設定し、server-side-fallback-2026-07-01 ベータヘッダーを付けて送信します。
  2. 拒否されたリクエストにどのモデルが応答したかを確かめるには、レスポンス最上位の model フィールドを確認し、usage.iterations に fallback_message エントリーがあるかを見ます。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

拒否が返ったリクエストを、アプリケーション側に再試行の処理を書かずに別モデルへ回したい API 連携に向いています。

CASE 02

どのモデルが回答を生成したかを記録・確認したい運用に使えます。model フィールドと usage.iterations で応答したモデルを判別できます。

CASE 03

複数ターンの対話アプリケーションで、フォールバック後の会話を同じモデルで続けたい場面に向いています。

CASE 04

Message Batches で処理した結果のうち、拒否された項目だけを別モデルで再処理する場面に使えます。

COMPARISON

ChatGPT・OpenAI の対応する機能

比較の単位となる業務: モデル拒否時のリクエストの別モデルでの自動再実行と拒否理由の把握

拒否やモデレーションの把握の仕方に違いがあります。Claude API では、安全分類器が拒否するとエラーではなく stop_reason: "refusal" の付いた通常のレスポンスが返り、stop_details フィールドで category (cyber、bio、または null) と人が読める説明を受け取れます。

Responses API では、生成リクエストに moderation オブジェクトを渡すと、モデルの入力と生成出力の両方のモデレーション結果を同じレスポンスで受け取れます。

TIMELINE

これまでの変更

  1. stop_details.category が "bio"、"frontier_llm"、"reasoning_extraction" の場合、出力前の拒否に対する課金が再開されました。その他のカテゴリの出力前の拒否は引き続き課金されず、フォールバッククレジットは変わりません。

  2. fallbacks パラメーターが "default" モードに対応し、拒否カテゴリごとに Anthropic 推奨のフォールバックモデルを適用します。"default" モードには server-side-fallback-2026-07-01 ベータヘッダーが必要です。Server-side fallback はベータです。

  3. オプトインの fallbacks パラメーターが Claude API と Claude Platform on AWS でベータとして提供されました (Message Batches API は非対応)。拒否されたリクエストを別のモデルで再実行し、フォールバック先モデルの料金で課金されます。出力が生成される前に拒否されたリクエストは課金されません。

  4. Claude API で、Claude が何も出力を生成せずに stop_reason: "refusal" を返したリクエストは課金されなくなりました。

  5. 拒否レスポンスの stop_details フィールドが公開ドキュメント化されました。category (cyber、bio、または null) と人が読める説明を返します。

SOURCES

出典

出典 7 件を表示