Jedinica 9 / 11

AI agenti i upotreba alata

Dobici:

  • Definiranje agenta kao 'model + alati + petlja' i odlučivanje kada je to potrebno
  • Pisanje definicije alata sa imenom, opisom i input_schema
  • Nadgledanje toka i rukovanje greškama u petlji tool_use i tool_result

Do sada je model uvijek radio samo jedan posao: primao unos teksta, proizvodio tekstualne odgovore. Ali pravi posao često zahteva više od teksta; izvođenje proračuna, ispitivanje baze podataka, pozivanje API-ja, saznavanje trenutnog kursa. Manekenka ne može sama da uradi ove stvari - ali može odlučiti kada treba da se urade i zamoli nekoga da ih uradi. To je ono što upotreba alata daje modelu, a to je osnova AI agenata. U ovoj jedinici naučit ćemo što je agent, kako je definiran alat i kako funkcionira petlja tool_use.

Šta je agent? Model + Alati + Petlja

AI agent se sastoji od tri dijela: modela (mozak koji donosi odluku), alata (funkcije koje model može pozvati: vremenska prognoza, upit baze podataka, slanje e-pošte) i petlje (petlja; model poziva alat, dobiva rezultat, ponovo odlučuje što će učiniti, itd.).

Kritična razlika: Poziv jednog uzorka nije agent. Agent je proces u kojem model napreduje korak po korak, u svakom koraku birajući sljedeći potez na osnovu rezultata alata. "Razmišljajte kao čovjek, koristite svoje ruke, pogledajte rezultat, razmislite ponovo."

Važna činjenica: sam model ne upravlja vozilom. Model samo kaže "Želim pozvati ovaj alat sa ovim ulazima". Vaša aplikacija (koja se zove pojas) pokreće alat i vraća rezultat modelu. Ovo je od vitalnog značaja za sigurnost: model ne dodiruje direktno vaš sistem; Svaka akcija je pod vašom kontrolom.

Savjet: Ne pokušavajte riješiti svaki problem s agentom. Agent; povećava rizik od kašnjenja, troškova i grešaka. Prvo pitajte: „Hoće li se ovo riješiti jednim pozivom ili fiksnim tokom rada?“ Ako je odgovor da, nema potrebe za agentom. Agent je za otvorene zadatke kod kojih koraci ne mogu biti poznati unaprijed.

Definicija alata: ime, opis, input_schema

Da biste uveli alat u model, dajete tri stvari:

  • naziv: Identitet vozila, npr. get_weather.
  • opis: Šta alat radi i kada ga pozvati. Ovo je najvažnije područje koje omogućava modelu da odabere pravi alat u pravo vrijeme. Napišite ne samo "šta radi", već i "pozovi kada".
  • input_schema (ulazna šema): JSON shema koja definira koje parametre alat očekuje, u kojem tipu.

# Definicija vozila (konceptualna — JSON šema){ "name": "get_order_status", "description": "Preuzima trenutni status isporuke narudžbe. Pozovite kada korisnik pita gdje se nalazi broj narudžbe ili kada će stići.", "input_schema": { "type": "object", "properties": { "string:de": { "order"_no" "Broj narudžbe, npr. SP-1024"} }, "obavezno": ["narudžbeni broj"] }}

Pravila za dobar opis alata: jasan i koncizan naziv, opis sa "kada koristiti", opis za svaki parametar, stavljajući istinski obavezne u obavezne. Držite fokus na broju vozila; Deseci sličnih modela vozila su iznenađujući.

području

šta to radi?

dobar primjer

loš primjer

ime

ID vozila

order_status_getir

donesi

opis

Šta radi + kada nazvati

"Vraća status tereta; pozovite kada korisnik pita gdje je narudžba"

"dohvaća podatke"

input_schema

Vrsta parametra i zahtjev

{order_no: niz, s napomenom}

bez dijagrama / bez opisa

tool_use → tool_result Petlja

Ciklus funkcionira ovako, korak po korak:

  1. Šaljete korisničko pitanje + opis alata modelu.
  2. Model ili odgovara direktno ili generiše blok tool_use: "pozovi order_durumu_getir sa order_no=SP-1024."
  3. Vaša aplikacija zapravo pokreće alat (pretražuje bazu podataka).
  4. Rezultat šaljete nazad u model kao tool_result.
  5. Sa ovim rezultatom, model ili proizvodi konačni odgovor ili poziva drugi alat. Ciklus se nastavlja sve dok model ne kaže "Završio sam".

# Petlja agenta (konceptualne) poruke = [user_question]dok je True: odgovor = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": rezultat = harness.run(response.tool_name, response.entries) # APPLICATION [response.tool_name, response.entries] # APPLICATION [response return messages] rezultat=rezultat return poruke +) # konačni odgovor; petlja završava

Moderni SDK-ovi nude pokretače alata koji pokreću ovu petlju umjesto vas; samo pišete funkcije alata. Ali upravo se to dešava iza kulisa.

Upravljanje greškama

