0Pricing
AI Engineering Academy · Lektion

Fehlerbehandlung und Rate Limits

Sie behandeln häufige API-Fehler, darunter Ausnahmen wegen Rate Limits, Authentifizierungsfehler und Timeouts, mit Retry-Logik und Mustern für exponentielles Backoff.

Fehlerbehandlung und Rate Limits ist eine kostenlose AI Engineering Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Engineering Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Engineering Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum API-Fehler auftreten

Bei einem API-Aufruf kann vieles schiefgehen: Überlastung, ein niedriges Kontingent, ein unterbrochenes Netzwerk oder eine fehlerhafte Anfrage. Wenn Sie Aufrufe als unfehlbar behandeln, entsteht garantiert fragiler Code – lernen Sie zuerst die Fehlertypen kennen.

Überblick über OpenAI-Fehlertypen

Das SDK löst bestimmte Ausnahmen wie RateLimitError und AuthenticationError aus. Nur vorübergehende Fehler, etwa Ratenbegrenzungen und Netzwerkausfälle, sind einen erneuten Versuch wert – die übrigen beheben sich nicht von selbst.

Fehler mit Try-Except abfangen

Umschließen Sie jeden Aufruf mit try-except und fangen Sie spezifische Ausnahmen ab, nicht ein bloßes except. So können Sie auf jeden Fehler angemessen reagieren, anstatt Fehler zu verbergen. Der Code zeigt, wie es geht.

import openai

client = openai.OpenAI()

try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Hello!'}]
    )
    print(response.choices[0].message.content)
except openai.AuthenticationError as e:
    print('Bad API key. Check OPENAI_API_KEY environment variable.')
    raise  # do not retry
except openai.RateLimitError as e:
    print('Rate limited. Back off and retry.')
except openai.APIConnectionError as e:
    print('Network error:', e)
except openai.APIStatusError as e:
    print('Server error', e.status_code, e.message)

Ratenbegrenzungen verstehen

OpenAI setzt gleichzeitig zwei Ratenbegrenzungen durch: Anfragen pro Minute (RPM) und Tokens pro Minute (TPM). Ein einziger sehr großer Prompt kann Ihr TPM-Limit überschreiten. Beide führen zu einer 429.

Exponential Backoff: Die richtige Wiederholungsstrategie

Sie haben eine Ratenbegrenzung erreicht? Warten Sie und versuchen Sie es anschließend mit exponentialem Backoff: 1 s, 2 s, 4 s, wobei sich die Wartezeit jedes Mal verdoppelt. Fügen Sie etwas Jitter und eine maximale Anzahl von Versuchen hinzu, damit die Schleife nie endlos läuft. Sehen Sie sich den Code an.

import time
import random
import openai

client = openai.OpenAI()

def call_with_backoff(messages, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model='gpt-4o-mini',
                messages=messages
            )
        except openai.RateLimitError:
            if attempt == max_retries - 1:
                raise
            wait = (2 ** attempt) + random.uniform(0, 1)
            print(f'Rate limited. Waiting {wait:.1f}s (attempt {attempt+1})')
            time.sleep(wait)
        except (openai.APIConnectionError, openai.APIStatusError):
            if attempt == max_retries - 1:
                raise
            time.sleep(2 ** attempt)

Die Bibliothek tenacity verwenden

Implementieren Sie Wiederholungsversuche nicht selbst – die Bibliothek tenacity erledigt dies zuverlässig. Dekorieren Sie Ihre Funktion mit @retry; tenacity übernimmt Backoff, Jitter und die Bedingungen für Wiederholungsversuche.

from tenacity import retry, wait_random_exponential, stop_after_attempt
import openai

client = openai.OpenAI()

@retry(
    wait=wait_random_exponential(min=1, max=60),
    stop=stop_after_attempt(6)
)
def completion_with_backoff(**kwargs):
    return client.chat.completions.create(**kwargs)

response = completion_with_backoff(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Tell me a joke.'}]
)
print(response.choices[0].message.content)

Timeout konfigurieren

Eine hängen gebliebene Anfrage kann Ihre App dauerhaft blockieren. Legen Sie daher immer ein Timeout fest. Das SDK akzeptiert ein Timeout in Sekunden am Client oder pro Aufruf. Wählen Sie es passend zur erwarteten Antwortlänge.

