Yksikkö 9 / 11

AI-agentit ja työkalujen käyttö

Voitot:

  • Agentin määrittäminen muotoon "malli + työkalut + silmukka" ja päättäminen milloin sitä tarvitaan
  • Työkalun määritelmän kirjoittaminen nimellä, kuvauksella ja input_schema
  • Tool_use- ja tool_result-silmukan kulun ja virheiden käsittelyn valvonta

Tähän asti malli on aina tehnyt yhtä työtä: vastaanottanut tekstinsyöttöä, tuottanut tekstivastauksia. Mutta todellinen työ vaatii usein muutakin kuin tekstiä; laskennan suorittaminen, tietokannan kysely, API:n kutsuminen, nykyisen valuuttakurssin selvittäminen. Malli ei voi tehdä näitä asioita itse, mutta hän voi päättää, milloin ne on tehtävä, ja pyytää jotakuta tekemään ne. Tämän työkalun käyttö antaa mallille, ja tämä on tekoälyagenttien perusta. Tässä osiossa opimme, mikä agentti on, kuinka työkalu määritellään ja miten työkalu_käyttösilmukka toimii.

Mikä on agentti? Malli + työkalut + silmukka

Tekoälyagentti koostuu kolmesta osasta: mallista (aivot, jotka tekevät päätöksen), työkaluista (funktiot, joita malli voi kutsua: sää, tietokantakysely, sähköpostin lähettäminen) ja silmukasta (silmukka; malli kutsuu työkalua, saa tuloksen, päättää uudelleen mitä tehdä, ja niin edelleen).

Kriittinen ero: Yksittäinen kuviopuhelu ei ole agentti. Agentti on prosessi, jossa malli etenee askel askeleelta ja jokaisessa vaiheessa valitsee seuraavan liikkeen työkalun tuloksen perusteella. "Ajattele kuin ihminen, käytä käsiäsi, katso tulosta, ajattele uudelleen."

Tärkeä tosiasia: Malli itsessään ei käytä ajoneuvoa. Malli sanoo vain "Haluan kutsua tätä työkalua näillä tuloilla". Sovelluksesi (jota kutsutaan valjaiksi) suorittaa työkalun ja palauttaa tuloksen malliin. Tämä on tärkeää turvallisuuden kannalta: malli ei kosketa suoraan järjestelmääsi; Jokainen toiminta on sinun hallinnassasi.

Vinkki: Älä yritä ratkaista kaikkia ongelmia agentin kanssa. Agent; lisää viivästysten, kustannusten ja virheiden riskiä. Kysy ensin: "Ratkaistaanko tämä yhdellä puhelulla vai kiinteällä työnkululla?" Jos vastaus on kyllä, agenttia ei tarvita. Agentti on tarkoitettu avoimiin tehtäviin, joissa vaiheita ei voi tietää etukäteen.

Työkalun määritelmä: nimi, kuvaus, input_schema

Työkalun sisällyttämiseksi malliin annat kolme asiaa:

  • nimi: Ajoneuvon tunniste, esim. get_weather.
  • kuvaus: Mitä työkalu tekee ja milloin sitä kutsutaan. Tämä on tärkein alue, jonka avulla malli voi valita oikean työkalun oikeaan aikaan. Älä kirjoita vain "mitä tekee" vaan myös "soita milloin".
  • input_schema (syöttöskeema): JSON-skeema, joka määrittää, mitä parametreja työkalu odottaa ja missä tyypissä.

# Ajoneuvon määritelmä (käsitteellinen — JSON-skeema){ "name": "get_order_status", "description": "Hakee tilauksen nykyisen toimitustilan. Soita, kun käyttäjä kysyy, missä tilausnumero on tai milloin se saapuu.", "input_schema": { "type": "object", "properties": { "order_no": "order:":st esim. SP-1024"} }, "pakollinen": ["tilausnro"] }}

