Jednotka 9 / 11

AI agenti a použití nástrojů

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:

  1. Do modelu zašlete uživatelskou otázku + popis nástrojů.
  2. Model buď reaguje přímo, nebo generuje blok tool_use: "call order_durumu_getir s order_no=SP-1024."
  3. Vaše aplikace skutečně spouští nástroj (dotazuje se na databázi).
  4. Výsledek pošlete zpět do modelu jako tool_result.
  5. 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.