import openai

# Set a default timeout for all requests from this client
client = openai.OpenAI(timeout=30.0)

# Or override per request
try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Summarize the French Revolution.'}],
        timeout=60.0
    )
except openai.APITimeoutError:
    print('Request timed out. Try a shorter prompt or increase timeout.')

Authentifizierungsfehler behandeln

Ein AuthenticationError (401) bedeutet, dass Ihr Schlüssel falsch, abgelaufen oder widerrufen ist – ein erneuter Versuch hilft nie. Protokollieren Sie den Fehler, lösen Sie eine Warnung aus und brechen Sie sofort ab, statt Ihr Wiederholungskontingent zu verbrauchen.

import os
import openai

api_key = os.environ.get('OPENAI_API_KEY')
if not api_key:
    raise EnvironmentError(
        'OPENAI_API_KEY not set. Export it before running.'
    )

client = openai.OpenAI(api_key=api_key)

try:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Hello'}]
    )
except openai.AuthenticationError:
    # Do NOT retry - the key itself is invalid
    raise RuntimeError('Invalid API key. Check OPENAI_API_KEY.')

Kontingent und Ratenbegrenzungen unterscheiden

Beide sehen wie RateLimitError aus, unterscheiden sich jedoch: Ratenbegrenzungen sind minutengenaue Drosselungen, die sich selbst zurücksetzen, während Kontingentgrenzen Ausgaben begrenzen und zusätzliche Credits erfordern.

Fehler zur Fehlersuche protokollieren

Protokollieren Sie in der Produktion jeden Fehler mit Kontext: Typ, Modell, Parameter, Token-Anzahl, Zeitpunkt und Request-ID. Genau diese Request-ID benötigt der OpenAI-Support. Sehen Sie sich den Code an.

import logging
import openai

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

client = openai.OpenAI()

def safe_completion(model, messages):
    try:
        response = client.chat.completions.create(
            model=model, messages=messages
        )
        return response
    except openai.RateLimitError as e:
        logger.warning(
            'Rate limit hit',
            extra={'model': model, 'error': str(e)}
        )
        raise
    except openai.APIStatusError as e:
        logger.error(
            'API server error',
            extra={
                'status_code': e.status_code,
                'request_id': e.request_id,
                'model': model
            }
        )
        raise

Fehlerbehandlung in Produktions-Apps

Eine solide Strategie für die Produktion: Bei nicht behebbaren Fehlern sofort abbrechen, vorübergehende Fehler mit Backoff erneut versuchen und angemessene Fallbacks bereitstellen. Lassen Sie niemals zu, dass ein einzelner API-Fehler Ihren gesamten Server zum Absturz bringt.

Kurze Überprüfung

Testen Sie Ihr Verständnis der AI-Engineering-Konzepte aus dieser Lektion.

Zusammenfassung der Lektion

Sie haben gelernt, mit Fehlern umzugehen: OpenAI löst spezifische Ausnahmen aus, Ratenbegrenzungen erfordern Backoff mit Jitter und Authentifizierungsfehler sollten zum sofortigen Abbruch führen. Als Nächstes: leistungsstarke Prompts schreiben.

Häufig gestellte Fragen

Ist die Lektion „Fehlerbehandlung und Rate Limits“ kostenlos?

Ja — der vollständige Text von „Fehlerbehandlung und Rate Limits“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Engineering Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Engineering Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Fehlerbehandlung und Rate Limits“?

Sie behandeln häufige API-Fehler, darunter Ausnahmen wegen Rate Limits, Authentifizierungsfehler und Timeouts, mit Retry-Logik und Mustern für exponentielles Backoff. Du übst AI Engineering Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Engineering Academy zu starten?

Keine Vorkenntnisse erforderlich. AI Engineering Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Fehlerbehandlung und Rate Limits“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Engineering Academy-Lektion Code schreiben und ausführen?

Ja. Jede AI Engineering Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ihre Python-Umgebung einrichten
  2. Der Chat-Completions-Endpunkt
  3. Das Modellverhalten mit Parametern steuern
  4. Fehlerbehandlung und Rate Limits
← Zurück zu AI Engineering Academy