Njësia 9 / 11

Agjentët e AI dhe përdorimi i mjeteve

Fitimet:

  • Përcaktimi i një agjenti si 'model + vegla + lak' dhe vendosja kur është e nevojshme
  • Shkrimi i përkufizimit të mjetit me emrin, përshkrimin dhe input_schema
  • Monitorimi i rrjedhës dhe trajtimit të gabimeve të lakut tool_use dhe tool_result

Deri më tani, modeli ka bërë gjithmonë një punë: të marrë futjen e tekstit, të prodhojë përgjigje tekstuale. Por puna reale shpesh kërkon më shumë se tekst; kryerja e një llogaritjeje, kërkimi i një baze të dhënash, thirrja e një API, gjetja e një kursi aktual të këmbimit. Modelja nuk mund t'i bëjë vetë këto gjëra - por ajo mund të vendosë kur duhet të bëhen dhe t'i kërkojë dikujt t'i bëjë ato. Kjo është ajo që përdorimi i mjetit i jep modelit, dhe kjo është baza e agjentëve të AI. Në këtë njësi, ne do të mësojmë se çfarë është një agjent, si përcaktohet mjeti dhe si funksionon cikli tool_use.

Çfarë është një Agjent? Model + Mjete + Lak

Një agjent i AI përbëhet nga tre pjesë: modeli (truri që merr vendimin), veglat (funksionet që modeli mund të thërrasë: moti, pyetja e bazës së të dhënave, dërgimi i emailit) dhe cikli (laki; modeli thërret mjetin, merr rezultatin, vendos përsëri se çfarë të bëjë, e kështu me radhë).

Dallimi kritik: Një thirrje me model të vetëm nuk është një agjent. Agjenti është një proces në të cilin modeli vazhdon hap pas hapi, në çdo hap duke zgjedhur lëvizjen tjetër bazuar në rezultatin e mjetit. "Mendoni si një njeri, përdorni duart tuaja, shikoni rezultatin, mendoni përsëri."

Një fakt i rëndësishëm: Vetë modeli nuk e përdor automjetin. Modeli thjesht thotë "Unë dua ta quaj këtë mjet me këto hyrje". Aplikacioni juaj (i quajtur parzmore) ekzekuton mjetin dhe ia kthen rezultatin modelit. Kjo është jetike për sigurinë: modeli nuk prek drejtpërdrejt sistemin tuaj; Çdo veprim është nën kontrollin tuaj.

Këshillë: Mos u përpiqni të zgjidhni çdo problem me agjentin. Agjent; rrit rrezikun e vonesave, kostove dhe gabimeve. Pyetni së pari: "A do të zgjidhet kjo me një telefonatë të vetme apo një rrjedhë pune fikse?" Nëse përgjigja është po, nuk ka nevojë për një agjent. Agjenti është për detyra të hapura ku hapat nuk mund të dihen paraprakisht.

Përkufizimi i mjetit: emri, përshkrimi, input_schema

Për të futur një mjet në model, ju jepni tre gjëra:

  • emri: Identiteti i mjetit, p.sh. marr_motin.
  • përshkrim: Çfarë bën mjeti dhe kur duhet thirrur. Kjo është fusha më e rëndësishme që lejon modelin të zgjedhë mjetin e duhur në kohën e duhur. Shkruani jo vetëm "çfarë bën", por edhe "telefononi kur".
  • input_schema (input schema): Skema JSON që përcakton se cilët parametra pret mjeti, në cilin lloj.

# Përkufizimi i automjetit (konceptual — skema JSON){ "emri": "status_get_order", "description": "Rimer statusin aktual të dërgesës së një porosie. Telefono kur përdoruesi pyet se ku është një numër porosie ose kur do të arrijë.", "input_schema": { "type": "object", "properties", "":"{ordere_no": "description": "Numri i porosisë, p.sh. SP-1024"} }, "required": ["order_no"] }}

