エラー

ゲートウェイが返すすべてのステータスコードと、その実際の原因、対処法。

エラーでは、次の要素を含む JSON が返されます: type および人間が読める形式の message。ステータスコードは Anthropic と OpenAI の慣例に従います。

{"type": "error", "error": {"type": "authentication_error", "message": "invalid api key"}}

ステータスコード

コード意味実際によくある原因対処方法
400不正なリクエスト欠落している項目: max_tokens (Messages の場合)、または形式が不正な messages 配列本文を次の内容と照合してください: Messages
401未認証形式に合わないヘッダーでキーを送信しているx-api-key を Messages に使用し、Chat Completions には Bearer を使用します
402支払いが必要残高不足、またはプランの有効期限切れチャージ または プランを購入
403アクセス禁止キーが失効している、またはアカウントでモデルが有効になっていない新しいキーを作成し、次を確認してください: /v1/models
404見つかりませんベース URL の誤り — 通常は次の部分の重複または欠落: /v1参照: ベースURL
429レート制限同時リクエストが多すぎる指数バックオフを適用してください。参照: レート制限
500ゲートウェイエラー予期しない内部障害一度再試行し、問題が続く場合はリクエスト ID を添えてサポートにお問い合わせください
529上流サービスの過負荷アカウントではなく、プロバイダー側の処理能力が原因バックオフを適用して再試行してください — 通常は数秒で解消します

エラーの種類

種類意味
invalid_request_error本文の形式が不正、または必須フィールドが欠落している
authentication_errorキーが欠落している、形式が不正、または失効している
permission_errorキーは有効だが、そのモデルの使用が許可されていない
not_found_error不明なパス、または不明なモデル ID
rate_limit_errorリクエストが制限されている
api_error内部障害
overloaded_error上流サービスの処理能力が限界に達している

適切な再試行

再試行 429, 500, 502, 503 と 529。無条件に再試行しないでください。対象: 400, 401, 402 または 403 — 同じリクエストは同じように失敗し、応答が途中まで生成されている場合は、二重に課金される可能性があります。

import time, httpx

def call(body, key, tries=4):
    for i in range(tries):
        r = httpx.post(class="s">"https://aiprimetech.io/v1/messages", json=body, timeout=120,
                       headers={class="s">"x-api-key": key,
                                class="s">"anthropic-version": class="s">"2023-06-01"})
        if r.status_code in (429, 500, 502, 503, 529):
            time.sleep(2 ** i)          class=class="s">"c"># 1s, 2s, 4s, 8s
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError(class="s">"upstream unavailable after retries")
本番環境では、待機時間にジッターを加えてください。多数のワーカーが同時に再試行すると、一時的な障害が、同じ上流サービスにリクエストが殺到する事態に発展します。