Alati možda neće uspjeti: narudžba nije pronađena, API je istekao, unos je nevažeći. Ako ne možete pokrenuti alat, vratite grešku modelu kao deskriptivni tool_result ("greška: Broj narudžbe SP-9999 nije pronađen") i oznaku greške. Model to može vidjeti i nježno objasniti korisniku ili pokušati na drugi način. Nemojte progutati grešku i vratiti prazne rezultate; Model mora znati šta je pošlo po zlu.

Slab/Jaki opis vozila

Slab (neodređena imenica, bez "kada"):

naziv: "podaci", opis: "dohvaća podatke"# Model ne zna kada i kako pozvati; Ili uopšte ne zove ili zove pogrešno.

Jaka (neto ime + kada + opis parametra):

name: "musteri_bakiyesi_getir"description: "Vraća trenutno stanje na računu klijenta. Pozovite kada korisnik zatraži zaduženje, kredit ili stanje. NE vrši plaćanje."input_schema: {custeri_id: string ("ID klijenta")}# Model poziva u pravo vrijeme, sa pravim parametrima, znajući svoje ograničenje.

Tri mini futrole

Slučaj 1 — Nepotreban agent. Jedan tim je izgradio posao „sažimanja teksta“ sa agentom sa više alata; Svaki rezime traje 4 poziva modela i 9 sekundi. Posao je zapravo bio posao sa jednim pozivom. Kada smo uklonili agenta i sveli ga na jedan poziv, vrijeme se smanjilo na 1,5 sekunde, a cijena na jednu četvrtinu. Pouka: koristite agenta kada je zaista potrebno.

Slučaj 2 — Slabo objašnjenje, pogrešan poziv. U agentu za podršku model je nasumično pozvao opskurni alat nazvan dohvati iu pitanju ravnoteže iu pitanju isporuke. Kada su vozila podijeljena na balance_getir i cargo_durumu_getir i dodana su objašnjenja "pozovi kada", pogrešan odabir vozila se smanjio sa 18 na 1 u 50 primjera.

Slučaj 3 — Greška progutana. Agent je vraćao prazne rezultate kada nalog nije pronađen; Model je to protumačio kao "porudžbina je isporučena" i doveo kupca u zabludu. Kada je poruka o grešci eksplicitno napisana u tool_result ("narudžba nije pronađena"), model ispravno kaže "Nisam mogao pronaći ovaj broj, možete li ga provjeriti?" počeo je da kaže.

Uobičajene greške

  • Prebacivanje svega na agenta: Dok je jedan poziv dovoljan, agent dodaje troškove i kašnjenje.
  • Nejasan opis vozila: Model ne zna kada da pozove; bira pogrešno.
  • Razmišljajući da model pokreće vozilo: pojas pokreće vozilo; model samo želi.
  • Gutanje greške: Model mora znati šta je pošlo po zlu; Navedite grešku kao open tool_result.
  • Previše sličnih vozila: Model se zbuni; Neka skup alata bude fokusiran i minimalan.
Pažnja: Samo zato što model kaže "pozovi to vozilo" ne znači da treba nešto poduzeti. Na destruktivnim alatima (brisanje, plaćanje, e-pošta) vaša aplikacija ne bi trebala slijepo izvršavati poziv — ovo je srž teme o sigurnosti u sljedećoj jedinici.

Ukratko

  • Agent = model (odluka) + alati (funkcije) + petlja (pozovite alat, dobijete rezultat, odlučite ponovo).
  • Poziv jednog uzorka nije agent; agent je proces korak po korak.
  • Model ne pokreće vozilo; Vaša aplikacija se pokreće (upregnite) i vraća rezultat kao tool_result.
  • Alat je identificiran imenom, opisom (posebno "pozovi kada") i input_schema.
  • Petlja se nastavlja kao tool_use → harness runs → tool_result → model se nastavlja sve dok model ne kaže "gotovo"; greške se eksplicitno prijavljuju modelu.

Zadatak aplikacije

Dizajnirajte 3 alata iz vlastitog poslovanja koje možete dati agentu. (1) Napišite ime, opis sa "pozovi kada" i input_schema za svaki; Neka barem jedan bude nedestruktivni alat za čitanje, a jedan proračun. (2) Odaberite realno korisničko pitanje i ručno napišite korak po korak (u petlji) koje će od ovih alata model pozvati s kojim ulazima i šta će raditi nakon što stigne tool_result. (3) Postavite scenario u kojem jedan od alata ne uspije i pokažite kako će se poruka o grešci vratiti u model.

kontrolna lista

  • [ ] Mogu definirati agenta kao "model + alati + petlja" i odlučiti kada je potreban.
  • [ ] Znam da pojas pokreće vozilo, model ga samo želi.
  • Mogu napisati solidan opis vozila sa [ ] imenom, opisom ("pozovi kada") i input_schema.
  • Mogu pratiti ciklus [ ] tool_use → tool_result korak po korak.
  • [ ] Prijavljujem greške alata modelu kao open tool_result.