Rregullat për një përshkrim të mirë të mjetit: emër i qartë dhe konciz, përshkrim me "kur të përdoret", përshkrim për çdo parametër, duke vendosur ato me të vërtetë të detyrueshme. Mbani të fokusuar numrin e automjeteve; Dhjetra modele të ngjashme automjetesh janë befasuese.

zonë

Çfarë bën?

shembull i mirë

shembull i keq

emri

ID e automjetit

porosi_status_getir

sjellin

përshkrimi

Çfarë bën + kur të telefononi

"Kthen statusin e ngarkesës; telefono kur përdoruesi pyet se ku është porosia"

"merr të dhëna"

input_schema

Lloji dhe kërkesa e parametrit

{order_no: varg, i shënuar}

pa diagram / pa përshkrim

mjet_përdorimi → mjet_rezultati Lak

Cikli funksionon kështu, hap pas hapi:

  1. Ju i dërgoni modelit pyetjen e përdoruesit + përshkrimet e veglave.
  2. Modeli ose përgjigjet drejtpërdrejt ose gjeneron një bllok tool_use: "call order_durumu_getir with order_no=SP-1024."
  3. Aplikacioni juaj në fakt ekzekuton mjetin (kërkon bazën e të dhënave).
  4. Ju e dërgoni rezultatin përsëri në model si mjet_rezultat.
  5. Me këtë rezultat, modeli ose prodhon përgjigjen përfundimtare ose thërret një mjet tjetër. Cikli vazhdon derisa modelja të thotë “Mbarova”.

# Agent loop (konceptuale)mesazhe = [user_question]ndersa True: answer = model.uret(messages, tools=tool_definitions) if answer.tur == "tool_use": result = harness.run(response.emri_veglave, answer.entries) # APPLICATION [result breakback tools] # përgjigje përfundimtare; lak përfundon

SDK-të moderne ofrojnë ekzekutues mjetesh që ekzekutojnë këtë lak për ju; ju thjesht shkruani funksionet e veglave. Por kjo është pikërisht ajo që po ndodh prapa skenave.

Menaxhimi i gabimeve

Mjetet mund të dështojnë: porosia nuk u gjet, API përfundon, hyrja është e pavlefshme. Nëse nuk mund ta ekzekutoni mjetin, kthejeni gabimin në model si rezultat përshkrues i mjetit ("gabim: Numri i porosisë SP-9999 nuk u gjet") dhe flamurin e gabimit. Modeli mund ta shohë këtë dhe t'ia shpjegojë butësisht përdoruesit, ose të provojë një mënyrë tjetër. Mos e gëlltisni gabimin dhe mos ktheni rezultate boshe; Modelja duhet të dijë se çfarë shkoi keq.

Përshkrimi i mjetit të dobët/të fortë

I dobët (emër i pacaktuar, pa "kur"):

emri: "të dhënat", përshkrimi: "merr të dhëna"# Modeli nuk di kur dhe si të telefonojë; Ose nuk telefonon fare ose telefonon gabimisht.

I fortë (emri neto + kur + përshkrimi i parametrit):

emri: "musteri_bakiyesi_getir"description: "Kthen bilancin e llogarisë rrjedhëse të një klienti. Telefono kur përdoruesi kërkon debi, kredi ose bilanc. NUK kryen pagesën."input_schema: {custeri_id: string ("ID-ja e klientit")}# Modeli telefonon në kohën e duhur, me parametrat e duhur, duke ditur kufijtë e tij.

Tre Mini Rastet

Rasti 1 — Agjent i panevojshëm. Një ekip ndërtoi biznesin e "përmbledhjes së tekstit" me një agjent me shumë mjete; Çdo përmbledhje kërkon 4 telefonata model dhe 9 sekonda. Puna ishte në fakt një punë me një thirrje. Kur e hoqëm agjentin dhe e reduktuam në një telefonatë të vetme, koha u ul në 1,5 sekonda dhe kostoja u ul në një të katërtën. Mësimi: përdorni agjentin kur është vërtet e nevojshme.

