Vienetas 9 / 11

AI agentai ir įrankių naudojimas

Pelnas:

  • Agento apibrėžimas kaip „modelis + įrankiai + kilpa“ ir nuspręsti, kada jo reikia
  • Įrankio apibrėžimo rašymas su pavadinimu, aprašymu ir įvesties_schema
  • Ciklų tool_use ir tool_result srauto ir klaidų apdorojimo stebėjimas

Iki šiol modelis visada atlikdavo vieną darbą: gaudavo teksto įvestį, gamindavo tekstinius atsakymus. Tačiau tikram darbui dažnai reikia daugiau nei teksto; atlikti skaičiavimą, užklausti duomenų bazėje, iškviesti API, sužinoti esamą valiutos kursą. Modelis negali pats to padaryti, bet gali nuspręsti, kada tai turi būti padaryta, ir paprašyti, kad kas nors tai padarytų. Tai įrankio naudojimas suteikia modeliui, ir tai yra AI agentų pagrindas. Šiame skyriuje sužinosime, kas yra agentas, kaip apibrėžiamas įrankis ir kaip veikia ciklas tool_use.

Kas yra agentas? Modelis + įrankiai + kilpa

AI agentą sudaro trys dalys: modelis (smegenys, kurios priima sprendimą), įrankiai (funkcijos, kurias modelis gali iškviesti: orai, duomenų bazės užklausa, el. pašto siuntimas) ir kilpa (ciklas; modelis iškviečia įrankį, gauna rezultatą, vėl nusprendžia, ką daryti ir pan.).

Svarbus skirtumas: vieno modelio skambutis nėra agentas. Agentas yra procesas, kurio metu modelis vyksta žingsnis po žingsnio, kiekviename žingsnyje pasirenkant kitą žingsnį pagal įrankio rezultatą. „Mąstyk kaip žmogus, naudok rankas, pažiūrėk į rezultatą, pagalvok dar kartą“.

Svarbus faktas: pats modelis nevaldo transporto priemonės. Modelis tiesiog sako: „Noriu paskambinti šiam įrankiui su šiais įėjimais“. Jūsų programa (vadinama pakinktais) paleidžia įrankį ir grąžina rezultatą modeliui. Tai labai svarbu saugumui: modelis tiesiogiai neliečia jūsų sistemos; Kiekvienas veiksmas yra jūsų kontroliuojamas.

Patarimas: nesistenkite išspręsti visų problemų su agentu. Agentas; padidina vėlavimo, išlaidų ir klaidų riziką. Pirmiausia paklauskite: „Ar tai bus išspręsta vienu skambučiu ar fiksuota darbo eiga? Jei atsakymas teigiamas, agento nereikia. Agentas skirtas neribotoms užduotims, kurių veiksmų negalima žinoti iš anksto.

Įrankio apibrėžimas: pavadinimas, aprašymas, įvesties_schema

Norėdami įtraukti įrankį į modelį, pateikiate tris dalykus:

  • pavadinimas: transporto priemonės tapatybė, pvz. get_weather.
  • aprašymas: ką įrankis veikia ir kada jį iškviesti. Tai yra svarbiausia sritis, leidžianti modeliui tinkamu laiku pasirinkti tinkamą įrankį. Rašykite ne tik „kas veikia“, bet ir „skambinti kada“.
  • input_schema (įvesties schema): JSON schema, apibrėžianti, kokių parametrų įrankis tikisi ir kokio tipo.

# Transporto priemonės apibrėžimas (konceptualus – JSON schema){ "name": "get_order_status", "description": "Nuskaito dabartinę užsakymo pristatymo būseną. Skambinkite, kai vartotojas klausia, kur yra užsakymo numeris arba kada jis bus pristatytas.", "input_schema": { "type": "object", "properties": { "order_no":,":st" pvz., SP-1024"} }, "required": ["order_no"] }}

