Dobički:
- Opredelitev agenta kot 'model + orodja + zanka' in odločitev, kdaj je potreben
- Pisanje definicije orodja z imenom, opisom in vhodno_shemo
- Spremljanje toka in obravnavanje napak zanke tool_use in tool_result
Do zdaj je model vedno opravljal eno nalogo: prejemal vnos besedila, proizvajal besedilne odgovore. Toda pravo delo pogosto zahteva več kot besedilo; izvajanje izračuna, poizvedovanje po bazi podatkov, klicanje API-ja, iskanje trenutnega menjalnega tečaja. Manekenka teh stvari ne more narediti sama - lahko pa se odloči, kdaj jih je treba narediti, in prosi nekoga, da to stori. To je tisto, kar uporaba orodja daje modelu, in to je osnova agentov AI. V tej enoti se bomo naučili, kaj je agent, kako je orodje definirano in kako deluje zanka tool_use.
Kaj je zastopnik? Model + Orodja + Zanka
Agent AI je sestavljen iz treh delov: modela (možgani, ki sprejemajo odločitve), orodij (funkcij, ki jih lahko model pokliče: vreme, poizvedba po bazi podatkov, pošiljanje e-pošte) in zanke (zanka; model pokliče orodje, dobi rezultat, se znova odloči, kaj bo naredil in tako naprej).
Kritično razlikovanje: klic z enim vzorcem ni agent. Agent je proces, v katerem model napreduje korak za korakom, pri vsakem koraku pa izbere naslednjo potezo na podlagi rezultata orodja. "Razmišljaj kot človek, uporabi svoje roke, poglej rezultat, premisli še enkrat."
Pomembno dejstvo: model sam ne upravlja vozila. Model samo pravi "Želim poklicati to orodje s temi vnosi". Vaša aplikacija (imenovana snop) zažene orodje in vrne rezultat modelu. To je bistveno za varnost: model se ne dotika neposredno vašega sistema; Vsako dejanje je pod vašim nadzorom.
Nasvet: Ne poskušajte rešiti vseh težav z zastopnikom. Agent; povečuje tveganje za zamude, stroške in napake. Najprej vprašajte: "Ali bo to rešeno z enim klicem ali s fiksnim potekom dela?" Če je odgovor pritrdilen, zastopnik ni potreben. Agent je za odprta opravila, kjer korakov ni mogoče poznati vnaprej.
Definicija orodja: ime, opis, vhodna_shema
Če želite uvesti orodje v model, podate tri stvari:
- ime: Identiteta vozila, npr. get_weather.
- opis: Kaj orodje počne in kdaj ga poklicati. To je najpomembnejše področje, ki modelu omogoča izbiro pravega orodja ob pravem času. Ne napišite samo "kaj počne", ampak tudi "pokliči kdaj."
- input_schema (vhodna shema): shema JSON, ki določa, katere parametre pričakuje orodje in v kateri vrsti.
# Definicija vozila (konceptualno — shema JSON){ "name": "get_order_status", "description": "Pridobi trenutni status pošiljanja naročila. Pokliči, ko uporabnik vpraša, kje je številka naročila ali kdaj bo prispela.", "input_schema": { "type": "object", "properties": { "order_no": {"type": "string", "description": "Številka naročila, npr. SP-1024"} }, "obvezno": ["št_naročila"] }}
Pravila za dober opis orodja: jasno in jedrnato ime, opis z "kdaj uporabiti", opis za vsak parameter, navedba tistih, ki so resnično obvezni. Osredotočite se na število vozil; Na desetine podobnih modelov vozil je presenetljivih.
območje
Kaj počne?
dober primer
slab primer
ime
ID vozila
naročilo_status_getir
prinesi
opis
Kaj počne + kdaj poklicati
"Vrne status tovora; pokliči, ko uporabnik vpraša, kje je naročilo"
"pridobi podatke"
vhodna_shema
Vrsta parametra in zahteva
{št. naročila: niz, označeno}
brez diagrama / brez opisa
tool_use → tool_result Loop
Cikel poteka takole, korak za korakom:
- Modelu pošljete vprašanje uporabnika + opis orodja.
- Model se odzove neposredno ali ustvari blok tool_use: "pokliči order_durumu_getir z order_no=SP-1024."
- Vaša aplikacija dejansko izvaja orodje (poizveduje po bazi podatkov).
- Rezultat pošljete nazaj v model kot tool_result.
- S tem rezultatom model ustvari končni odgovor ali pokliče drugo orodje. Cikel se nadaljuje, dokler model ne reče "Končal sem."
# Agent loop (conceptual)messages = [user_question]while True: response = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harness.run(response.tool_name, response.entries) # APLIKACIJA izvaja sporočila += [response, tool_result(result)] # vrni rezultat else: break # končni odgovor; zanka se konča
Sodobni SDK-ji ponujajo izvajalce orodij, ki izvajajo to zanko namesto vas; samo napišete funkcije orodja. A prav to se dogaja v zakulisju.
Upravljanje napak
Orodja morda ne bodo uspela: naročilo ni bilo najdeno, poteče API, vnos ni veljaven. Če orodja ne morete zagnati, vrnite napako modelu kot opisni tool_result ("napaka: številka naročila SP-9999 ni najdena") in zastavico napake. Model lahko to vidi in nežno razloži uporabniku ali poskusi drugače. Ne pogoltnite napake in vrnite praznih rezultatov; Model mora vedeti, kaj je šlo narobe.
Šibek/močan opis vozila
Šibek (nedoločen samostalnik, brez "kdaj"):
ime: "podatki", opis: "pridobi podatke"# Model ne ve, kdaj in kako poklicati; Ali sploh ne pokliče ali pokliče napačno.
Močno (neto ime + kdaj + opis parametra):
name: "musteri_bakiyesi_getir"description: "Vrne trenutno stanje na računu stranke. Pokliči, ko uporabnik zahteva obremenitev, dobroimetje ali stanje. NE izvede plačila."input_schema: {custeri_id: string ("ID stranke")}# Model pokliče ob pravem času, s pravimi parametri, ob poznavanju svoje omejitve.
Trije mini kovčki
Primer 1 – Nepotreben agent. Ena ekipa je zgradila podjetje »povzetek besedila« z agentom z več orodji; Vsak povzetek traja 4 klice modela in 9 sekund. Delo je bilo pravzaprav delo na en klic. Ko smo odstranili agenta in ga zmanjšali na en klic, se je čas zmanjšal na 1,5 sekunde, stroški pa na četrtino. Nauk: uporabite sredstvo, ko je res potrebno.
Primer 2 — Slaba razlaga, napačen klic. V podpornem agentu je model naključno poklical nejasno orodje, imenovano fetch, tako v vprašanju stanja kot pri vprašanju pošiljanja. Ko so vozila razdelili na balance_getir in cargo_durumu_getir ter dodali pojasnila "pokliči, ko", se je število napačnih izbir vozil zmanjšalo z 18 na 1 od 50 primerov.
Primer 3 — Napaka pogoltnjena. Agent je vračal prazne rezultate, ko naročilo ni bilo najdeno; Manekenka je to interpretirala kot "naročilo je bilo dostavljeno" in zavedla stranko. Ko je sporočilo o napaki izrecno zapisano v tool_result ("naročilo ni bilo najdeno"), model pravilno pove "Nisem našel te številke, jo lahko preverite?" je začel govoriti.
Pogoste napake
- Vse predati agentu: en klic je dovolj, agent pa poveča stroške in zamudo.
- Nejasen opis vozila: Model ne ve, kdaj poklicati; izbere narobe.
- Misliti, da model poganja vozilo: pas poganja vozilo; model samo želi.
- Pogoltniti napako: model mora vedeti, kaj je šlo narobe; Podajte napako kot open tool_result.
- Preveč podobnih vozil: Model se zmede; Nabor orodij naj bo osredotočen in minimalen.
Pozor: samo zato, ker model pravi "pokliči to vozilo", ne pomeni, da je treba ukrepati. Pri destruktivnih orodjih (brisanje, prevzem, e-pošta) vaša aplikacija ne bi smela slepo izvesti klica – to je jedro varnostne teme v naslednji enoti.
Če povzamem
- Agent = model (odločitev) + orodja (funkcije) + zanka (prikliči orodje, pridobi rezultat, ponovno se odloči).
- Klic z enim vzorcem ni agent; agent je postopek korak za korakom.
- Model ne poganja vozila; Vaša aplikacija se zažene (upreti) in vrne rezultat kot tool_result.
- Orodje je identificirano z imenom, opisom (natančneje »pokliči, ko«) in vhodno_shemo.
- Zanka se nadaljuje, ko tool_use → harness teče → tool_result → model se nadaljuje, dokler model ne reče "končano"; napake so izrecno sporočene modelu.
Aplikacijska naloga
Oblikujte 3 orodja iz svojega podjetja, ki jih lahko daste agentu. (1) Napišite ime, opis z "pokliči kdaj" in vhodno_shemo za vsako; Naj bo vsaj eno orodje za nedestruktivno branje, eno pa izračun. (2) Izberite realistično uporabniško vprašanje in ročno korak za korakom (v zanki) napišite, katera od teh orodij bo model poklical s kakšnimi vhodi in kaj bo naredil, ko bo prispel tool_result. (3) Nastavite scenarij, v katerem eno od orodij odpove, in pokažite, kako se bo sporočilo o napaki vrnilo v model.
kontrolni seznam
- [ ] Agenta lahko definiram kot "model + orodja + zanka" in se odločim, kdaj je potreben.
- [ ] Vem, da pas poganja vozilo, model si ga samo želi.
- Lahko napišem soliden opis vozila z [ ] imenom, opisom ("pokliči kdaj") in input_schema.
- Lahko sledim ciklu [ ] tool_use → tool_result korak za korakom.
- [ ] Napake orodja poročam modelu kot open tool_result.