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.