Nyereség:
- Egy ügynök meghatározása „modell + eszközök + hurok” és annak eldöntése, hogy mikor van rá szükség
- Szerszámdefiníció írása névvel, leírással és input_schema-val
- A tool_use és tool_result ciklus folyamatának és hibakezelésének figyelése
Eddig a modell mindig egy feladatot végzett: szövegbevitelt fogadott, szöveges válaszokat készített. De a valódi munkához gyakran több kell, mint szöveg; számítás elvégzése, adatbázis lekérdezése, API hívása, aktuális árfolyam kiderítése. A modell ezeket a dolgokat nem tudja maga megtenni, de eldöntheti, hogy mikor kell ezeket elvégezni, és megkérhet valakit, hogy tegye meg. Ezt az eszközhasználat adja a modellnek, és ez az AI-ügynökök alapja. Ebben az egységben megtanuljuk, mi az ügynök, hogyan definiálható az eszköz, és hogyan működik az tool_use ciklus.
Mi az ügynök? Modell + Szerszámok + Hurok
Az AI-ügynök három részből áll: a modellből (a döntést hozó agy), az eszközökből (a modell által meghívható függvények: időjárás, adatbázis-lekérdezés, e-mail küldés) és a hurokból (a hurok; a modell meghívja az eszközt, megkapja az eredményt, újra eldönti, mit tegyen, és így tovább).
Kritikus megkülönböztetés: Egyetlen mintahívás nem ügynök. Az ügynök egy folyamat, amelyben a modell lépésről lépésre halad, minden lépésben kiválasztja a következő lépést az eszköz eredménye alapján. "Gondolkodjon emberként, használja a kezét, nézze meg az eredményt, gondolja újra."
Fontos tény: maga a modell nem működteti a járművet. A modell csak azt mondja: "Ezekkel a bemenetekkel szeretném meghívni ezt az eszközt". Az alkalmazás (úgynevezett kábelköteg) futtatja az eszközt, és visszaküldi az eredményt a modellnek. Ez létfontosságú a biztonság szempontjából: a modell nem érinti közvetlenül a rendszert; Minden tevékenység az Ön irányítása alatt áll.
Tipp: Ne próbáljon meg minden problémát az ügynökkel megoldani. Ügynök; növeli a késések, a költségek és a hibák kockázatát. Először kérdezze meg: „Ez egyetlen hívással vagy egy rögzített munkafolyamattal megoldható?” Ha a válasz igen, nincs szükség ügynökre. Az ügynök nyílt végű feladatokhoz való, ahol a lépések nem ismertek előre.
Eszköz meghatározása: név, leírás, bemeneti_séma
Ha egy eszközt szeretne bevezetni a modellbe, három dolgot kell megadnia:
- név: A jármű azonosítója, pl. get_weather.
- leírás: Mit csinál az eszköz, és mikor kell hívni. Ez a legfontosabb terület, amely lehetővé teszi a modell számára, hogy a megfelelő szerszámot a megfelelő időben válassza ki. Ne csak azt írja be, hogy „mit csinál”, hanem azt is, hogy „mikor hívjon”.
- input_schema (bemeneti séma): JSON-séma, amely meghatározza, hogy az eszköz mely paramétereket, milyen típusban várja.
# Járműdefiníció (koncepcionális — JSON-séma){ "name": "get_order_status", "description": "Lekéri a rendelés aktuális szállítási állapotát. Hívás, amikor a felhasználó megkérdezi, hol van egy rendelési szám, vagy mikor érkezik meg.", "input_schema": { "type": "object", "properties": { "order_no":,"order:":st pl. SP-1024"} }, "szükséges": ["order_no"] }}
A jó szerszámleírás szabályai: világos és tömör név, leírás "mikor kell használni", leírás minden paraméterhez, a valóban kötelezőek megadása. Tartsa fókuszban a járművek számát; Több tucat hasonló járműmodell meglepő.
területen
Mit csinál?
jó példa
rossz példa
nevet
Járműazonosító
order_status_getir
hozza
leírást
Mit csinál + mikor kell hívni
"Visszaküldi a rakomány állapotát; hívjon, ha a felhasználó megkérdezi, hol van a rendelés"
"lekéri az adatokat"
bemeneti_séma
A paraméter típusa és követelménye
{order_no: karakterlánc, megjegyzésekkel}
nincs diagram / nincs leírás
tool_use → tool_result Cikk
A ciklus lépésről lépésre így működik:
- Elküldöd a felhasználói kérdést + eszközleírásokat a modellnek.
- A modell vagy közvetlenül válaszol, vagy létrehoz egy tool_use blokkot: "call order_durumu_getir with order_no=SP-1024."
- Az alkalmazás ténylegesen futtatja az eszközt (lekérdezi az adatbázist).
- Az eredményt visszaküldi a modellnek tool_result néven.
- Ezzel az eredménnyel a modell vagy megadja a végső választ, vagy meghív egy másik eszközt. A ciklus addig folytatódik, amíg a modell ki nem mondja: "Kész."
# Agent loop (conceptual)messages = [felhasználói_kérdés]while True: response = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harness.run(response.tool_name, response.entries) # APPLICATION fut üzenetek szünet # végső válasz; hurokvégek
A modern SDK-k olyan eszközfuttatókat kínálnak, amelyek ezt a ciklust futtatják az Ön számára; csak megírod az eszközfüggvényeket. De pontosan ez történik a színfalak mögött.
Hibakezelés
Az eszközök meghibásodhatnak: a rendelés nem található, az API időtúllépés, a bevitel érvénytelen. Ha nem tudja futtatni az eszközt, adja vissza a hibát a modellnek leíró tool_resultként ("hiba: SP-9999 rendelési szám nem található") és a hibajelzőt. A modell ezt látja, és finoman elmagyarázza a felhasználónak, vagy más módszert is kipróbálhat. Ne nyelje le a hibát, és ne adjon vissza üres eredményeket; A modellnek tudnia kell, mi hibázott.
Gyenge/erős járműleírás
Gyenge (határozatlan főnév, nincs "mikor"):
name: "data", description: "fetches data"# A modell nem tudja, mikor és hogyan kell hívni; Vagy egyáltalán nem hív, vagy hibásan hív.
Erős (nettó név + mikor + paraméter leírása):
name: "musteri_bakiyesi_getir"description: "Az ügyfél folyószámla egyenlegét adja vissza. Hívjon, amikor a felhasználó terhelést, jóváírást vagy egyenleget kér. NEM fizet."input_schema: {custeri_id: string ("Ügyfélazonosító")}# A modell a megfelelő időben, a megfelelő paraméterekkel, határértékének ismeretében hív.
Három mini tok
1. eset – Szükségtelen ügynök. Az egyik csapat egy többeszközös ügynök segítségével építette fel a „szövegösszefoglaló” üzletágat; Minden összefoglaló 4 modellhívást és 9 másodpercet vesz igénybe. A munka valójában egyhívásos munka volt. Amikor eltávolítottuk az ügynököt, és egyetlen hívásra csökkentettük, az idő 1,5 másodpercre, a költség pedig egynegyedére csökkent. Tanulság: használja az ügynököt, amikor valóban szükséges.
2. eset – Gyenge magyarázat, rossz hívás. Egy támogatási ügynökben a modell véletlenszerűen meghívott egy fetch nevű, homályos eszközt az egyenlegkérdésben és a szállítási kérdésben is. Amikor a járműveket felosztottuk balance_getir és cargo_durumu_getir típusokra, és hozzáadtuk a "hívás mikor" magyarázatot, a hibás járműválasztás 18-ról 1-re csökkent 50 példából.
3. eset – Hiba nyelt. Egy ügynök üres eredményeket adott vissza, amikor a rendelés nem található; A modell ezt úgy értelmezte, hogy "a rendelés kézbesítették", és félrevezette a vásárlót. Ha a hibaüzenet kifejezetten a tool_result-ba van írva ("rendelés nem található"), a modell helyesen azt mondja: "Nem találtam ezt a számot, meg tudod nézni?" – kezdett el mondani.
Gyakori hibák
- Mindent ügynökre fordítani: Bár egy hívás elég, az ügyintéző költséget és késést növel.
- Homályos járműleírás: A modell nem tudja, mikor kell telefonálnia; rosszul választ.
- Azt gondolva, hogy a modell működteti a járművet: A heveder működteti a járművet; a modell csak azt akarja.
- A hiba lenyelése: A modellnek tudnia kell, hogy mi hibázott; Adja meg a hibát open tool_resultként.
- Túl sok hasonló jármű: A modell összezavarodik; Tartsa fókuszáltan és minimálisan az eszközkészletet.
Figyelem: Csak azért, mert a modell azt mondja, hogy "hívja azt a járművet", nem jelenti azt, hogy lépéseket kell tenni. A romboló eszközökön (törlés, fizetés, e-mail) az alkalmazásnak nem szabad vakon végrehajtania a hívást – ez a biztonsági téma lényege a következő részben.
Összefoglalva
- Agent = modell (döntés) + eszközök (függvények) + hurok (szerszám hívása, eredmény lekérése, újra döntés).
- Egyetlen mintahívás nem ügynök; ügynök egy lépésről lépésre folyamat.
- A modell nem futtatja a járművet; Az alkalmazás lefut (harness), és az eredményt tool_result néven adja vissza.
- Az eszközt név, leírás (konkrétan "hívás mikor") és input_schema azonosítja.
- A ciklus így folytatódik: tool_use → harness run → tool_result → modell addig folytatódik, amíg a modell azt nem mondja, hogy "kész"; a hibákat kifejezetten jelenteni kell a modellnek.
Pályázati feladat
Tervezz meg 3 eszközt a saját vállalkozásodból, amit az ügynöknek adhatsz. (1) Írja be a nevet, a leírást a "hívás mikor" kifejezéssel és az input_sémát mindegyikhez; Legyen legalább egy roncsolásmentes olvasóeszköz, egy pedig számítás. (2) Válasszon ki egy reális felhasználói kérdést, és írja be kézzel lépésről lépésre (ciklusban), hogy ezek közül az eszközök közül melyik bemenettel hívja meg a modell, és mit fog csinálni az eszköz_eredmény megérkezése után. (3) Állítson be egy forgatókönyvet, amelyben az egyik eszköz meghibásodik, és mutassa meg, hogyan tér vissza a hibaüzenet a modellhez.
ellenőrző lista
- [ ] Meg tudom határozni az ügynököt "modell + eszközök + ciklus"-ként, és eldönthetem, hogy mikor van rá szükség.
- [ ] Tudom, hogy a heveder működteti a járművet, a modell csak ezt akarja.
- Egy szilárd járműleírást tudok írni [ ] névvel, leírással ("hívás mikor") és input_schema-val.
- A [ ] tool_use → tool_result ciklust lépésről lépésre tudom követni.
- [ ] Az eszközhibákat nyitott eszköz_eredményként jelentem a modellnek.