AI Development · Level 1 · Grundlagen

Ihr erster LLM-API-Aufruf, Schritt für Schritt

API-Schlüssel anlegen und sicher speichern, die erste Anfrage an ein Sprachmodell senden, die Antwort lesen und Fehler behandeln – mit Python-Code.

Von 8 Min. Lesezeit
API-Schlüssel anlegen und sicher speichern, die erste Anfrage an ein Sprachmodell senden, die Antwort lesen und Fehler behandeln – mit Python-Code.

Chat-Apps sind der einfachste Weg, ein großes Sprachmodell zu nutzen. Sobald KI aber in Ihrer eigenen Software arbeiten soll — in einem Support-Formular, einem Berichtsgenerator oder einem kleinen internen Tool —, muss Ihr Programm direkt mit dem Modell sprechen: über seine API (Application Programming Interface, eine Programmierschnittstelle). Ihr Code schickt eine Anfrage, und die Antwort kommt als Daten zurück, mit denen Ihr Programm weiterarbeiten kann.

Dies ist Teil 1 von Level 1 unseres Lernpfads AI Development. Sie legen einen API-Schlüssel an, speichern ihn sicher, senden eine erste Anfrage mit Python, lesen die Antwort und behandeln Fehler. Wenn Tokens und Kontextfenster für Sie neu sind, lesen Sie zuerst APIs, Tokens und Kontextfenster erklärt aus Level 0.

Was bei einem API-Aufruf passiert

Ein API-Aufruf ist ein kurzer Austausch zwischen zwei Programmen über das Internet. Ihr Programm schickt eine Anfrage (Request) an eine feste Webadresse, den Endpunkt (Endpoint). Der Server des Anbieters prüft Ihren Schlüssel und Ihre Limits, gibt Ihre Nachrichten an das Modell weiter und sendet eine Antwort (Response) zurück. Anfrage und Antwort sind in JSON geschrieben, einem einfachen Textformat aus Namen und Werten, das fast jede Programmiersprache lesen kann.

Sequenzdiagramm: Ihr Code schickt eine Anfrage mit Schlüssel, Modell und Nachrichten; die API des Anbieters prüft Schlüssel und Limits und leitet die Nachrichten weiter; das Modell erzeugt die Antwort; die Antwort mit Text, Stoppgrund und Token-Verbrauch kommt zu Ihrem Code zurück
Ein API-Aufruf in fünf Schritten: Anfrage hin, Prüfung beim Anbieter, Antwort zurück.

Bei einer typischen Chat-API erinnert sich das Modell nicht an frühere Aufrufe. Jede Anfrage muss alles enthalten, was das Modell braucht: die Anweisungen, die Frage und in einem Gespräch die früheren Nachrichten, auf die es ankommt. Das klingt nach Mehrarbeit, macht Ihre App aber berechenbar: Das Modell sieht genau das, was Sie schicken.

Schritt 1: API-Schlüssel anlegen und aus dem Code heraushalten

Ein API-Schlüssel (API Key) ist eine lange geheime Zeichenfolge, die Sie gegenüber dem Anbieter ausweist. Jede Anfrage mit Ihrem Schlüssel wird Ihrem Konto berechnet — behandeln Sie ihn wie ein Passwort.

  1. Öffnen Sie die Entwicklerkonsole eines Modellanbieters, legen Sie ein Konto an und richten Sie die Abrechnung ein.
  2. Erstellen Sie einen neuen Schlüssel mit einem klaren Namen wie „faq-bot-dev“, damit Sie später wissen, wo er verwendet wird.
  3. Kopieren Sie den Schlüssel sofort. Viele Konsolen zeigen ihn nur ein einziges Mal.
  4. Speichern Sie ihn in einer Umgebungsvariable: einem benannten Wert, der in Ihrem System oder in den Einstellungen Ihres Hostings liegt — nicht im Quellcode.

Unter macOS oder Linux setzen Sie die Variable für die aktuelle Terminal-Sitzung so:

export LLM_API_KEY="hier-den-schluessel-einfuegen"

Unter Windows in der PowerShell:

$env:LLM_API_KEY = "hier-den-schluessel-einfuegen"

In Projekten legen viele Entwickler Schlüssel in einer lokalen Datei namens .env ab und laden sie mit einer kleinen Bibliothek. Tragen Sie .env in Ihre .gitignore-Datei ein, damit der Schlüssel nie in der Versionsverwaltung landet.

Schritt 2: Die Anfrage zusammenbauen

Eine Anfrage hat drei Teile: wohin sie geht, wer sie schickt und was sie verlangt.

