AI-agenten · Les

Herstellussen voor ongeldige uitvoer

Als de JSON niet kan worden geparsed, stuurt u de fout terug naar het model en vraagt u het de uitvoer te herstellen.

Les 3 van 415 stappen

Herstellussen voor ongeldige uitvoer is een gratis AI-agenten-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Delen van deze les zijn nog niet vertaald en worden in het Engels weergegeven.

Zelfs strikte modi falen soms

Oudere modellen, randgevallen of aanbieders zonder strikte modus geven soms ongeldige JSON terug. Robuuste agents herstellen dit door het model te vragen zijn uitvoer te repareren.

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.')

Waarom dit werkt

Het model ziet de foutmelding en corrigeert die meestal in de volgende beurt. Voeg expliciete instructies toe:

  • "Geen proza"
  • "Geen markdown-omheiningen"
  • "Gebruik exact deze vorm: ..."

Markdown-omheiningen verwijderen

Modellen zetten JSON vaak tussen ```json ... ```. Verwijder die omheiningen vóór het parseren:

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))

Uitsnijden vanaf de eerste accolade

Als er overbodig proza aanwezig is, snijd je de tekst uit vanaf de eerste { tot de laatste bijbehorende }:

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 dit voor je doen

  • Instructor — combineert Pydantic, reparatielussen en nieuwe pogingen
  • Outlines — gegarandeerde gestructureerde uitvoer via gestuurde decodering
  • jsonformer — JSON afdwingen token voor token (HF-modellen)

Reparatieprompts die werken

Neem de specifieke foutmelding en een korte herinnering aan de indeling op:

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 van reparatielussen

Elke reparatie is een extra LLM-aanroep. Beperk het aantal nieuwe pogingen (2-3 is genoeg — daarna is de kans klein dat het model herstelt) en registreer reparatiepercentages als kwaliteitsmaatstaf.

Reparatie als kwaliteitssignaal

Als je reparatiepercentage > 5% is, klopt er iets niet: de prompt is onduidelijk, het schema is te complex of het model is te klein. Onderzoek dit.

Alternatief: beperkte decodering

Open-sourcemodellen ondersteunen decodering die door een grammatica wordt beperkt — het model kan helemaal geen ongeldige uitvoer produceren. Outlines, jsonformer en de grammatica's van llama.cpp doen dit.

Alternatief: functies in plaats van een schema

Een toolaanroep afdwingen met de strikte modus is een netter alternatief voor JSON-modus met reparatie. Gebruik dit zodra de aanbieder het ondersteunt.

Slechte uitvoer registreren

Registreer elke gerepareerde uitvoer, zodat je patronen kunt analyseren:

log.warning('Repaired output', extra={'raw': raw, 'error': str(e), 'attempt': attempt})

Wanneer je moet opgeven

Als de uitvoer na N reparatiepogingen nog steeds ongeldig is, geef je een fout terug aan de gebruiker — verzin geen terugvaloptie. Eerlijk falen is beter dan stille beschadiging.

Patroon van de reparatielus

Wat is de eenvoudigste eerste stap in een reparatielus?

Samenvatting

Detecteer fouten bij het parseren, voeg ze toe als tool- of gebruikersbericht en vraag het model om de uitvoer te repareren. Beperk het aantal nieuwe pogingen. Geef de voorkeur aan toolaanroepen in de strikte modus om reparatie helemaal overbodig te maken.

Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “Herstellussen voor ongeldige uitvoer” gratis?

Ja — de volledige tekst van “Herstellussen voor ongeldige uitvoer” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “Herstellussen voor ongeldige uitvoer”?

Als de JSON niet kan worden geparsed, stuurt u de fout terug naar het model en vraagt u het de uitvoer te herstellen. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Herstellussen voor ongeldige uitvoer”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. JSON-modus en tool-call-uitvoer
  2. Pydantic-schemavalidatie
  3. Herstellussen voor ongeldige uitvoer
  4. Instructor / Outlines voor gegarandeerde structuur
← Terug naar AI-agenten