Gero įrankio aprašymo taisyklės: aiškus ir glaustas pavadinimas, aprašymas su „kada naudoti“, kiekvieno parametro aprašymas, įvesti tikrai privalomus. Sutelkite dėmesį į transporto priemonių skaičių; Dešimtys panašių transporto priemonių modelių stebina.

plotas

Ką tai daro?

geras pavyzdys

blogas pavyzdys

pavadinimas

Transporto priemonės ID

order_status_getir

atnešti

aprašymas

Ką jis veikia + kada skambinti

"Grąžina krovinio statusą; skambinkite, kai vartotojas paklaus, kur yra užsakymas"

"paima duomenis"

įvesties_schema

Parametrų tipas ir reikalavimas

{order_no: eilutė, anotuota}

nėra diagramos / nėra aprašymo

tool_use → tool_result Ciklas

Ciklas veikia taip, žingsnis po žingsnio:

  1. Modeliui siunčiate vartotojo klausimą + įrankių aprašymus.
  2. Modelis atsako tiesiogiai arba sugeneruoja bloką tool_use: „skambinkite order_durumu_getir su order_no=SP-1024“.
  3. Jūsų programa iš tikrųjų paleidžia įrankį (užklausa duomenų bazėje).
  4. Jūs siunčiate rezultatą atgal į modelį kaip tool_result.
  5. Su šiuo rezultatu modelis arba pateikia galutinį atsakymą, arba iškviečia kitą įrankį. Ciklas tęsiasi tol, kol modelis pasakys „Baigiau“.

# 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) # APPLICATION vykdo pranešimus # APPLICATION vykdo pranešimus pertrauka # galutinis atsakymas; kilpos galai

Šiuolaikiniai SDK siūlo įrankių paleidiklius, kurie paleidžia šią kilpą už jus; Jūs tiesiog parašykite įrankio funkcijas. Bet kaip tik tai vyksta užkulisiuose.

Klaidų valdymas

Įrankiai gali sugesti: užsakymas nerastas, API skirtasis laikas baigėsi, įvestis neteisinga. Jei negalite paleisti įrankio, grąžinkite klaidą modeliui kaip aprašomąjį įrankio_rezultatą ("klaida: užsakymo numeris SP-9999 nerastas") ir klaidos vėliavėlę. Modelis gali tai pamatyti ir švelniai paaiškinti vartotojui arba išbandyti kitą būdą. Neprarykite klaidos ir grąžinkite tuščius rezultatus; Modelis turi žinoti, kas nutiko.

Silpnos/stiprios transporto priemonės aprašymas

Silpnas (neapibrėžtas daiktavardis, nėra "kada"):

pavadinimas: "duomenys", aprašymas: "atneša duomenis"# Modelis nežino, kada ir kaip skambinti; Arba visai neskambina, arba skambina neteisingai.

Stiprus (neto pavadinimas + kada + parametro aprašymas):

name: "musteri_bakiyesi_getir"description: "Grąžina kliento einamosios sąskaitos likutį. Skambina, kai vartotojas paprašo debeto, kredito ar likučio. NEATlieka mokėjimo."input_schema: {custeri_id: string ("Kliento ID")}# Modelis skambina tinkamu laiku, su tinkamais parametrais, žinodamas savo limitą.

Trys mini dėklai

1 atvejis – nereikalingas agentas. Viena komanda sukūrė „teksto santraukos“ verslą naudodama kelių įrankių agentą; Kiekviena santrauka trunka 4 modelio skambučius ir 9 sekundes. Darbas iš tikrųjų buvo vieno skambučio darbas. Pašalinus agentą ir sumažinus jį iki vieno skambučio, laikas sutrumpėjo iki 1,5 sekundės, o kaina sumažėjo iki ketvirčio. Pamoka: naudokite agentą, kai tikrai reikia.