Kommentierte Anfrage: die Adresse des Endpunkts, der Authorization-Header mit dem API-Schlüssel aus einer Umgebungsvariable, der Modellname, die Nachrichten mit den Rollen system und user sowie die Einstellungen temperature und max tokens
Die Teile einer typischen Chat-Anfrage. Die Feldnamen unterscheiden sich je nach Anbieter leicht.

  • Endpunkt und Methode. Die Webadresse steht in der Dokumentation des Anbieters. Daten senden Sie mit der HTTP-Methode POST.
  • Header. Zusatzzeilen, die mit der Anfrage reisen: Ihr API-Schlüssel und der Inhaltstyp application/json. Viele Anbieter erwarten den Schlüssel als Authorization: Bearer …, andere in einem Header mit anderem Namen.
  • Body. Das JSON mit Modell, Nachrichten und Einstellungen.

Jede Nachricht hat eine Rolle. Die System-Nachricht enthält Regeln für das ganze Gespräch. User-Nachrichten enthalten die Eingabe. Assistant-Nachrichten enthalten frühere Antworten des Modells. Teil 2 dieses Levels, Prompt-Design für Entwickler, zeigt, wie Sie sie gut formulieren.

Die Einstellungen steuern, wie das Modell antwortet. Diese brauchen Sie am häufigsten:

Ihr erster LLM-API-Aufruf, Schritt für Schritt
EinstellungWas sie bewirktGuter Startwert
modelWählt das Modell, das antwortetEin mittelgroßes Modell Ihres Anbieters
messagesSystem-Regeln, Eingabe, frühere AntwortenEine System- und eine User-Nachricht
temperatureZufall: niedrig = fokussiert und wiederholbar, hoch = abwechslungsreicher0–0,3 für Fakten und Daten, höher für Ideen
max tokensObergrenze für die Länge der AntwortGenug für Ihre längste normale Antwort
streamSchickt die Antwort in kleinen Stücken, während sie entstehtAus in Skripten, an in Chat-Oberflächen
stopText, an dem das Modell aufhört zu schreibenNur bei Bedarf

Namen und Wertebereiche unterscheiden sich je nach Anbieter, und manche Modelle — vor allem Reasoning-Modelle — akzeptieren nicht jede Einstellung. Die API-Referenz Ihres Anbieters nennt, was welches Modell unterstützt.

Schritt 3: Die erste Anfrage senden

So sieht die Anfrage als reines HTTP aus. api.example.com und model-name sind Platzhalter: Setzen Sie den Endpunkt und die Modell-ID aus der Dokumentation Ihres Anbieters ein.

POST https://api.example.com/v1/chat
Authorization: Bearer <Ihr Schlüssel aus LLM_API_KEY>
Content-Type: application/json

{
  "model": "model-name",
  "messages": [
    {"role": "system", "content": "Antworten Sie in einfachem Deutsch, in höchstens drei Sätzen."},
    {"role": "user", "content": "Was ist ein API-Schlüssel?"}
  ],
  "temperature": 0.2,
  "max_tokens": 300
}

Derselbe Aufruf in Python, mit der verbreiteten Bibliothek requests (Installation mit pip install requests):

import os
import requests

API_KEY = os.environ["LLM_API_KEY"]        # Schlüssel aus der Umgebung lesen
URL = "https://api.example.com/v1/chat"    # Endpunkt Ihres Anbieters

payload = {
    "model": "model-name",
    "messages": [
        {"role": "system", "content": "Antworten Sie in einfachem Deutsch, in höchstens drei Sätzen."},
        {"role": "user", "content": "Was ist ein API-Schlüssel?"},
    ],
    "temperature": 0.2,
    "max_tokens": 300,
}

response = requests.post(
    URL,
    headers={"Authorization": f"Bearer {API_KEY}"},
    json=payload,      # schickt den Body als JSON und setzt den Inhaltstyp
    timeout=30,        # nie endlos warten
)
response.raise_for_status()   # bei einem Fehler mit Meldung abbrechen
print(response.json())

Die meisten Anbieter bieten außerdem offizielle Bibliotheken an, sogenannte SDKs (Software Development Kits), die diese Schritte auf wenige Zeilen verkürzen. Das ist bequem, die Struktur darunter bleibt aber dieselbe. Selbst Open-Weight-Modelle, die Sie selbst betreiben — etwa auf einer GPU-Cloud wie Runpod —, bieten meist dieselbe Art von Chat-Endpunkt. Ihr Code ändert sich dann kaum.

Schritt 4: Die Antwort lesen

Auch die Antwort ist JSON. Ihr genauer Aufbau hängt vom Anbieter ab, aber Sie finden immer dieselben vier Arten von Informationen.

Kommentierte Antwort: ID und Modellversion, der erzeugte Text in einer Liste von Ausgabeteilen, der Stoppgrund und der Token-Verbrauch für Eingabe und Ausgabe
Was zurückkommt: die Antwort plus die Daten, die Sie für Prüfung und Kostenkontrolle brauchen. Beispielwerte.

  • Der erzeugte Text. Er steht in einem Feld wie content oder text, oft innerhalb einer Liste, weil eine Antwort aus mehreren Teilen bestehen kann.
  • Der Stoppgrund. Er zeigt, ob das Modell normal fertig wurde oder an Ihre Grenze für max tokens gestoßen ist. Im zweiten Fall ist die Antwort abgeschnitten. Erhöhen Sie die Grenze oder bitten Sie um eine kürzere Antwort.
  • Der Token-Verbrauch. Die Zahl der Eingabe- und Ausgabe-Tokens. Anbieter rechnen pro Token ab — protokollieren Sie diese Zahlen vom ersten Tag an.
  • ID und Modellversion. Damit verfolgen Sie eine seltsame Antwort später zurück.

