メインコンテンツへスキップ
このページでは、管理者が Claude Code 用の LLM ゲートウェイをロールアウトする手順を説明します。ゲートウェイ要件を満たすゲートウェイ製品がデプロイされていることを前提としています。特定の製品のデプロイまたは運用はここでは説明しません。ベンダーのドキュメントに従って、お客様のゲートウェイをデプロイしてください。

前提条件

ロールアウトを完了するには、以下が必要です。
  • インフラストラクチャにデプロイされたゲートウェイ。HTTPS で開発者に配布する正確なアドレスで提供され、リダイレクト先のアドレスではなく、Claude モデル名をプロバイダーにルーティングするように設定されている
  • ゲートウェイが転送するプロバイダー認証情報。以下のいずれか。
  • 開発者マシンに設定ファイルを配信する方法。MDM または設定管理など

ゲートウェイ要件

ゲートウェイを提供する製品がどれであれ、以下を満たす必要があります。
  • サポートされている API 形式を受け入れるAPI 形式テーブルの形式のいずれか。以下のロールアウト手順は、ほとんどのゲートウェイが提供する POST /v1/messages の Anthropic Messages API を想定しています
  • レスポンスをストリーミングする:サーバー送信イベントをバッファリングせずに到着時に通す
  • Claude モデル名をルーティングする:開発者が使用する各名前をアップストリームモデルにマップする。Claude Code は各リクエストで claude-sonnet-4-6 などのモデル名を送信します。ほとんどのゲートウェイ製品では、マッピングはゲートウェイ自体の設定内のモデルリストまたはルーティングテーブルです
  • ヘッダーと本文を変更せずに転送するanthropic-betaanthropic-version、およびリクエスト本文を両方向で通す。機能パススルーテーブルは各機能をそれなしで破損するものにマップします
  • アップストリームエラーを変更せずに返す:Claude Code の自動復旧はエラーの文言に一致するため、ゲートウェイ独自のエンベロープでエラーをラップすると破損します
  • リクエスト本文 WAF 検査からパスを除外する:Claude Code プロンプトはソースコードと XML スタイルのタグを含み、クロスサイトスクリプティング本文ルールに一致します。ゲートウェイの前の WAF は実際のセッションで 403 を返しますが、短いテストリクエストは通ります
オプションで、GET /v1/models を提供して、Claude Code が モデル検出でゲートウェイからモデルピッカーを入力できるようにします。

ロールアウト手順

ロールアウトは 5 つのステップで構成され、各ステップにはチェックポイントがあります。
  1. ゲートウェイがモデルをルーティングすることを確認する
  2. 各開発者に認証情報を発行する
  3. ゲートウェイに対して Claude Code をテストする
  4. ベース URL と認証情報を配布する
  5. 開発者マシンから検証する
ステップには 3 つの異なる認証情報が関係し、チェックポイントはプレースホルダーで名前を付けるため、何か失敗したときにどれが原因かを判断できます。
認証情報保有者チェックポイント内のプレースホルダー
プロバイダー認証情報ゲートウェイ。アップストリームプロバイダーに転送しますゲートウェイで設定。クライアントコマンドには表示されません
ゲートウェイ管理認証情報お客様。ゲートウェイ製品が管理またはテストインターフェース用に発行する場合<gateway-key>
開発者キー各開発者。開発者認証情報を発行するでゲートウェイが発行<developer-key>

ゲートウェイがモデルをルーティングすることを確認する

ゲートウェイはすでにプロバイダー認証情報で設定され、ベース URL でリッスンし、プロバイダーの API にリクエストを転送している必要があります。デプロイから 2 つの値を置き換えて、最小限のリクエストでパスが端から端まで機能することをテストします。
  • <gateway-key> は、現在ゲートウェイを呼び出すことができる認証情報です。管理キー、テストキー、またはすでに発行した独自の開発者キー。すべてのゲートウェイ製品に個別の管理認証情報があるわけではありません。ない場合は、まず 開発者認証情報を発行するで自分用の開発者キーを発行してください
  • model はゲートウェイがルーティングするように設定されている Claude モデル名です。例では claude-sonnet-4-6 を使用しています。設定した名前に置き換えてください