2 atvejis – silpnas paaiškinimas, neteisingas skambutis. Pagalbiniame agente modelis atsitiktinai iškvietė neaiškų įrankį, pavadintą „Ftch“, tiek balanso, tiek pristatymo klausimu. Transporto priemones suskirsčius į balanso_getir ir cargo_durumu_getir bei pridėjus paaiškinimus "skambinti kada", neteisingas transporto priemonių pasirinkimas sumažėjo nuo 18 iki 1 iš 50 pavyzdžių.

3 atvejis – praryta klaida. Agentas grąžino tuščius rezultatus, kai užsakymas nebuvo rastas; Modelis tai interpretavo kaip „užsakymas buvo pristatytas“ ir suklaidino klientą. Kai klaidos pranešimas yra aiškiai parašytas į tool_result ("užsakymas nerastas"), modelis teisingai sako "Aš negaliu rasti šio numerio, ar galite jį patikrinti?" jis pradėjo sakyti.

Dažnos klaidos

  • Viską nukreipti į agentą: nors užtenka vieno skambučio, agentas padidina išlaidas ir vėluoja.
  • Neaiškus transporto priemonės aprašymas: modelis nežino, kada skambinti; pasirenka neteisingai.
  • Galvojimas, kad modelis valdo transporto priemonę: diržai valdo transporto priemonę; modelis tiesiog nori.
  • Klaidos nurijimas: modelis turi žinoti, kas nutiko; Pateikite klaidą kaip open tool_result.
  • Per daug panašių transporto priemonių: modelis susipainioja; Laikykite įrankių rinkinį sutelktą ir minimalų.
Dėmesio: vien todėl, kad modelis sako „skambink tai transporto priemonei“, nereiškia, kad reikia imtis veiksmų. Naudojant destruktyvius įrankius (ištrynimas, atsiskaitymas, el. paštas) jūsų programa neturėtų aklai vykdyti skambučio – tai yra kito skyriaus saugos temos esmė.

Apibendrinant

  • Agentas = modelis (sprendimas) + įrankiai (funkcijos) + kilpa (iškvieskite įrankį, gaukite rezultatą, nuspręskite dar kartą).
  • Vieno modelio skambutis nėra agentas; agentas yra žingsnis po žingsnio procesas.
  • Modelis neveikia transporto priemonės; Jūsų programa paleidžiama (raktai) ir pateikia rezultatą kaip tool_result.
  • Įrankis identifikuojamas pagal pavadinimą, aprašymą (konkrečiai „skambinti, kai“) ir įvesties_schemą.
  • Ciklas tęsiasi kaip tool_use → harness veikia → tool_result → modelis tęsiasi tol, kol modelis pasakys "atlikta"; apie klaidas aiškiai pranešama modeliui.

Taikymo užduotis

Sukurkite 3 savo verslo įrankius, kuriuos galite duoti agentui. (1) Parašykite kiekvieno pavadinimą, aprašymą su "skambinti kada" ir įvesties_schemą; Tegul bent vienas yra neardomasis skaitymo įrankis, o kitas – skaičiavimas. (2) Pasirinkite realų vartotojo klausimą ir rankiniu būdu žingsnis po žingsnio (ciklu) parašykite, kurį iš šių įrankių modelis iškvies naudodamas įvestį ir ką veiks, kai pasirodys įrankis_result. (3) Nustatykite scenarijų, kai vienas iš įrankių sugenda, ir parodykite, kaip klaidos pranešimas grįš į modelį.

kontrolinis sąrašas

  • [ ] Galiu apibrėžti agentą kaip „modelis + įrankiai + kilpa“ ir nuspręsti, kada jo reikia.
  • [ ] Žinau, kad diržai valdo transporto priemonę, modelis tiesiog to nori.
  • Galiu parašyti solidų transporto priemonės aprašymą su [ ] pavadinimu, aprašymu ("skambinti kada") ir įvesties_schema.
  • Galiu žingsnis po žingsnio sekti [ ] tool_use → tool_result ciklą.
  • [ ] Pranešu apie įrankio klaidas modeliui kaip open tool_result.