Fehler

Alle Statuscodes, die das Gateway zurückgibt, ihre tatsächlichen Ursachen und die jeweilige Lösung.

Fehler geben JSON zurück, mit einem type und einem menschenlesbaren message. Die Statuscodes folgen den Konventionen von Anthropic und OpenAI.

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

Statuscodes

CodeBedeutungHäufigste tatsächliche UrsacheLösung
400Ungültige AnfrageFehlendes max_tokens bei Messages oder ein fehlerhaftes messages ArrayPrüfen Sie den Anfragekörper anhand von Messages
401Nicht authentifiziertDer Schlüssel wurde im falschen Header für das Format gesendetx-api-key für Messages, Bearer für Chat Completions
402Zahlung erforderlichGuthaben aufgebraucht oder Tarif abgelaufenGuthaben aufladen oder Tarif kaufen
403Zugriff verweigertSchlüssel widerrufen oder Modell für das Konto nicht freigeschaltetErstellen Sie einen neuen Schlüssel; prüfen Sie /v1/models
404Nicht gefundenFehler in der Basis-URL — meist ein doppeltes oder fehlendes /v1Siehe Basis-URLs
429Anfragelimit erreichtZu viele gleichzeitige AnfragenVerlängern Sie die Wartezeit exponentiell; siehe Anfragelimits
500Gateway-FehlerUnerwarteter interner FehlerVersuchen Sie es einmal erneut; falls der Fehler weiterhin auftritt, wenden Sie sich mit der Anfrage-ID an den Support
529Vorgelagerter Dienst überlastetKapazitätsengpass beim Anbieter, nicht bei Ihrem KontoWiederholen Sie die Anfrage mit zunehmender Wartezeit — der Engpass löst sich meist innerhalb von Sekunden

Fehlertypen

TypBedeutung
invalid_request_errorDer Anfragekörper ist fehlerhaft oder ein Pflichtfeld fehlt
authentication_errorSchlüssel fehlt, ist fehlerhaft oder wurde widerrufen
permission_errorDer Schlüssel ist gültig, darf dieses Modell aber nicht verwenden
not_found_errorUnbekannter Pfad oder unbekannte Modell-ID
rate_limit_errorGedrosselt
api_errorInterner Fehler
overloaded_errorKapazität des vorgelagerten Dienstes erschöpft

Anfragen richtig wiederholen

Wiederholungsversuch 429, 500, 502, 503 und 529. Wiederholen Sie niemals blind 400, 401, 402 oder 403 — dieselbe Anfrage schlägt auf die gleiche Weise fehl, und bei teilweise generierten Antworten zahlen Sie möglicherweise doppelt.

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")
Fügen Sie der Wartezeit im Produktionsbetrieb eine zufällige Variation hinzu. Synchronisierte Wiederholungsversuche vieler Worker machen aus einer kurzen Störung einen Anfragesturm auf denselben vorgelagerten Dienst.