Tekoälyagentit · Oppitunti

Virheellisen tulosteen korjaussilmukat

Jos JSON ei jäsenny, lähettäkää virhe takaisin mallille ja pyytäkää sitä korjaamaan tuloste.

Oppitunti 3/415 vaihetta

Virheellisen tulosteen korjaussilmukat on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Osaa tämän oppitunnin sisällöstä ei ole vielä käännetty, joten se näytetään englanniksi.

Myös strict-tilat epäonnistuvat joskus

Vanhemmat mallit, reunaehdot tai strict-tilaa käyttämättömät palveluntarjoajat palauttavat toisinaan virheellistä JSONia. Vankat agentit selviytyvät tästä pyytämällä mallia korjaamaan tulosteensa.

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

Miksi tämä toimii

Malli näkee virheilmoituksen ja yleensä korjaa vastauksensa seuraavalla vuorolla. Lisätkää täsmälliset ohjeet:

  • "Ei proosaa"
  • "Ei Markdown-koodilohkoja"
  • "Vastaa täsmälleen tätä rakennetta: ..."

Markdown-koodilohkojen poistaminen

Mallit ympäröivät JSONin usein merkkijonolla ```json ... ```. Poistakaa se ennen jäsentämistä:

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

Leikkaaminen ensimmäisestä aaltosulkeesta

Jos mukana on ylimääräistä proosaa, leikatkaa merkkijono ensimmäisestä merkistä { viimeiseen vastaavaan merkkiin }:

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

Työkalut, jotka tekevät tämän puolestanne

  • Instructor — yhdistää Pydanticin, korjaussilmukat ja uudelleenyritykset
  • Outlines — taattu jäsennelty tuloste ohjatun dekoodauksen avulla
  • jsonformer — pakottaa JSONin muodostamisen token kerrallaan (HF-mallit)

Toimivat korjauskehotteet

Sisällyttäkää mukaan täsmällinen virheilmoitus ja lyhyt muistutus muodosta:

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

Korjaussilmukoiden kustannukset

Jokainen korjaus on uusi LLM-kutsu. Rajoittakaa uudelleenyritykset (2–3 riittää — sen jälkeen malli tuskin enää palautuu tilanteesta) ja kirjatkaa korjausmäärät laatumittarina.

Korjaukset laatumittarina

Jos korjausmäärä on > 5 %, jokin on vialla: kehote on epäselvä, skeema liian monimutkainen tai malli liian pieni. Selvittäkää syy.

Vaihtoehto: rajoitettu dekoodaus

Avoimen lähdekoodin mallit tukevat kielioppirajoitteista dekoodausta — malli ei voi tuottaa lainkaan virheellistä tulostetta. Outlines, jsonformer ja llama.cpp:n kieliopit toimivat näin.

Vaihtoehto: funktiot skeeman sijaan

Työkalukutsun pakottaminen strict-tilassa on selkeämpi vaihtoehto kuin JSON-tila ja korjaus. Käyttäkää sitä aina, kun palveluntarjoaja tukee sitä.

Virheellisten tulosteiden kirjaaminen

Kirjatkaa jokainen korjattu tuloste, jotta voitte analysoida toistuvia malleja:

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

Milloin kannattaa luovuttaa

Jos tuloste on N korjausyrityksen jälkeenkin virheellinen, palauttakaa käyttäjälle virhe — älkää keksikö varatulosta. Rehellinen epäonnistuminen on parempi kuin huomaamaton tietojen vioittuminen.

Korjaussilmukan toimintamalli

Mikä on korjaussilmukan yksinkertaisin ensimmäinen vaihe?

Kertaus

Havaitkaa jäsentämisvirheet, liittäkää ne tool/user-viestiksi ja pyytäkää mallia korjaamaan tuloste. Rajoittakaa uudelleenyritykset. Suosikaa strict-tilan työkalukutsuja, jotta korjauksia ei tarvita lainkaan.

Aloita maksutta

Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
60
Oppitunnit
239

Usein kysytyt kysymykset

Onko oppitunti ”Virheellisen tulosteen korjaussilmukat” ilmainen?

Kyllä – oppitunnin ”Virheellisen tulosteen korjaussilmukat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Virheellisen tulosteen korjaussilmukat”?

Jos JSON ei jäsenny, lähettäkää virhe takaisin mallille ja pyytäkää sitä korjaamaan tuloste. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Virheellisen tulosteen korjaussilmukat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JSON-tila ja työkalukutsujen tulosteet
  2. Pydantic-skeeman validointi
  3. Virheellisen tulosteen korjaussilmukat
  4. Instructor ja Outlines taatun rakenteen varmistamiseen
← Takaisin: Tekoälyagentit