Hyvän työkalukuvauksen säännöt: selkeä ja ytimekäs nimi, kuvaus "milloin käyttää", kuvaus jokaiselle parametrille, aidosti pakollisten määrittäminen. Pidä ajoneuvojen lukumäärä keskittyneenä; Kymmeniä samankaltaisia ​​ajoneuvomalleja yllättävät.

alueella

Mitä se tekee?

hyvä esimerkki

huono esimerkki

nimi

Ajoneuvon tunnus

order_status_getir

tuoda

kuvaus

Mitä se tekee + milloin soittaa

"Palauttaa lastin tilan; soita, kun käyttäjä kysyy missä tilaus on"

"hakee dataa"

input_schema

Parametrin tyyppi ja vaatimus

{order_no: merkkijono, huomautettu}

ei kaaviota / ei kuvausta

tool_use → tool_result Silmukka

Sykli toimii näin, askel askeleelta:

  1. Lähetät mallille käyttäjäkysymyksen + työkalukuvaukset.
  2. Malli joko vastaa suoraan tai luo tool_use -lohkon: "soita order_durumu_getir komennolla order_no=SP-1024."
  3. Sovelluksesi todella suorittaa työkalun (kyselyt tietokannasta).
  4. Lähetät tuloksen takaisin malliin muodossa tool_result.
  5. Tällä tuloksella malli joko tuottaa lopullisen vastauksen tai kutsuu toista työkalua. Jakso jatkuu, kunnes malli sanoo "Olen valmis".

# Agenttisilmukka (käsitteellinen)messages = [user_question]while True: vastaus = malli.uret(viestit, työkalut=työkalun_määritykset) if response.tur == "työkalun_käyttö": tulos = harness.run(response.tool_name, response.entries) # APPLICATION suorittaa viestejä tauko # lopullinen vastaus; silmukan päät

Nykyaikaiset SDK:t tarjoavat työkaluja, jotka suorittavat tämän silmukan puolestasi; kirjoitat vain työkalun toiminnot. Mutta juuri sitä kulissien takana tapahtuu.

Virheenhallinta

Työkalut saattavat epäonnistua: tilausta ei löydy, API aikakatkaistiin, syöte on virheellinen. Jos et voi suorittaa työkalua, palauta virhe malliin kuvaavana työkalun_tuloksena ("virhe: tilausnumeroa SP-9999 ei löydy") ja virhelippu. Malli voi nähdä tämän ja selittää sen käyttäjälle lempeästi tai yrittää toisella tavalla. Älä niele virhettä ja palauta tyhjiä tuloksia; Mallin on tiedettävä, mikä meni pieleen.

Heikko/vahva ajoneuvon kuvaus

Heikko (epämääräinen substantiivi, ei "kun"):

nimi: "data", kuvaus: "hakee tiedot"# Malli ei tiedä milloin ja miten soittaa; Se joko ei soita ollenkaan tai soittaa väärin.

Vahva (verkkonimi + milloin + parametrin kuvaus):

name: "musteri_bakiyesi_getir"description: "Palauttaa asiakkaan nykyisen tilin saldon. Soita, kun käyttäjä pyytää veloitusta, hyvitystä tai saldoa. EI suorita maksua."input_schema: {custeri_id: string ("Asiakastunnus")}# Malli soittaa oikeaan aikaan, oikeilla parametreilla, tietäen rajansa.

Kolme minikoteloa

Tapaus 1 – Tarpeeton agentti. Yksi tiimi rakensi "tiivistelmätekstin" -liiketoiminnan monityökaluagentin avulla; Jokainen yhteenveto kestää 4 mallipuhelua ja 9 sekuntia. Työ oli itse asiassa yhden puhelun työ. Kun poistimme agentin ja pienensimme sen yhdeksi puheluksi, aika lyheni 1,5 sekuntiin ja kustannukset neljännekseen. Oppitunti: käytä agenttia, kun se todella on tarpeen.

