Reparatur- und Validierungsschleifen
Fehlerhafte Ausgaben korrigieren
Reparatur- und Validierungsschleifen ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 4 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 Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Warum Reparaturschleifen erforderlich sind
Auch mit Schemas kann die Ausgabe fehlschlagen: durch ein wegen eines Token-Limits abgeschnittenes JSON, halluzinierte zusätzliche Felder, eine Zeichenkette, obwohl eine Zahl erforderlich war, oder eine verletzte Geschäftsregel. Eine Reparaturschleife erkennt den Fehler und gibt ihn an das Modell zurück, damit es ihn korrigiert.
Sie ist das Sicherheitsnetz, das eine Erfolgsquote von 98 % auf 99,9 % steigert.
Der Validierungs-Reparatur-Zyklus
Die klassische Schleife: Generieren, validieren und bei einer ungültigen Ausgabe mit dem konkreten Fehler erneut auffordern – bis zu einer begrenzten Anzahl von Versuchen.
def generate_valid(prompt, schema, max_tries=3):
msgs = [{'role': 'user', 'content': prompt}]
for _ in range(max_tries):
out = call_model(msgs)
ok, err = validate(out, schema)
if ok:
return out
msgs.append({'role': 'assistant', 'content': out})
msgs.append({'role': 'user',
'content': 'Invalid. Fix this error and resend JSON only: ' + err})
raise ValueError('repair budget exhausted')Konkrete Fehler sind besser als allgemeine
Die Qualität der Reparatur hängt von der Präzision des Feedbacks ab. „Ungültiges JSON“ hilft wenig; „Das Feld rating muss eine ganze Zahl zwischen 1 und 5 sein, erhalten wurde 7“ behebt den Fehler fast immer in einem Durchlauf.
Geben Sie die genaue Fehlermeldung Ihres Validators – Pfad und Begründung – an das Modell zurück.
def validate(obj, schema):
v = jsonschema.Draft202012Validator(schema)
errs = sorted(v.iter_errors(obj), key=lambda e: e.path)
if not errs:
return True, None
msg = '; '.join(f"{list(e.path)}: {e.message}" for e in errs)
return False, msgMehrstufige Validierung
Die Validierung erfolgt in Stufen; prüfen Sie zuerst die kostengünstigsten:
- Syntaktisch – lässt sich der Inhalt als JSON parsen?
- Strukturell – entspricht er dem Schema?
- Semantisch – erfüllen die Werte die Geschäftsregeln und die Invarianten zwischen Feldern?
Ein Rabatt darf den Zwischensummenbetrag nicht überschreiten, selbst wenn beide Werte gültige Zahlen sind; das ist eine semantische Prüfung.
def semantic_ok(o):
return o['discount'] <= o['subtotal'] and o['total'] == o['subtotal'] - o['discount']Deterministische Vorab-Reparatur
Bevor Sie einen Modellaufruf tätigen, versuchen Sie kostengünstige, deterministische Korrekturen für häufige Fehler:
- Entfernen Sie Markdown-Codeblöcke.
- Extrahieren Sie das äußerste JSON-Objekt aus umgebendem Fließtext.
- Entfernen Sie abschließende Kommata.
Leiten Sie die Verarbeitung erst dann an eine Modellreparatur weiter, wenn die deterministische Bereinigung fehlschlägt.
def extract_json(text):
text = text.strip().removeprefix('json').strip()
start, end = text.find('{'), text.rfind('}')
if start != -1 and end != -1:
return text[start:end + 1]
return textAbschneiden behandeln
Wenn finish_reason == 'length' zurückgegeben wird, ist das JSON abgeschnitten; eine Reparatur des Fragments ist sinnlos. Erhöhen Sie stattdessen max_tokens, reduzieren Sie den angeforderten Umfang oder streamen Sie die Ausgabe und fordern Sie eine Fortsetzung an. Unterscheiden Sie abgeschnittene von fehlerhaft formatierten Ausgaben, da sie gegensätzliche Reaktionen erfordern.
if resp.choices[0].finish_reason == 'length':
# do NOT feed truncated JSON back; regenerate with more room
return retry_with(max_tokens=resp_max * 2)Die Schleife begrenzen
Unbegrenzte Reparaturen stellen ein Kosten- und Latenzrisiko dar, und ein festgefahrenes Modell kann endlos weiterlaufen. Begrenzen Sie daher stets die Anzahl der Versuche, legen Sie ein Budget pro Anfrage fest und definieren Sie einen Fallback: Verschlechtern Sie die Funktion kontrolliert, stellen Sie die Anfrage zur menschlichen Prüfung zurück oder geben Sie einen sicheren Standardwert zurück.
try:
data = generate_valid(prompt, schema, max_tries=3)
except ValueError:
log_for_review(prompt)
data = SAFE_DEFAULTReparatur innerhalb von Tool-Aufrufen
Beim Function Calling ist der Reparaturkanal das Tool-Ergebnis. Geben Sie einen strukturierten Fehler zurück, woraufhin sich das Modell im nächsten Turn selbst korrigiert; eine separate Schleife ist nicht erforderlich.
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps({'error': 'amount must be positive', 'got': args['amount']})})
# next model turn will re-issue the call with a corrected argumentIdempotenz und Seiteneffekte
Wenn eine Reparaturschleife eine Aktion und nicht nur eine Generierung umschließt, müssen Wiederholungen idempotent sein. Verwenden Sie Idempotenzschlüssel, damit ein erneut gesendeter Aufruf keine doppelte Belastung oder einen doppelten Datensatz erzeugt. Validieren Sie vor dem Auslösen von Seiteneffekten, niemals danach.
Reparaturraten beobachten
Die Reparaturrate ist ein wichtiger Frühindikator für die Qualität. Eine steigende Rate weist auf eine Prompt-Regression, ein zu strenges Schema oder eine Modell-Drift hin. Protokollieren Sie die Anzahl der Versuche pro Erfolg und die häufigsten Fehlerpfade und lösen Sie bei einem starken Anstieg einen Alarm aus.
metrics.histogram('llm.repair.attempts', tries)
metrics.increment('llm.repair.error', tags={'path': top_error_path})Constraints mit Reparaturen kombinieren
Die robusteste Pipeline kombiniert mehrere Schutzschichten: Constrained Decoding oder einen strikten Schema-Modus, um Fehler zu minimieren, deterministische Bereinigung für kostengünstige Korrekturen und eine begrenzte Modell-Reparaturschleife für die wenigen verbleibenden Fehler. Keine einzelne Schicht reicht allein aus.
Schnelltest
Die API gibt finish_reason length mit abgeschnittenem JSON zurück. Was ist die richtige Reaktion?
Zusammenfassung
Robuste Reparaturpipelines:
- Validieren Sie stufenweise: syntaktisch, strukturell, semantisch.
- Geben Sie präzise Fehler auf Feldebene an das Modell zurück.
- Versuchen Sie eine deterministische Bereinigung, bevor Sie einen Modellaufruf bezahlen.
- Erkennen Sie abgeschnittene Ausgaben separat und generieren Sie sie neu.
- Begrenzen Sie die Versuche, stellen Sie Idempotenz sicher und überwachen Sie die Reparaturraten.
Sie haben die strukturierte Generierung abgeschlossen. Nächster Kurs: Guardrails und Ausgabevalidierung.
Lerne AI Prompt Engineering 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
- 53
- Lektionen
- 199
Häufig gestellte Fragen
Ist die Lektion „Reparatur- und Validierungsschleifen“ kostenlos?
Ja — der vollständige Text von „Reparatur- und Validierungsschleifen“ 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 Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Reparatur- und Validierungsschleifen“?
Fehlerhafte Ausgaben korrigieren Du übst AI Prompt Engineering 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 Prompt Engineering zu starten?
Keine Vorkenntnisse erforderlich. AI Prompt Engineering 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 4 von 4.
Wie lange dauert die Lektion „Reparatur- und Validierungsschleifen“?
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 Prompt Engineering-Lektion Code schreiben und ausführen?
Ja. Jede AI Prompt Engineering-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
- Warum strukturierte Ausgaben
- JSON Schema in Prompts
- Tool- und Function-Schemas
- Reparatur- und Validierungsschleifen