Zum Hauptinhalt springen
Lektion 5 von 14 · Mistral API: Schnellstart

Ihre erste API-Anfrage in Python

Lektion 5 von 14 Aktualisiert am 2. November 2026 Entwickler
Auf dieser Seite
  1. Ihr erster Austausch mit einem Mistral-Modell
  2. Initialisieren des Clients
  3. Senden einer Anfrage mit chat.complete()
  4. Lesen des zurückgegebenen Objekts
  5. Anpassen des Modellverhaltens
  6. Eine produktionsreife Anfrage
  7. Kernaussagen

Ihr erster Austausch mit einem Mistral-Modell

Das SDK ist installiert und Ihr API-Schlüssel ist bereit: Es ist Zeit, eine echte Anfrage zu senden und, noch wichtiger, zu verstehen, was zurückkommt. Viele Entwickler hören beim ersten Zeilen des Antwortobjekts auf und ignorieren den Rest. Das ist ein Fehler, da die Kostenverfolgung und die Diagnose für abgeschnittene Antworten genau in diesen verbleibenden Daten liegen. Wir beginnen mit minimalem Code und arbeiten uns bis zur vollständigen Struktur vor.

Initialisieren des Clients

Der Client ist der Einstiegspunkt für alle Interaktionen mit der API:

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

Er verwaltet HTTP-Verbindungen, Wiederholungen bei Netzwerkfehlern und die Serialisierung von Anfragen. Instanziieren Sie ihn einmal beim Start der Anwendung. Die Neuerstellung eines Clients für jede Anfrage zwingt Sie unnötigerweise, Kosten für die Verbindungsaufnahme zu tragen, und ist eine der subtilsten Ursachen für übermäßige Latenz.

Senden einer Anfrage mit chat.complete()

Sie werden die Methode chat.complete() am häufigsten verwenden. Sie sendet Ihre Nachrichten und wartet auf die vollständige Antwort des Modells, bevor die Kontrolle zurückgegeben wird:

response = client.chat.complete(
    model="mistral-small-latest",
    messages=[
        {
            "role": "user",
            "content": "Erklären Sie das Konzept der Tokenisierung in drei Sätzen."
        }
    ]
)

print(response.choices[0].message.content)

Hier reichen zwei Parameter aus. model gibt die Modell-ID an: mistral-small-latest verweist immer auf die neueste Version von Mistral Small, was es zur natürlichen Wahl für den Einstieg macht, da es schnell und wirtschaftlich ist. messages erwartet eine Liste strukturierter Nachrichten, wobei jede Nachricht ein role-Feld (system, user oder assistant) und ein content-Feld mit dem Text enthält. Diese Struktur mag für eine einzelne Frage schwerfällig wirken, macht aber Sinn, sobald Sie die Lektion zu mehrstufigen Gesprächen erreicht haben.

Lesen des zurückgegebenen Objekts

Das response-Objekt enthält weit mehr als nur den generierten Text:

# Antworttext
text = response.choices[0].message.content

# Rolle (immer "assistant" für eine Antwort)
role = response.choices[0].message.role

# Abbruchgrund
finish = response.choices[0].finish_reason  # "stop", "length", etc.

# Token-Statistiken
input_tokens = response.usage.prompt_tokens
output_tokens = response.usage.completion_tokens
total_tokens = response.usage.total_tokens

print(f"Antwort ({output_tokens} Tokens): {text}")
print(f"Verbrauchte Gesamt-Token: {total_tokens}")

Achten Sie ab dem ersten Tag genau auf das usage-Feld. Das Protokollieren bei jeder Anfrage zeigt Ihnen genau, welche Funktion Ihrer Anwendung Ihr Budget frisst, ohne dass Sie die Rechnung am Monatsende rückwärts analysieren müssen.

Was finish_reason betrifft, so gibt es an, warum das Modell aufgehört hat, und nimmt einen dieser Werte an:

  • stop: Das Modell hat seine Antwort natürlich abgeschlossen.
  • length: Die Antwort wurde abgeschnitten, weil max_tokens erreicht wurde.
  • model_length: Der gesamte Kontext (Eingabe + Ausgabe) hat das Limit des Modells erreicht.

Eine Antwort, die mitten im Satz endet, ist kein Modellfehler: Es ist ein finish_reason von length, den niemand überprüft hat. Prüfen Sie dies immer, bevor Sie auf ein Qualitätsproblem schließen.

Anpassen des Modellverhaltens

Drei zusätzliche Parameter ermöglichen es Ihnen, die Generierung zu steuern:

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {
            "role": "user",
            "content": "Vorschlagen Sie drei Namen für eine Bildungs-AI-Startup."
        }
    ],
    temperature=0.7,
    max_tokens=500,
    top_p=0.95,
)

Temperature steuert den Grad an Freiheitsgrad des Modells. Bei 0.0 sind die Antworten deterministisch: Dieselbe Eingabe erzeugt immer denselben Text, was Sie für Extraktion oder Klassifizierung benötigen. Zwischen 0.3 und 0.5 erhalten Sie ein gutes Gleichgewicht für faktische Aufgaben. Zwischen 0.7 und 1.0 werden die Antworten kreativer und vielfältiger – dies ist der Bereich, der im obigen Beispiel verwendet wird, da wir nach Namensideen fragen und es sinnlos wäre, dieselbe Idee dreimal zu sehen. Über 1.0 hinaus wird die Generierung hochgradig zufällig und hat selten praktischen Nutzen.

max_tokens begrenzt die Länge der Antwort, was hilft, Kosten zu kontrollieren und die Ausgaben überschaubar zu halten. Denken Sie nur daran, dass, wenn das Modell abgeschnitten wird, finish_reason den Wert "length" annimmt. top_p beeinflusst die Vielfalt durch einen anderen Mechanismus: Es filtert die unwahrscheinlichsten Tokens heraus. Ein Wert von 0.95 bedeutet, dass das Modell nur Tokens berücksichtigt, die 95 % der kumulativen Wahrscheinlichkeit darstellen.

Eine produktionsreife Anfrage

Unter realen Bedingungen fallen Netzwerke aus, Schlüssel verfallen und Kontingente werden ausgeschöpft. Umhüllen Sie Ihre Anfragen immer mit Fehlerbehandlung:

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

try:
    response = client.chat.complete(
        model="mistral-small-latest",
        messages=[
            {"role": "user", "content": "Was ist die Hauptstadt von Frankreich?"}
        ],
        max_tokens=100,
    )

    text = response.choices[0].message.content
    print(f"Antwort: {text}")
    print(f"Verbrauchte Token: {response.usage.total_tokens}")

except Exception as e:
    print(f"API-Aufruf-Fehler: {e}")

Verwenden Sie dieses Grundgerüst für Ihre eigenen Experimente, indem Sie einfach den Inhalt der Nachricht ersetzen. Es ist der Ausgangspunkt für alles, was in diesem Kurs folgt.

Kernaussagen

  • client.chat.complete() ist die primäre Methode zur Interaktion mit Modellen.
  • Der Antworttext befindet sich in response.choices[0].message.content.
  • response.usage zeigt an, wie viele Token verbraucht wurden (nützlich für die Kostenverfolgung).
  • temperature steuert die Kreativität; max_tokens begrenzt die Länge.
  • Beginnen Sie mit mistral-small-latest: Es ist schnell, wirtschaftlich und leistungsfähig.