Zum Hauptinhalt springen
Lektion 2 von 12 · Strukturierte Ausgabe: JSON und Schemata

JSON-Modus vs. benutzerdefinierte strukturierte Ausgaben

Lektion 2 von 12 Aktualisiert am 29. Juli 2026 Entwickler
Auf dieser Seite
  1. Zwei Ansätze, zwei Philosophien
  2. JSON-Modus: Flexibilität
  3. Benutzerdefinierte strukturierte Ausgaben: Strenge
  4. Detaillierter Vergleich
  5. Die Entscheidung in der Praxis
  6. Kernaussagen

Zwei Ansätze, zwei Philosophien

Die Mistral-API bietet zwei unterschiedliche Mechanismen zur Generierung strukturierter Ausgaben. Sie stehen nicht im Wettbewerb zueinander, sondern dienen verschiedenen Phasen im Lebenszyklus eines Projekts. Ihre Entscheidung hängt vom Anwendungsfall, Ihrer Technologie-Stack und dem erforderlichen Zuverlässigkeitsniveau ab.

JSON-Modus: Flexibilität

Der JSON-Modus ist der einfachste Ansatz. Sie aktivieren einen Parameter in Ihrer Anfrage, und Mistral garantiert, dass die Ausgabe gültiges JSON ist. Das ist alles. Das Modell bleibt frei in der Wahl der Struktur: Schlüssel, Typen und Verschachtelungstiefe. Sie leiten das gewünschte Format über Ihren Prompt an, aber keine technischen Einschränkungen binden das Schema.

# JSON-Modus — das Modell wählt die Struktur
response = client.chat.complete(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "Analysieren Sie diesen Text und geben Sie das Ergebnis als JSON zurück."}],
    response_format={"type": "json_object"}
)

Diese Minimalismus ist ihre Hauptstärke: nur ein Parameter zum Hinzufügen, kein Schema, das im Voraus definiert werden muss, und vollständige Flexibilität, wenn Sie ein Problem erkunden oder schnell Prototypen erstellen. Der Nachteil ist symmetrisch. Nichts garantiert die exakte Struktur des JSON, das Sie erhalten: Das Modell könnte ein Feld weglassen, ein anderes hinzufügen oder einen Schlüssel von einem Aufruf zum nächsten umbenennen. Daher wird eine Validierung auf Client-Seite zwingend erforderlich, und das ist Code, den Sie selbst schreiben und warten müssen.

Benutzerdefinierte strukturierte Ausgaben: Strenge

Benutzerdefinierte strukturierte Ausgaben verlagern diese Einschränkung auf die API-Seite. Sie definieren ein präzises Schema – mit Pydantic in Python oder Zod in TypeScript – und Mistral zwingt das Modell, sich exakt daran zu halten.

from pydantic import BaseModel

class Analyse(BaseModel):
    sentiment: str
    score: float
    keywords: list[str]

# Benutzerdefiniert — das Schema wird durchgesetzt
response = client.chat.parse(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "Analysieren Sie diesen Text."}],
    response_format=Analyse
)

Der Vorteil ist sofort spürbar: Jedes Feld ist vorhanden und hat den korrekten Typ, und Sie erhalten ein parsbares Objekt, das sofort verwendet werden kann – eine Instanz eines Pydantic- oder Zod-Modells – mit vollständiger IDE-Autovervollständigung. Dies ist der Modus für Produktion und kritische Pipelines. Der Kompromiss lässt sich in einem Satz zusammenfassen: Sie müssen ein Datenmodell im Voraus definieren, was die Exploration weniger flexibel macht und einen geringen initialen Entwicklungsaufwand auferlegt.

Detaillierter Vergleich

KriteriumJSON-ModusBenutzerdefinierte strukturierte Ausgaben
Aktivierungresponse_format: {"type": "json_object"}response_format: MyModel (Pydantic/Zod)
API-Methodeclient.chat.complete()client.chat.parse()
Schema-GarantieNein – nur gültiges JSONJa – exaktes Schema wird durchgesetzt
Automatische ParsingNein – manuelles json.loads()Ja – .parsed gibt typisiertes Objekt zurück
FlexibilitätHoch – freie StrukturNiedrig – feste Struktur
Idealer AnwendungsfallPrototyping, Exploration, variable SchemataProduktion, kritische Pipelines, APIs
Validierung erforderlichJa – zwingend auf Client-SeiteMinimal – das Schema erledigt die Arbeit

Die Entscheidung in der Praxis

Drei Signale deuten auf den JSON-Modus hin. Erstens ist die Projektphase: Wenn Sie prototypisieren und das Schema noch nicht stabil ist, verlangsamt das Festlegen eines Datenmodells Sie, ohne Mehrwert zu bieten. Zweitens ist die Natur der Aufgabe: Wenn die Ausgabe-Struktur legitimerweise je nach Eingabe variiert, wie bei explorativen Analysen, bei denen relevante Dimensionen im Voraus nicht bekannt sind, wäre eine feste Struktur ein Strick. Drittens ist es technisch: In einer Sprache ohne Pydantic- oder Zod-Unterstützung bleibt der JSON-Modus Ihr einziger Einstiegspunkt.

Benutzerdefinierte strukturierte Ausgaben übernehmen, sobald sich die Situation umkehrt. Sie befinden sich in der Produktion, eine fehlgeschlagene Extraktion hat reale Kosten, das Ausgabe-Schema ist bekannt und stabil, Sie arbeiten in Python oder TypeScript, und Sie möchten typisierte Objekte statt anonymen Wörterbüchern manipulieren. Konkret hat eine Pipeline, die Support-Tickets den ganzen Tag lang mit denselben vier Feldern klassifiziert, keinen Grund, im JSON-Modus zu bleiben.

Dies stimmt mit der offiziellen Mistral-Dokumentation überein, die den Einsatz von benutzerdefinierten strukturierten Ausgaben empfiehlt, wann immer möglich. Der JSON-Modus bleibt ein guter Einstiegspunkt, aber benutzerdefinierte Ausgaben bieten eine überlegene Zuverlässigkeit und reduzieren den Validierungscode auf Client-Seite erheblich.

Kernaussagen

  • JSON-Modus = garantiertes gültiges JSON, freie Struktur, einfach zu aktivieren
  • Benutzerdefinierte strukturierte Ausgaben = garantiertes exaktes Schema, automatisches Parsing, ideal für Produktion
  • Beginnen Sie mit dem JSON-Modus für Prototypen und migrieren Sie zur benutzerdefinierten Ausgabe für die Produktion
  • Die beiden Ansätze sind komplementär, nicht gegenseitig ausschließend