Reparaturschleifen für fehlerhafte Ausgaben
Wenn sich das JSON nicht parsen lässt, senden Sie den Fehler an das Modell zurück und bitten Sie es, die Ausgabe zu korrigieren.
Reparaturschleifen für fehlerhafte Ausgaben ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Selbst Strict-Modi schlagen manchmal fehl
Ältere Modelle, Randfälle oder Anbieter ohne Strict-Modus geben gelegentlich fehlerhaftes JSON zurück. Robuste Agenten beheben dies, indem sie das Modell auffordern, seine Ausgabe zu reparieren.
Basic Repair Loop
from pydantic import ValidationError
import json
def call_with_repair(messages, schema, max_attempts=3):
for attempt in range(max_attempts):
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
response_format={'type': 'json_object'}
)
raw = response.choices[0].message.content
try:
return schema.model_validate_json(raw)
except (json.JSONDecodeError, ValidationError) as e:
messages.append({'role': 'assistant', 'content': raw})
messages.append({
'role': 'user',
'content': f'That output failed to validate: {e}.\nReturn ONLY valid JSON that matches the schema. No prose, no markdown fences.'
})
raise RuntimeError('Could not get valid output after repair attempts.')Warum das funktioniert
Das Modell sieht die Fehlermeldung und korrigiert den Fehler normalerweise im nächsten Turn. Fügen Sie ausdrückliche Anweisungen hinzu:
- "Kein Fließtext"
- "Keine Markdown-Zäune"
- "Halten Sie exakt diese Struktur ein: ..."
Markdown-Zäune entfernen
Modelle schließen JSON häufig in ```json ... ``` ein. Entfernen Sie diese Zeichen vor dem Parsen:
import re
def extract_json(text):
m = re.search(r'```(?:json)?\s*(.*?)```', text, re.S)
if m:
return m.group(1).strip()
return text.strip()
sample = '```json\n{"name": "Alice"}\n```'
print(extract_json(sample))
Ausschneiden ab der ersten Klammer
Wenn zusätzlicher Fließtext vorhanden ist, schneiden Sie ab dem ersten { bis zur letzten passenden } aus:
def find_json_slice(text):
start = text.find('{')
if start == -1:
return None
depth = 0
for i, c in enumerate(text[start:], start):
if c == '{': depth += 1
if c == '}':
depth -= 1
if depth == 0:
return text[start:i+1]
return None
sample = 'Here is your answer: {"name": "Alice", "age": 30} - hope that helps!'
print(find_json_slice(sample))
Tools, die das für Sie erledigen
- Instructor – kombiniert Pydantic, Reparaturschleifen und Wiederholungsversuche
- Outlines – garantiert strukturierte Ausgaben durch gesteuerte Dekodierung
- jsonformer – erzwingt JSON Token für Token (HF-Modelle)
Funktionierende Reparatur-Prompts
Fügen Sie die konkrete Fehlermeldung und eine kurze Erinnerung an das Format ein:
repair_prompt = f'''
Your previous output had this error: {error}
Fix the output. Requirements:
- Valid JSON only
- Match this schema: {json.dumps(schema)}
- No prose, no markdown fences
'''Kosten von Reparaturschleifen
Jede Reparatur ist ein weiterer LLM-Aufruf. Begrenzen Sie die Wiederholungsversuche (2–3 sind ausreichend – darüber hinaus wird sich das Modell wahrscheinlich nicht mehr erholen) und protokollieren Sie die Reparaturrate als Qualitätskennzahl.
Reparaturen als Qualitätssignal
Wenn Ihre Reparaturrate über 5 % liegt, stimmt etwas nicht: Der Prompt ist unklar, das Schema zu komplex oder das Modell zu klein. Untersuchen Sie die Ursache.
Alternative: Gesteuerte Dekodierung
Open-Source-Modelle unterstützen eine grammatikbeschränkte Dekodierung – das Modell kann überhaupt keine ungültige Ausgabe erzeugen. Outlines, jsonformer und die Grammatiken von llama.cpp verwenden dieses Verfahren.
Alternative: Funktionen statt Schema
Einen Tool-Aufruf mit dem Strict-Modus zu erzwingen, ist eine sauberere Alternative zu JSON-Modus plus Reparatur. Verwenden Sie dies, wann immer der Anbieter es unterstützt.
Fehlerhafte Ausgaben protokollieren
Protokollieren Sie jede reparierte Ausgabe, damit Sie Muster analysieren können:
log.warning('Repaired output', extra={'raw': raw, 'error': str(e), 'attempt': attempt})Wann Sie aufgeben sollten
Wenn die Ausgabe nach N Reparaturversuchen immer noch ungültig ist, geben Sie einen Fehler an den Benutzer zurück – halluzinieren Sie keinen Ersatzwert. Ein ehrlicher Fehler ist besser als eine unbemerkte Verfälschung.
Muster einer Reparaturschleife
Was ist der einfachste erste Schritt in einer Reparaturschleife?
Zusammenfassung
Erkennen Sie Parse-Fehler, hängen Sie sie als Tool- oder User-Nachricht an und bitten Sie das Modell um eine Reparatur. Begrenzen Sie die Wiederholungsversuche. Bevorzugen Sie Tool-Aufrufe im Strict-Modus, um den Reparaturbedarf vollständig zu vermeiden.
Lerne AI Agents mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 60
- Lektionen
- 239
Häufig gestellte Fragen
Ist die Lektion „Reparaturschleifen für fehlerhafte Ausgaben“ kostenlos?
Ja — der vollständige Text von „Reparaturschleifen für fehlerhafte Ausgaben“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Reparaturschleifen für fehlerhafte Ausgaben“?
Wenn sich das JSON nicht parsen lässt, senden Sie den Fehler an das Modell zurück und bitten Sie es, die Ausgabe zu korrigieren. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Reparaturschleifen für fehlerhafte Ausgaben“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- JSON-Modus und Tool-Call-Ausgaben
- Pydantic-Schema-Validierung
- Reparaturschleifen für fehlerhafte Ausgaben
- Instructor / Outlines für garantierte Strukturen