curl -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <gateway-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
チェックポイントcontent フィールドを持つ 200 は、ゲートウェイがそのモデル名でプロバイダーに到達したことを意味します。404 はその名前がゲートウェイでルーティングされていないことを意味します。プロバイダーからの 401 はゲートウェイのプロバイダー認証情報が間違っていることを意味します。 ゲートウェイのルーティング設定内の Claude モデル名ごとに 1 回リクエストを繰り返します。ゲートウェイがルーティングしない名前は、それを選択した開発者に 404 を返すため、ロールアウト前にすべての名前をテストしてください。
ゲートウェイをリダイレクトの背後で提供することは避けてください。リダイレクトはリクエスト本文をドロップするか、推論リクエストで認証情報ヘッダーをストリップでき、モデル検出はリダイレクトを失敗として扱うため、認証情報がリダイレクト先にリークする可能性があります。

開発者認証情報を発行する

各開発者はゲートウェイで認証するために独自のゲートウェイキーが必要です。製品の認証情報管理ドキュメントに従って、ゲートウェイで開発者ごとに認証情報を作成します。 新しく発行されたキーが ゲートウェイがモデルをルーティングすることを確認すると同じリクエストでゲートウェイに対して機能することを確認し、<gateway-key> を新しい <developer-key> に置き換えます。
curl -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <developer-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
チェックポイントcontent フィールドを持つ 200 は、開発者キーがゲートウェイに到達し、ゲートウェイが転送することを意味します。前のステップが成功したときにここで 401 が表示される場合は、開発者キーが間違っているか、ゲートウェイでまだ有効になっていないことを意味します。 開発者ごとに 1 つのキーを発行することは、共有キーではなく、開発者ごとの使用状況の属性化と個別のオフボーディングを機能させるものです。キーを保持する環境変数は、ゲートウェイがどのヘッダーを読むかによって異なります。Authorization: Bearer ヘッダーで認証情報をチェックするゲートウェイの場合、開発者は ANTHROPIC_AUTH_TOKEN でキーを設定します。x-api-key ヘッダーからキーを読むゲートウェイの場合、開発者は代わりに ANTHROPIC_API_KEY を設定します。認証情報テーブルはマッピングをカバーしています。

ゲートウェイに対して Claude Code をテストする

ロールアウトが配布する前に、同じ設定を使用してゲートウェイを通じて Claude Code を自分で実行します。これらを .env または設定ファイルではなく、ターミナルに直接入力します。これらはこのターミナルセッションのみ続くため、閉じるとマシンは通常の設定に戻ります。ゲートウェイが x-api-key ヘッダーを読む場合は、ANTHROPIC_AUTH_TOKEN の代わりに ANTHROPIC_API_KEY を使用します。
export ANTHROPIC_BASE_URL=https://llm-gateway.example.com
export ANTHROPIC_AUTH_TOKEN="<developer-key>"
次に、ゲートウェイを通じてワンショットプロンプトを送信します。
claude -p "Reply with one word: connected"
チェックポイント:プロンプトはレスポンスを返し、リクエストはゲートウェイのログに /v1/messages パスへの POST として状態 200 で表示されます。Claude Code は ?beta=true などのクエリ文字列を追加するため、完全な URL ではなくパスで一致させます。 2 つの失敗メッセージは異なる方向を指します。
  • Not logged in:ゲートウェイログをチェックして 2 つの原因を区別します。空の場合、認証情報がセッションに到達せず、リクエストがマシンを離れません。テストしているシェルでエクスポートを再実行してください。401 本文に x-api-key を示す拒否されたリクエストが表示される場合、ゲートウェイはそのヘッダーでキーを期待しています。ANTHROPIC_API_KEY に切り替えてください
  • Failed to authenticate. API Error: 401 は認証情報が送信され、拒否されたことを意味し、ゲートウェイログはどこかを示します。api.anthropic.com またはプロバイダーのエンドポイントに名前を付ける 401 は、ゲートウェイがアップストリームに到達したが、保持するプロバイダー認証情報が拒否されたことを意味するため、開発者キーは機能し、ゲートウェイが保持するプロバイダー認証情報が間違っているか、プレースホルダーです
間違っているか到達不可能なベース URL は異なる症状を生成します。Claude Code は バックオフで接続を再試行し、エラーを報告する前に数分間出力なしで待機できます。コマンドがハングしているように見える場合は、待つ代わりにゲートウェイログをチェックしてください。到着するリクエストがないことは、ANTHROPIC_BASE_URL がゲートウェイを指していないことを意味します。

設定を配布する

すべての開発者マシンにはゲートウェイアドレスと認証情報が必要です。マネージド設定を通じて中央から配布できるため、開発者は何も設定しないか、開発者に値を手動で設定させます。