Das Feld model entscheidet, wer antwortet. Unsere LLM-Datenbank führt 343 Modelle mit Erscheinungsdatum und Testergebnissen. Hier einige aktuelle Modelle verschiedener Anbieter:

Modelle aus unserer LLM-Datenbank
ModellErschienenGewichteECIRang
Claude Sonnet 5.5 Anthropic28.09.2026geschlossen164,46
GPT-6 Luna OpenAI22.09.2026geschlossen156,328
Gemini 3.8 Flash Google DeepMind02.09.2026geschlossen157,219
DeepSeek V4.1 Flash DeepSeek09.09.2026offen155,631

ECI = Epoch Capabilities Index, ein Gesamtwert über viele Benchmarks; Rang unter allen Modellen mit ECI. Daten: Epoch AI, abgerufen am 17.10.2026, Lizenz CC BY 4.0. Alle Modelle: LLM-Datenbank.

Die Namen in unserer Datenbank sind Anzeigenamen. Die genaue Modell-ID für Ihre Anfrage steht in der Dokumentation des Anbieters. Teil 4 dieses Levels erklärt, wie Sie ein Modell für Ihre App wählen.

Schritt 5: Fehler behandeln und richtig wiederholen

Aufrufe scheitern. Das Netz bricht ab, der Anbieter ist überlastet, oder Ihre Anfrage enthält einen Fehler. Der Statuscode der Antwort verrät, welcher Fall vorliegt. Codes im 200er-Bereich bedeuten Erfolg, alles andere verlangt eine Reaktion:

Ihr erster LLM-API-Aufruf, Schritt für Schritt (2)
StatuscodeÜbliche BedeutungWas Sie tun
400Fehlerhafte Anfrage: falsches Feld, ungültiges JSON, Eingabe zu langAnfrage korrigieren, nicht wiederholen
401 / 403Schlüssel fehlt, ist falsch oder hat keine RechteSchlüssel und Berechtigungen prüfen
404Unbekannter Endpunkt oder unbekannte Modell-IDAdresse und Modell-ID prüfen
429Zu viele Anfragen oder Nutzungslimit erreichtWarten, dann wiederholen; Limits prüfen
500 / 503Fehler oder Überlast beim AnbieterWarten, dann wiederholen
ZeitüberschreitungKeine Antwort in der vorgesehenen ZeitEin- bis zweimal wiederholen, dann sauber abbrechen

Die Regel hinter der Tabelle: Vorübergehendes wiederholen, Dauerhaftes korrigieren.

Zwei Gruppen von Fehlern: vorübergehende wie 429, 500 bis 503 und Zeitüberschreitungen, die Sie wiederholen; dauerhafte wie 400, 401, 403 und 404, die Sie zuerst beheben; darunter die Regel für Exponential Backoff
Vorübergehende Fehler mit wachsenden Pausen wiederholen, dauerhafte Fehler in Code oder Einstellungen beheben.

Warten Sie bei jedem neuen Versuch etwas länger — zum Beispiel etwa 1, dann 2, dann 4 Sekunden, plus einen kleinen zufälligen Zuschlag. Dieses Muster heißt Exponential Backoff. Der Zufallsanteil verhindert, dass viele Programme im selben Moment erneut anfragen. Enthält die Antwort einen Retry-After-Header, warten Sie mindestens so lange. Nach drei bis vier Versuchen brechen Sie ab und zeigen eine verständliche Meldung.

import random
import time

import requests

def post_with_retry(url, headers, payload, tries=4):
    for attempt in range(tries):
        try:
            r = requests.post(url, headers=headers, json=payload, timeout=30)
            if r.status_code != 429 and r.status_code < 500:
                r.raise_for_status()   # 400, 401, 403, 404: Anfrage korrigieren, kein neuer Versuch
                return r.json()
        except (requests.exceptions.Timeout, requests.exceptions.ConnectionError):
            pass                       # Netzprobleme sind ebenfalls vorübergehend
        if attempt < tries - 1:        # nach dem letzten Versuch keine Pause
            time.sleep(2 ** attempt + random.random())   # etwa 1, 2, 4 Sekunden
    raise RuntimeError("Die API scheitert auch nach mehreren Versuchen.")

Übung: Ihr erster Aufruf in 20 Minuten

Sie möchten lieber keinen Code schreiben? No-Code-Plattformen wie MindStudio bauen auf denselben Modellen auf, ohne dass Sie diese Aufrufe selbst schreiben müssen — Teil 3 dieses Levels zeigt, wie Sie eine einfache KI-App ohne Code bauen.