Kasu:
- Agendi määratlemine kui „mudel + tööriistad + silmus” ja otsustamine, millal seda vaja on
- Tööriista definitsiooni kirjutamine koos nime, kirjelduse ja input_schema
- Silmuste tool_use ja tool_result voo ja veakäsitluse jälgimine
Seni on mudel alati teinud ühte tööd: vastu võtnud tekstisisestuse, koostanud teksti vastuseid. Kuid tegelik töö nõuab sageli enamat kui teksti; arvutuse tegemine, andmebaasi päringute tegemine, API kutsumine, hetkekursi väljaselgitamine. Modell ei saa neid asju ise teha, kuid ta saab otsustada, millal neid asju teha tuleb, ja paluda kellelgi neid teha. Selle mudeli annab tööriistakasutus ja see on AI-agentide aluseks. Selles üksuses õpime, mis on agent, kuidas tööriist on määratletud ja kuidas töötab silmus tool_use.
Mis on agent? Mudel + Tööriistad + Loop
Tehisintellekti agent koosneb kolmest osast: mudelist (aju, mis teeb otsuse), tööriistadest (funktsioonid, millele mudel helistada saab: ilm, andmebaasi päring, meili saatmine) ja tsüklist (silmus; mudel kutsub tööriista välja, saab tulemuse, otsustab uuesti, mida teha jne).
Kriitiline erinevus: ühe mustriga kõne ei ole agent. Agent on protsess, mille käigus mudel liigub samm-sammult, valides igal etapil tööriista tulemuse põhjal järgmise käigu. "Mõelge nagu inimene, kasutage oma käsi, vaadake tulemust, mõelge uuesti."
Oluline fakt: mudel ise ei juhi sõidukit. Mudel ütleb lihtsalt "Ma tahan seda tööriista nende sisenditega kutsuda". Teie rakendus (nn rakmed) käivitab tööriista ja tagastab tulemuse mudelile. See on turvalisuse seisukohast ülioluline: mudel ei puuduta teie süsteemi otseselt; Iga tegevus on teie kontrolli all.
Näpunäide: ärge püüdke kõiki probleeme agendiga lahendada. Agent; suurendab viivituste, kulude ja vigade riski. Esmalt küsige: "Kas see lahendatakse ühe kõne või fikseeritud töövooga?" Kui vastus on jaatav, pole agenti vaja. Agent on mõeldud avatud ülesannete jaoks, mille etappe ei saa ette teada.
Tööriista definitsioon: nimi, kirjeldus, sisendi_skeem
Tööriista tutvustamiseks mudelisse annate kolm asja:
- nimi: Sõiduki tunnus, nt. get_weather.
- kirjeldus: mida tööriist teeb ja millal seda kutsuda. See on kõige olulisem valdkond, mis võimaldab mudelil valida õige tööriista õigel ajal. Kirjutage mitte ainult "mis teeb", vaid ka "helista millal".
- input_schema (sisendskeem): JSON-skeem, mis määrab, milliseid parameetreid tööriist ootab ja millist tüüpi.
# Sõiduki definitsioon (kontseptuaalne — JSON-skeem){ "name": "get_order_status", "description": "Tandab tellimuse praeguse tarneoleku. Helistage, kui kasutaja küsib, kus tellimuse number asub või millal see saabub.", "input_schema": { "type": "object", "properties": { "order_no":,":st nt SP-1024"} }, "nõutav": ["tellimuse_nr"] }}
Hea tööriista kirjelduse reeglid: selge ja lühike nimi, kirjeldus "millal kasutada", iga parameetri kirjeldus, tõeliselt kohustuslike parameetrite sisestamine. Keskenduge sõidukite arvule; Kümned sarnased sõidukimudelid on üllatavad.
ala
Mida see teeb?
hea näide
halb näide
nimi
Sõiduki ID
order_status_getir
tuua
kirjeldus
Mida see teeb + millal helistada
"Tagastab lasti staatuse; helistage, kui kasutaja küsib, kus tellimus on"
"toob andmeid"
sisend_skeem
Parameetri tüüp ja nõue
{order_no: string, märkusega}
diagrammi / kirjeldust pole
tööriista_kasutus → tööriista_tulemus Silmus
Tsükkel toimib samm-sammult järgmiselt:
- Saadad mudelile kasutaja küsimuse + tööriistade kirjeldused.
- Mudel kas vastab otse või genereerib ploki tool_use: "call order_durumu_getir with order_no=SP-1024."
- Teie rakendus tegelikult käivitab tööriista (teeb andmebaasi päringu).
- Sa saadad tulemuse mudelile tagasi kui tool_result.
- Selle tulemusega annab mudel kas lõpliku vastuse või kutsub välja mõne muu tööriista. Tsükkel jätkub, kuni modell ütleb "Olen valmis".
# Agent loop (conceptual)messages = [kasutaja_küsimus]while True: vastus = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harness.run(response.tool_name, response.entries) # APPLICATION jookseb sõnumeid murda # lõplik vastus; silmuse otsad
Kaasaegsed SDK-d pakuvad tööriistakäivitajaid, mis seda tsüklit teie eest käivitavad; sa lihtsalt kirjutad tööriista funktsioonid. Aga see on täpselt see, mis kulisside taga toimub.
Vigade haldamine
Tööriistad võivad ebaõnnestuda: tellimust ei leitud, API aegunud, sisend on vale. Kui te ei saa tööriista käivitada, tagastage tõrge mudelile kirjeldava tööriista_tulemusena ("viga: tellimuse numbrit SP-9999 ei leitud") ja vealippu. Mudel näeb seda ja selgitab seda kasutajale õrnalt või proovib teistmoodi. Ärge neelake viga alla ja tagastage tühjad tulemused; Modell peab teadma, mis valesti läks.
Nõrk/tugev sõiduki kirjeldus
Nõrk (määramatu nimisõna, ilma "millal"):
name: "data", description: "fetches data"# Mudel ei tea, millal ja kuidas helistada; See kas ei helista üldse või helistab valesti.
Tugev (netonimi + millal + parameetri kirjeldus):
name: "musteri_bakiyesi_getir"description: "Tagastab kliendi arvelduskonto saldo. Helista, kui kasutaja küsib deebetit, krediiti või saldot. EI soorita makset."input_schema: {custeri_id: string ("Kliendi ID")}# Mudel helistab õigel ajal, õigete parameetritega, teades oma limiiti.
Kolm miniümbrist
Juhtum 1 – tarbetu agent. Üks meeskond ehitas "teksti kokkuvõtte" äri mitme tööriistaga agendiga; Iga kokkuvõte võtab 4 mudelikõnet ja 9 sekundit. Töö oli tegelikult ühe kõne töö. Kui eemaldasime agendi ja vähendasime selle ühele kõnele, lühenes aeg 1,5 sekundini ja maksumus veerandini. Õppetund: kasutage agenti, kui see on tõesti vajalik.
Juhtum 2 – nõrk selgitus, vale kõne. Tugiagendis kutsus mudel nii saldo- kui ka tarneküsimuses juhuslikult välja ebaselge tööriista nimega toomine. Kui sõidukid jaotada tasakaalu_getir ja cargo_durumu_getir ning lisada selgitused "helista millal", vähenes vale sõidukivalik 18-lt 1-le 50 näite kohta.
Juhtum 3 – tõrge alla neelatud. Agent tagastas tühjad tulemused, kui tellimust ei leitud; Mudel tõlgendas seda kui "tellimus tarniti" ja eksitas klienti. Kui tõrketeade on kirjutatud otseselt lahtrisse tool_result ("tellimust ei leitud"), ütleb mudel õigesti "Ma ei leidnud seda numbrit, kas saate seda kontrollida?" hakkas ta ütlema.
Levinud vead
- Kõik agendi poole pöördumine: kuigi ühest kõnest piisab, lisab agent kulusid ja viivitust.
- Sõiduki ebamäärane kirjeldus: mudel ei tea, millal helistada; valib valesti.
- Arvates, et mudel juhib sõidukit: rakmed juhivad sõidukit; modell lihtsalt tahab.
- Vea allaneelamine: mudel peab teadma, mis valesti läks; Andke veale avatud tööriist_tulemus.
- Liiga palju sarnaseid sõidukeid: mudel läheb segadusse; Hoidke tööriistakomplekt keskendunud ja minimaalne.
Tähelepanu: see, et mudelil on kirjas "helista sellele sõidukile", ei tähenda see, et tuleks midagi ette võtta. Destruktiivsete tööriistade puhul (kustutamine, väljamaksmine, meilimine) ei tohiks teie rakendus kõnet pimesi täita – see on järgmise osa turbeteema tuum.
Kokkuvõttes
- Agent = mudel (otsus) + tööriistad (funktsioonid) + tsükkel (kutsuda tööriista, saada tulemus, otsustada uuesti).
- Ühe mustriga kõne ei ole agent; agent on samm-sammult protsess.
- Mudel ei tööta sõidukiga; Teie rakendus töötab (rakmed) ja tagastab tulemuse kui tool_result.
- Tööriista tuvastatakse nime, kirjelduse (täpsemalt "helista millal") ja input_schema järgi.
- Tsükkel jätkub kui tööriista_kasutus → rakmed jooksevad → tööriista_tulemus → mudel jätkub, kuni mudel ütleb "valmis"; vead on mudelile selgesõnaliselt teada.
Rakenduse ülesanne
Kujundage oma ettevõttest 3 tööriista, mida saate agendile kinkida. (1) Kirjutage iga nimi, kirjeldus koos "helista millal" ja sisendi_skeem; Olgu vähemalt üks mittepurustav lugemisvahend ja üks arvutus. (2) Valige realistlik kasutajaküsimus ja kirjutage käsitsi samm-sammult (tsüklina), milliseid neist tööriistadest mudel milliste sisenditega kutsub ja mida teeb pärast tööriista_tulemuse saabumist. (3) Seadistage stsenaarium, mille korral üks tööriistadest ebaõnnestub, ja näidake, kuidas veateade mudelisse naaseb.
kontrollnimekiri
- [ ] Saan agendi määratleda kui "mudel + tööriistad + silmus" ja otsustada, millal seda vaja on.
- [ ] Ma tean, et rakmed juhivad sõidukit, mudel lihtsalt tahab seda.
- Võin kirjutada kindla sõidukikirjelduse koos [ ] nime, kirjelduse ("helista millal") ja input_schemaga.
- Saan samm-sammult jälgida tsüklit [ ] tool_use → tool_result.
- [ ] Teatan tööriista vigadest mudelile kui avatud tööriista_tulemus.