配布する内容

どのパスを選択するかに関わらず、同じ変数セットが適用されます。ほとんどのロールアウトは ANTHROPIC_BASE_URL と認証情報のみが必要です。ゲートウェイセットアップが必要とする場合は、条件付き行を含めます。
変数または設定機能含める場合
ANTHROPIC_BASE_URLClaude Code の API リクエストを api.anthropic.com の代わりにゲートウェイに送信します常に
apiKeyHelper、または ANTHROPIC_AUTH_TOKEN または ANTHROPIC_API_KEY の認証情報ゲートウェイへの各リクエストを認証します。ヘルパーはキーを取得するコマンドを実行します。変数は静的キーを保持し、Authorization: Bearer および x-api-key としてそれぞれ送信されます常に。3 つのうち 1 つ
ANTHROPIC_CUSTOM_HEADERSすべての API リクエストに追加の HTTP ヘッダーを追加しますゲートウェイがすべてのリクエストでテナントまたはルーティングヘッダーを必要とする場合
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY起動時にゲートウェイの /v1/models をクエリし、返された名前を /model ピッカーに追加しますゲートウェイが /v1/models を提供し、開発者のピッカーをそこから入力したい場合
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASClaude Code がプリリリース機能ヘッダーと本文フィールドを送信するのを停止しますゲートウェイが Bedrock または Vertex アップストリームに転送し、ベータフィールドを拒否する場合。ゲートウェイ要件を参照してください
ANTHROPIC_MODEL または ANTHROPIC_DEFAULT_HAIKU_MODELClaude Code がメインセッションとバックグラウンドトラフィックに要求するモデル名を設定しますゲートウェイが Claude Code のデフォルトと一致しないモデル名をルーティングするか、バックグラウンド機能を別のモデルにルーティングする場合。オーバーライド名と Claude Code のデフォルト名の両方をゲートウェイでルーティングします。一部のサブコールはオーバーライドに関わらずデフォルト名をリクエストできるため
ANTHROPIC_BEDROCK_BASE_URLANTHROPIC_VERTEX_BASE_URLANTHROPIC_FOUNDRY_BASE_URL、または ANTHROPIC_AWS_BASE_URLそのプロバイダーの変数Claude Code をプロバイダー固有のベース URL を通じてゲートウェイに指します。Bedrock と Vertex はそれらのプロバイダーのネイティブリクエスト形式にも切り替わりますゲートウェイが Bedrock、Vertex、Foundry、または AWS 上の Claude Platform の前にある場合。API 形式を参照してください

マネージド設定を通じて配布する

マネージド設定ファイルenv ブロックを通じて変数を配信し、MDM、レジストリポリシー、または設定管理によってプッシュします。
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://llm-gateway.example.com"
  },
  "apiKeyHelper": "/usr/local/bin/get-gateway-key"
}
テーブルから条件付き変数を同じ env ブロックに追加します。マネージド ANTHROPIC_BASE_URL は強制され、Claude Code がプロセス環境と低優先度の設定の上に適用するため、開発者のシェルエクスポートでオーバーライドできません。 マネージド設定にゲートウェイ認証情報と一緒に forceLoginMethod または forceLoginOrgUUID を含めないでください。Claude Code v2.1.146 以降では、どちらのキーも起動時に ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN、および apiKeyHelper をブロックするため、開発者は This machine's managed settings require a first-party login を見て進むことができません。 サーバー管理設定配信には api.anthropic.com への直接接続が必要なため、ゲートウェイルーティングセッションに到達しません。ゲートウェイデプロイメントはこのファイルベースのマネージド設定パスを使用し、同じキーを強制します。 認証情報については、上記のように、マネージド設定ファイルで 1 つの apiKeyHelper コマンドを配布します。コマンドはローカル開発者としてシークレットストアに認証するため、各マシンは独自のキーを受け取ります。または、既存のシークレットプロセスを通じて各開発者にキーを配信し、ANTHROPIC_AUTH_TOKEN を自分で設定させます。 一部の環境には個別の配信が必要です。

開発者に値を自分で設定させる

マネージド設定配布が設定されていない場合は、各開発者に 接続ページに従うために必要なものを送信します。
  • ゲートウェイ URL
  • 個人認証情報
  • 認証情報を入れる変数:ベアラートークンゲートウェイの場合は ANTHROPIC_AUTH_TOKENx-api-key ゲートウェイの場合は ANTHROPIC_API_KEY。開発者にどちらかを伝えることで、接続ページで説明されている試行錯誤を節約できます
  • 配布する内容テーブルからの条件付き変数。その値を含む