Tapaus 2 – Heikko selitys, väärä soitto. Tukiagentissa malli kutsui satunnaisesti epäselvää työkalua nimeltä fetch sekä saldokysymyksessä että toimituskysymyksessä. Kun ajoneuvot jaettiin luokkaan balance_getir ja cargo_durumu_getir sekä "soita kun" -selitykset lisättiin, väärä ajoneuvovalinta väheni 18:sta yhteen 50 esimerkissä.

Tapaus 3 – Virhe nielty. Agentti palautti tyhjiä tuloksia, kun tilausta ei löytynyt; Malli tulkitsi tämän "tilaus toimitettiin" ja vei asiakkaan harhaan. Kun virhesanoma kirjoitetaan nimenomaisesti kohtaan tool_result ("tilausta ei löydy"), malli sanoo oikein "En löytänyt tätä numeroa, voitko tarkistaa sen?" hän alkoi sanoa.

Yleisiä virheitä

  • Kaiken kääntäminen agentille: Vaikka yksi puhelu riittää, agentti lisää kustannuksia ja viivettä.
  • Epämääräinen ajoneuvon kuvaus: Malli ei tiedä milloin soittaa; valitsee väärin.
  • Ajattelee, että malli pyörittää ajoneuvoa: Valjaat pyörittävät ajoneuvoa; malli vain haluaa.
  • Virheen nieleminen: Mallin on tiedettävä, mikä meni pieleen; Anna virheeksi avoin työkalu_tulos.
  • Liian monta samankaltaista ajoneuvoa: Malli hämmentyy; Pidä työkalusarja keskittyneenä ja minimaalisena.
Huomio: Se, että malli sanoo "soita sille ajoneuvolle", ei tarkoita, että toimenpiteisiin pitäisi ryhtyä. Haitallisissa työkaluissa (poisto, kassa, sähköposti) sovelluksesi ei saa suorittaa puhelua sokeasti – tämä on seuraavan osan turvallisuusaiheen ydin.

Yhteenvetona

  • Agentti = malli (päätös) + työkalut (funktiot) + silmukka (kutsu työkalu, hanki tulos, päätä uudelleen).
  • Yksittäinen kuviopuhelu ei ole agentti; agentti on vaiheittainen prosessi.
  • Malli ei käytä ajoneuvoa; Sovelluksesi suoritetaan (valjaat) ja palauttaa tuloksen muodossa tool_result.
  • Työkalu tunnistetaan nimellä, kuvauksella (erityisesti "soita kun") ja input_schema.
  • Silmukka jatkuu muodossa tool_use → valjaat suoritetaan → tool_result → malli jatkuu, kunnes malli sanoo "valmis"; virheet raportoidaan mallille erikseen.

Sovellustehtävä

Suunnittele 3 työkalua omasta yrityksestäsi, jotka voit antaa agentille. (1) Kirjoita nimi, kuvaus "soita kun" ja input_schema kullekin; Olkoon ainakin yksi tuhoamaton lukutyökalu ja yksi laskelma. (2) Valitse realistinen käyttäjäkysymys ja kirjoita manuaalisesti askel askeleelta (silmukassa), mitä näistä työkaluista malli kutsuu millä syötteillä ja mitä se tekee, kun työkalu_tulos on saapunut. (3) Määritä skenaario, jossa jokin työkaluista epäonnistuu, ja näytä, kuinka virhesanoma palaa malliin.

tarkistuslista

  • [ ] Osaan määritellä agentin muodossa "malli + työkalut + silmukka" ja päättää milloin sitä tarvitaan.
  • [ ] Tiedän, että valjaat pyörittävät ajoneuvoa, malli vain haluaa sen.
  • Pystyn kirjoittamaan kiinteän ajoneuvokuvauksen, jossa on [ ] nimi, kuvaus ("soita kun") ja input_schema.
  • Pystyn seuraamaan [ ] tool_use → tool_result sykliä askel askeleelta.
  • [ ] Raportoin työkaluvirheet malliin muodossa open tool_result.