Rasti 2 - Shpjegim i dobët, telefonatë e gabuar. Në një agjent mbështetës, një mjet i panjohur i quajtur fetch u thirr rastësisht nga modeli si në pyetjen e bilancit ashtu edhe në atë të transportit. Kur automjetet u ndanë në balance_getir dhe cargo_durumu_getir dhe u shtuan shpjegimet "call when", përzgjedhja e gabuar e automjeteve u ul nga 18 në 1 në 50 shembuj.

Rasti 3 - Gabimi i gëlltitur. Një agjent po kthente rezultate boshe kur porosia nuk u gjet; Modeli e interpretoi këtë si "porosia u dorëzua" dhe mashtronte klientin. Kur mesazhi i gabimit është shkruar në mënyrë eksplicite në tool_result ("porosia nuk u gjet"), modeli thotë saktë "Nuk e gjeta këtë numër, a mund ta kontrolloni?" filloi të thoshte.

Gabimet e zakonshme

  • Kthimi i gjithçkaje te një agjent: Ndërsa një telefonatë është e mjaftueshme, agjenti shton koston dhe vonesën.
  • Përshkrimi i paqartë i automjetit: Modeli nuk di kur të telefonojë; zgjedh gabim.
  • Duke menduar se modeli drejton automjetin: Parzmore drejton automjetin; modeli thjesht dëshiron.
  • Gëlltitja e gabimit: Modelja duhet të dijë se çfarë shkoi keq; Jepni gabimin si open tool_result.
  • Shumë automjete të ngjashme: Modeli ngatërrohet; Mbajeni grupin e mjeteve të fokusuara dhe minimale.
Kujdes: Vetëm për shkak se modeli thotë "thirre atë automjet" nuk do të thotë se duhet marrë masa. Në mjetet shkatërruese (fshirje, arkë, email) aplikacioni juaj nuk duhet të ekzekutojë verbërisht thirrjen - kjo është thelbi i temës së sigurisë në njësinë tjetër.

Në përmbledhje

  • Agjenti = modeli (vendimi) + veglat (funksionet) + cikli (vegla e thirrjes, merrni rezultatin, vendosni përsëri).
  • Një thirrje me model të vetëm nuk është një agjent; agjenti është një proces hap pas hapi.
  • Modeli nuk e drejton automjetin; Aplikacioni juaj ekzekutohet (parzion) dhe e kthen rezultatin si rezultat_vegla.
  • Mjeti identifikohet nga emri, përshkrimi (veçanërisht "telefononi kur") dhe input_schema.
  • Cikli vazhdon si mjet_përdorimi → ekzekutimi i parzmores → rezultati_ mjeti → modeli vazhdon derisa modeli të thotë "mbaruar"; gabimet i raportohen në mënyrë eksplicite modelit.

Detyra e aplikimit

Dizenjoni 3 mjete nga biznesi juaj që mund t'i jepen agjentit. (1) Shkruani emrin, përshkrimin me "call when" dhe input_schema për secilën; Le të jetë të paktën një mjet leximi jo shkatërrues dhe një llogaritje. (2) Zgjidhni një pyetje realiste të përdoruesit dhe shkruani manualisht hap pas hapi (në një cikli) cilin prej këtyre mjeteve do të thërrasë modeli me cilat inpute dhe çfarë do të bëjë pasi të arrijë mjeti_rezultati. (3) Vendosni një skenar në të cilin një nga mjetet dështon dhe tregoni se si mesazhi i gabimit do të kthehet në model.

listë kontrolli

  • [ ] Unë mund ta përcaktoj agjentin si "model + vegla + lak" dhe të vendos kur është i nevojshëm.
  • [ ] Unë e di që parzmore e drejton automjetin, modeli thjesht e dëshiron atë.
  • Mund të shkruaj një përshkrim të fortë automjeti me [ ] emrin, përshkrimin ("telefononi kur") dhe input_schema.
  • Mund të ndjek hap pas hapi ciklin [ ] tool_use → tool_rezult.
  • [ ] I raportoj gabimet e veglave te modeli si open tool_result.