接続ページは開発者に各変数の設定を説明します。 チェックポイント:開発者マシンで、claude はログイン画面を表示せずにセッションを開始します。配布された認証情報が認証を満たすため。次に /status を実行し、Status タブを開きます。Anthropic base URL 行はゲートウェイアドレスを表示し、マネージド配布の場合、Setting sources 行にはマネージド設定が含まれます。ログイン画面、または欠落している Anthropic base URL 行は、設定がマシンに到達しなかったことを意味します。

ロールアウトを検証する

ゲートウェイホストではなく開発者マシンからすべてが機能することを確認し、テストが開発者が使用するネットワークパスをカバーするようにします。ストリーミングリクエストを送信します。これはエンドポイント、ストリーミングパススルー、およびモデルルーティングを一度にチェックします。
curl -N -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <developer-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 16, "stream": true, "messages": [{"role": "user", "content": "count to 3"}]}'
data: 行が段階的に到着するのが見えるはずです。一時停止後に全レスポンスが一度に到着することは、ゲートウェイがバッファリングしていることを意味し、Claude Code をスタールさせます。404 はモデル名がルーティングされていないことを意味します。モデル名ごとに繰り返します。 次に claude を開始し、メッセージを送信します。このステップでの各症状には 1 つの原因があります。
  • ログインプロンプトは認証情報ギャップを意味します。/status を実行し、Status タブを開きます。Setting sources 行にマネージド設定が含まれていない場合、配布がマシンに到達しませんでした。含まれている場合、開発者認証情報が配布されなかったため、ANTHROPIC_AUTH_TOKEN または apiKeyHelper を設定します
  • Failed to authenticate エラーはゲートウェイがリクエストを拒否していることを意味します。そのログは、どの認証情報が失敗したかを示します。ゲートウェイ自体がログする拒否は開発者キーに名前を付けますが、api.anthropic.com またはプロバイダーのエンドポイントからの 401 は、ゲートウェイが保持するプロバイダー認証情報が拒否されたことを意味します
  • ゲートウェイが x-api-key ヘッダーでキーを期待する場合、ANTHROPIC_API_KEY として設定されたときの 1 回限りの承認プロンプトは予想されます。ANTHROPIC_AUTH_TOKEN では、プロンプトは表示されず、変数は静かに引き継ぎます。以前に保存された claude.ai ログインはそのセッションでは非アクティブです
最後に、送信したメッセージのゲートウェイログをチェックします。認証情報は開発者を識別し、x-claude-code-session-id ヘッダーはセッション別にリクエストをグループ化します。機能が トラブルシューティング症状で失敗する場合、ゲートウェイはヘッダーをストリップするか、エラーを書き直しています。上記の ゲートウェイ要件を参照してください。

ゲートウェイを維持する

ロールアウト後、3 種類の変更が時間とともにゲートウェイに到達します。各変更には、監視する症状と実行するアクションがあります。
変更ゲートウェイが追いついていない場合の症状アクション
新しい Claude Code リリースは anthropic-beta 値とリクエスト本文フィールドを追加します開発者は Claude Code を更新した後、新しいフィールドに名前を付ける 400 エラーを報告します。機能パススルーを参照してくださいanthropic-* ヘッダーとリクエスト本文を許可リストではなく逐語的に転送します。新しい Claude Code リリースを開発者に到達する前にゲートウェイに対してテストします
新しい Claude モデルが利用可能になります開発者が新しいモデル名を選択すると 404 が表示されます。/model ピッカーはそれをリストしませんモデル名をゲートウェイのルーティング設定に追加し、ルーティングチェックを再実行します。ANTHROPIC_MODEL またはデフォルトモデル変数を配布する場合は、マネージド設定を更新します
認証情報の有効期限が切れるか、ローテーションが必要ですすべての開発者リクエストがアップストリームからの 401 で失敗し始めますゲートウェイのプロバイダー認証情報を独自のスケジュールでローテーションします。開発者キーはゲートウェイでローテーションし、apiKeyHelperは設定を再配布せずに開発者ごとのローテーションを処理します
キーごとのレート制限をサイズ設定するときは、クライアント 一時的な障害を再試行することを考慮に入れます。429 レスポンスを含め、バックオフで最大 10 回、Retry-After を尊重します。プロトコルリファレンスを各 Claude Code リリースが送信する内容の契約として保持します。