Das Problem

LLMs sind großartig zur Textgenerierung, aber Anwendungen benötigen oft strukturierte Daten – JSON-Objekte, Arrays, typisierte Werte. Um eine zuverlässige, strukturierte Ausgabe zu erhalten, sind spezifische Techniken erforderlich.

Ansatz 1: Prompt-Engineering

Bitte das Modell, im JSON-Format zu antworten:

  • Spezifiziere das genaue Schema im Prompt.
  • Füge ein Beispiel für ein Ein-/Ausgabepaar ein.
  • Füge hinzu: "Nur mit gültigem JSON antworten. Keine Erklärung."

Ansatz 2: Funktionsaufruf / Werkzeugnutzung

Die meisten großen APIs unterstützen inzwischen Funktionsaufrufe:

  • Definiere ein JSON-Schema für die erwartete Ausgabe.
  • Das Modell ist darauf beschränkt, das Schema zu übereinstimmen.
  • Arbeitet mit OpenAI, Anthropic, Google und den meisten Anbietern zusammen.

Ansatz 3: Eingeschränkte Dekodierung

Bibliotheken wie Outlines und LMQL zwingen das Modell dazu, gültige Ausgaben zu liefern:

  • Definiere ein Pydantisches Modell oder JSON-Schema.
  • Der Dekodierungsprozess erzwingt das Schema Token für Token.
  • 100%ige Garantie einer gültigen Outputstruktur.

Ansatz 4: Instructor-Bibliothek

Die Instructor-Bibliothek umwickelt jede LLM-API mit Pydantic-Validierung:

  • Definiere dein Datenmodell mit Pydantic.
  • Der Instructor übernimmt Wiederholungen und Validierungen automatisch.
  • Arbeitet mit OpenAI-, Anthropic-, Gemini- und lokalen Modellen.

Best Practices

  • Validiere die Ausgabe immer anhand eines Schemas.
  • Verwende Enum-Typen für Felder mit begrenzten Optionen.
  • Beziehe Wiederholungs-Logik für fehlgeformte Antworten ein.
  • Halte Schemata einfach – verschachtelte Strukturen erhöhen die Fehlerraten.
  • Teste mit 50+ Beispielen, um die Zuverlässigkeit zu messen.