zisky:
- Definování agenta jako „model + nástroje + smyčka“ a rozhodnutí, kdy je potřeba
- Zápis definice nástroje s názvem, popisem a input_schema
- Monitorování toku a zpracování chyb ve smyčce tool_use a tool_result
Až dosud model vždy dělal jednu práci: přijímat textový vstup, vytvářet textové odpovědi. Ale skutečná práce často vyžaduje víc než jen text; provedení výpočtu, dotaz do databáze, volání API, zjištění aktuálního kurzu. Modelka nemůže tyto věci dělat sama – ale může se rozhodnout, kdy je třeba udělat, a požádat někoho, aby je udělal. To je to, co použití nástroje dává modelu, a to je základ agentů AI. V této lekci se naučíme, co je agent, jak je nástroj definován a jak funguje smyčka tool_use.
Co je to agent? Model + Nástroje + Smyčka
Agent umělé inteligence se skládá ze tří částí: modelu (mozek, který rozhoduje), nástrojů (funkce, které model může volat: počasí, databázový dotaz, odeslání e-mailu) a smyčky (smyčka; model zavolá nástroj, dostane výsledek, znovu rozhodne, co má dělat atd.).
Kritický rozdíl: Volání jednoho vzoru není agent. Agent je proces, ve kterém model postupuje krok za krokem, přičemž v každém kroku volí další pohyb na základě výsledku nástroje. "Mysli jako člověk, používejte ruce, podívejte se na výsledek, přemýšlejte znovu."
Důležitý fakt: Model sám o sobě vozidlo neprovozuje. Model jen říká "Chci volat tento nástroj s těmito vstupy". Vaše aplikace (nazývaná svazek) spustí nástroj a vrátí výsledek do modelu. To je důležité pro zabezpečení: model se přímo nedotýká vašeho systému; Každá akce je pod vaší kontrolou.
Tip: Nesnažte se vyřešit každý problém s agentem. Činidlo; zvyšuje riziko zpoždění, nákladů a chyb. Nejprve se zeptejte: „Vyřeší se to jediným hovorem nebo pevným pracovním postupem?“ Pokud je odpověď ano, není potřeba agenta. Agent je pro úkoly s otevřeným koncem, kde kroky nemohou být známy předem.
Definice nástroje: název, popis, schéma vstupu
Chcete-li do modelu zavést nástroj, musíte zadat tři věci:
- jméno: Totožnost vozidla, např. získat_počasí.
- popis: Co nástroj dělá a kdy jej zavolat. Toto je nejdůležitější oblast, která umožňuje modelu vybrat správný nástroj ve správný čas. Nepište jen „co dělá“, ale také „zavolejte kdy“.
- input_schema (vstupní schéma): schéma JSON, které definuje, které parametry nástroj očekává, v jakém typu.
# Definice vozidla (koncepční — schéma JSON){ "name": "get_order_status", "description": "Načte aktuální stav zásilky objednávky. Zavolejte, když se uživatel zeptá, kde je číslo objednávky nebo kdy dorazí.", "input_schema": { "type": "object", "properties": { "type":Oder číslo": "string": "číslo objednávky": "string" např. SP-1024"} }, "povinné": ["číslo_objednávky"] }}
Pravidla pro dobrý popis nástroje: jasný a výstižný název, popis s „kdy použít“, popis každého parametru, uvedení skutečně povinných parametrů. Zaměřte se na počet vozidel; Desítky podobných modelů vozidel jsou překvapivé.
oblast
co to dělá?
dobrý příklad
špatný příklad
jméno
ID vozidla
order_status_getir
přinést
popis
Co to dělá + kdy volat
"Vrátí stav nákladu; zavolejte, když se uživatel zeptá, kde je objednávka"
"načítá data"
vstupní_schéma
Typ parametru a požadavek
{objednací číslo: řetězec, s poznámkami}
žádné schéma / žádný popis
tool_use → tool_result Loop
Cyklus funguje takto, krok za krokem:
- Do modelu zašlete uživatelskou otázku + popis nástrojů.
- Model buď reaguje přímo, nebo generuje blok tool_use: "call order_durumu_getir s order_no=SP-1024."
- Vaše aplikace skutečně spouští nástroj (dotazuje se na databázi).
- Výsledek pošlete zpět do modelu jako tool_result.
- S tímto výsledkem model buď vytvoří konečnou odpověď, nebo zavolá jiný nástroj. Cyklus pokračuje, dokud model neřekne „Skončil jsem“.
# Agent loop (koncepční)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 spouští zprávy += [odpověď, odpověď, návratová odpověď)] # konec_výsledek: výsledek; konce smyčky
Moderní sady SDK nabízejí nástrojové běžce, které tuto smyčku spustí za vás; stačí napsat funkce nástroje. Ale to je přesně to, co se děje v zákulisí.
Správa chyb
Nástroje mohou selhat: objednávka nebyla nalezena, vypršel časový limit API, vstup je neplatný. Pokud nástroj nemůžete spustit, vraťte chybu do modelu jako popisný výsledek_nástroje („chyba: Objednací číslo SP-9999 nenalezeno“) a příznak chyby. Model to může vidět a jemně to vysvětlit uživateli, nebo zkusit jiný způsob. Nepolykejte chybu a nevracejte prázdné výsledky; Modelka musí vědět, co se pokazilo.
Popis slabého/silného vozidla
Slabé (neurčité podstatné jméno, žádné „kdy“):
jméno: "data", popis: "fetches data"# Model neví, kdy a jak zavolat; Buď nevolá vůbec, nebo volá špatně.
Silný (síťový název + když + popis parametru):
name: "musteri_bakiyesi_getir"description: "Vrátí aktuální zůstatek na účtu zákazníka. Zavolejte, když uživatel požádá o debet, kredit nebo zůstatek. NEPROVEDE platbu."input_schema: {custeri_id: string ("ID zákazníka")# Model volá ve správný čas, se správnými parametry, zná svůj limit.
Tři mini pouzdra
Případ 1 – Nepotřebný agent. Jeden tým vybudoval obchod se „souhrnným textem“ s agentem s více nástroji; Každá rekapitulace trvá 4 modelová volání a 9 sekund. Ta práce byla vlastně práce na jedno volání. Když jsme odstranili agenta a zkrátili to na jeden hovor, čas se zkrátil na 1,5 sekundy a náklady se snížily na jednu čtvrtinu. Poučení: použijte agenta, když je to opravdu nutné.
Případ 2 – Slabé vysvětlení, špatný hovor. V agentovi podpory byl modelem náhodně volán neznámý nástroj nazvaný načítání v otázce vyvážení i v otázce odeslání. Když byla vozidla rozdělena na balance_getir a cargo_durumu_getir a bylo přidáno vysvětlení "zavolat, kdy", nesprávný výběr vozidla se snížil z 18 na 1 z 50 příkladů.
Případ 3 – Chyba spolknutí. Agent vracel prázdné výsledky, když příkaz nebyl nalezen; Model si to vyložil jako „objednávka byla doručena“ a uvedl zákazníka v omyl. Když je chybová zpráva zapsána explicitně do tool_result ("objednávka nenalezena"), model správně říká "Nemohl jsem najít toto číslo, můžete to zkontrolovat?" začal říkat.
Časté chyby
- Vše obrátit na agenta: Zatímco jeden hovor stačí, agent si přidá náklady a zpoždění.
- Nejasný popis vozidla: Modelka neví, kdy zavolat; vybírá špatně.
- Myslet si, že model řídí vozidlo: Postroj řídí vozidlo; modelka prostě chce.
- Polykání chyby: Model musí vědět, co se pokazilo; Dejte chybu jako open tool_result.
- Příliš mnoho podobných vozidel: Model je zmatený; Udržujte sadu nástrojů soustředěnou a minimální.
Pozor: To, že model říká „zavolej to vozidlo“, neznamená, že by se mělo jednat. Na destruktivních nástrojích (mazání, pokladna, e-mail) by vaše aplikace neměla provádět volání slepě – to je jádro bezpečnostního tématu v další části.
V souhrnu
- Agent = model (rozhodnutí) + nástroje (funkce) + smyčka (zavolat nástroj, získat výsledek, znovu rozhodnout).
- Volání jednoho vzoru není agent; agent je proces krok za krokem.
- Model nejezdí s vozidlem; Vaše aplikace se spustí (svazek) a vrátí výsledek jako výsledek_nástroje.
- Nástroj je identifikován názvem, popisem (konkrétně „zavolat kdy“) a input_schema.
- Smyčka pokračuje, jak nástroj_use → svazek běží → tool_result → model pokračuje, dokud model neřekne „hotovo“; chyby jsou výslovně hlášeny modelu.
Aplikační úkol
Navrhněte 3 nástroje z vaší vlastní firmy, které lze předat agentovi. (1) Napište jméno, popis s "zavolat kdy" a input_schema pro každý; Ať je alespoň jeden nedestruktivní čtecí nástroj a jeden výpočet. (2) Vyberte realistickou uživatelskou otázku a ručně krok za krokem (ve smyčce) napište, které z těchto nástrojů model zavolá s jakými vstupy a co udělá poté, co dorazí tool_result. (3) Nastavte scénář, ve kterém jeden z nástrojů selže, a ukažte, jak se chybová zpráva vrátí do modelu.
kontrolní seznam
- [ ] Mohu definovat agenta jako "model + nástroje + smyčka" a rozhodnout, kdy je potřeba.
- [ ] Vím, že postroj řídí vozidlo, model to prostě chce.
- Umím napsat solidní popis vozidla s [ ] názvem, popisem ("zavolat kdy") a input_schema.
- Mohu postupovat podle cyklu [ ] tool_use → tool_result krok za krokem.
- [ ] Chyby nástroje hlásím modelu jako open tool_result.