Eenheid 9 / 11

AI-agenten en gereedschapsgebruik

Winst:

  • Een agent definiëren als 'model + tools + loop' en beslissen wanneer deze nodig is
  • Schrijven van de tooldefinitie met naam, beschrijving en input_schema
  • Bewaken van de stroom en foutafhandeling van de tool_use en tool_result-lus

Tot nu toe heeft het model altijd één taak vervuld: tekstinvoer ontvangen, tekstreacties produceren. Maar voor echt werk is vaak meer nodig dan tekst; een berekening uitvoeren, een database bevragen, een API aanroepen, een actuele wisselkoers achterhalen. Het model kan deze dingen niet zelf doen, maar ze kan beslissen wanneer ze gedaan moeten worden en iemand vragen om ze te doen. Dit is wat het gebruik van tools het model oplevert, en dit is de basis van AI-agenten. In deze unit leren we wat een agent is, hoe de tool is gedefinieerd en hoe de tool_use-lus werkt.

Wat is een agent? Model + Gereedschap + Lus

Een AI-agent bestaat uit drie delen: het model (het brein dat de beslissing neemt), de tools (de functies die het model kan aanroepen: weer, databasequery, e-mail verzenden) en de lus (de lus; het model roept de tool aan, krijgt het resultaat, beslist opnieuw wat te doen, enzovoort).

Cruciaal onderscheid: Een enkele patroonoproep is geen agent. Agent is een proces waarin het model stap voor stap voortgaat, waarbij bij elke stap de volgende zet wordt gekozen op basis van de uitkomst van het hulpmiddel. "Denk als een mens, gebruik je handen, kijk naar het resultaat, denk nog eens na."

Een belangrijk feit: het model zelf bestuurt het voertuig niet. Het model zegt alleen: "Ik wil deze tool aanroepen met deze invoer". Uw toepassing (een harnas genoemd) voert de tool uit en retourneert het resultaat naar het model. Dit is essentieel voor de veiligheid: het model raakt uw systeem niet direct; Elke actie is onder jouw controle.

Tip: Probeer niet elk probleem met de agent op te lossen. Tussenpersoon; verhoogt het risico op vertragingen, kosten en fouten. Vraag eerst: “Is dit met één telefoontje of met een vaste workflow op te lossen?” Als het antwoord ja is, is er geen behoefte aan een agent. Agent is bedoeld voor taken met een open einde waarbij de stappen niet vooraf bekend zijn.

Tooldefinitie: naam, beschrijving, input_schema

Om een tool in het model te introduceren, geef je drie dingen op:

  • naam: Identiteit van het voertuig, b.v. haal_weer.
  • beschrijving: wat de tool doet en wanneer deze moet worden aangeroepen. Dit is het belangrijkste gebied waarmee het model op het juiste moment het juiste gereedschap kan kiezen. Schrijf niet alleen 'wat doet', maar ook 'bel wanneer'.
  • input_schema (invoerschema): JSON-schema dat definieert welke parameters de tool verwacht, in welk type.

# Voertuigdefinitie (conceptueel — JSON-schema){ "name": "get_order_status", "description": "Haalt de huidige verzendstatus van een bestelling op. Bel wanneer de gebruiker vraagt waar een bestelnummer is of wanneer het zal aankomen.", "input_schema": { "type": "object", "properties": { "order_no": {"type": "string", "description": "Bestelnummer, bijvoorbeeld SP-1024"} }, "vereist": ["order_nr"] }}

Regels voor een goede gereedschapsbeschrijving: duidelijke en beknopte naam, beschrijving met "wanneer te gebruiken", beschrijving voor elke parameter, met vermelding van de echt verplichte parameters. Houd het aantal voertuigen gefocust; Tientallen vergelijkbare voertuigmodellen zijn verrassend.

gebied

Wat doet het?

goed voorbeeld

slecht voorbeeld

naam

Voertuig-ID

order_status_getir

brengen

beschrijving

Wat het doet + wanneer te bellen

"Geeft de ladingstatus terug; bel als de gebruiker vraagt waar de bestelling is"

"haalt gegevens op"

invoer_schema

Parametertype en vereiste

{order_no: string, geannoteerd}

geen diagram / geen beschrijving

tool_use → tool_result Lus

De cyclus werkt als volgt, stap voor stap:

  1. U stuurt de gebruikersvraag + gereedschapsbeschrijvingen naar het model.
  2. Het model reageert direct of genereert een tool_use-blok: "roep order_durumu_getir aan met order_no=SP-1024."
  3. Uw toepassing voert de tool daadwerkelijk uit (vraagt ​​de database af).
  4. Het resultaat stuur je terug naar het model als tool_result.
  5. Met dit resultaat produceert het model het definitieve antwoord of roept een ander hulpmiddel aan. De cyclus gaat door totdat het model zegt: "Ik ben klaar."

# Agent loop (conceptuele) berichten = [user_question]while True: response = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harnas.run(response.tool_name, response.entries) # APPLICATION voert berichten uit += [response, tool_result(result)] # return result else: break # final response; lus eindigt

Moderne SDK's bieden toolrunners die deze lus voor u uitvoeren; je schrijft gewoon de toolfuncties. Maar dat is precies wat er achter de schermen gebeurt.

Foutbeheer

Tools kunnen mislukken: bestelling niet gevonden, API-time-out, invoer is ongeldig. Als u het hulpprogramma niet kunt uitvoeren, stuurt u de fout terug naar het model als een beschrijvend tool_result ("error: Order number SP-9999 not found") en de foutvlag. Het model kan dit zien en het zachtjes aan de gebruiker uitleggen, of het op een andere manier proberen. Slik de fout niet in en retourneer lege resultaten; Het model moet weten wat er mis is gegaan.

Zwakke/sterke voertuigbeschrijving

Zwak (onbepaald zelfstandig naamwoord, geen "wanneer"):

naam: "data", omschrijving: "haalt data op"# Het model weet niet wanneer en hoe te bellen; Hij belt helemaal niet of belt verkeerd.

Sterk (netnaam + wanneer + parameterbeschrijving):

name: "musteri_bakiyesi_getir"description: "Retourneert het huidige rekeningsaldo van een klant. Bel wanneer de gebruiker om debet, credit of saldo vraagt. Voert GEEN betaling uit."input_schema: {custeri_id: string ("Klant-ID")}# Het model belt op het juiste moment, met de juiste parameters, en kent de limiet.

Drie mini-hoesjes

Geval 1 — Onnodige agent. Eén team bouwde de business voor het samenvatten van tekst op met een multitoolagent; Elke samenvatting duurt 4 modeloproepen en 9 seconden. De klus was eigenlijk een eenmalige klus. Toen we de agent verwijderden en terugbrachten tot één oproep, daalde de tijd tot 1,5 seconde en daalden de kosten tot een kwart. Les: gebruik de agent als het echt nodig is.

Geval 2 – Zwakke uitleg, verkeerde beslissing. In een ondersteuningsagent werd een obscure tool genaamd fetch willekeurig aangeroepen door het model in zowel de saldovraag als de verzendvraag. Toen de voertuigen werden opgedeeld in balance_getir en cargo_durumu_getir en de uitleg "call when" werd toegevoegd, daalde de verkeerde voertuigselectie van 18 naar 1 op de 50 voorbeelden.

Geval 3 — Fout ingeslikt. Een agent retourneerde lege resultaten toen de bestelling niet werd gevonden; Het model interpreteerde dit als "de bestelling is afgeleverd" en misleidde de klant. Wanneer de foutmelding expliciet naar tool_result wordt geschreven ("bestelling niet gevonden"), zegt het model correct: "Ik kon dit nummer niet vinden, kunt u het controleren?" begon hij te zeggen.

Veel voorkomende fouten

  • Alles aan een agent overlaten: Hoewel één telefoontje voldoende is, brengt de agent kosten en vertraging met zich mee.
  • Vage voertuigbeschrijving: Het model weet niet wanneer hij moet bellen; kiest verkeerd.
  • Denken dat het model het voertuig bestuurt: Het harnas bestuurt het voertuig; het model wil gewoon.
  • De fout inslikken: het model moet weten wat er mis is gegaan; Geef de fout op als open tool_result.
  • Te veel vergelijkbare voertuigen: Model raakt in de war; Houd de toolset gefocust en minimaal.
Let op: het feit dat het model zegt "bel dat voertuig" betekent niet dat er actie moet worden ondernomen. Bij destructieve tools (verwijderen, afrekenen, e-mailen) mag uw applicatie de oproep niet blindelings uitvoeren; dit is de kern van het beveiligingsonderwerp in het volgende hoofdstuk.

Samengevat

  • Agent = model (beslissing) + tools (functies) + lus (tool oproepen, resultaat ophalen, opnieuw beslissen).
  • Een enkele patroonoproep is geen agent; agent is een stapsgewijs proces.
  • Het model bestuurt het voertuig niet; Uw toepassing wordt uitgevoerd (harnas) en retourneert het resultaat als tool_result.
  • Het hulpprogramma wordt geïdentificeerd op basis van naam, beschrijving (met name 'call when') en input_schema.
  • De lus gaat verder als tool_use → harnas loopt → tool_result → model gaat door totdat het model "klaar" zegt; fouten worden expliciet gerapporteerd aan het model.

Applicatie taak

Ontwerp vanuit je eigen bedrijf 3 tools die aan de agent gegeven kunnen worden. (1) Schrijf de naam, beschrijving met "call when" en input_schema voor elk; Laat er minstens één een niet-destructief leeshulpmiddel zijn en één een rekeninstrument. (2) Kies een realistische gebruikersvraag en schrijf handmatig stap voor stap (in een lus) welke van deze tools het model zal aanroepen met welke invoer en wat het zal doen nadat het tool_result arriveert. (3) Stel een scenario op waarin een van de tools faalt en laat zien hoe de foutmelding terugkeert naar het model.

controlelijst

  • [ ] Ik kan de agent definiëren als "model + tools + loop" en beslissen wanneer deze nodig is.
  • [ ] Ik weet dat het harnas het voertuig bestuurt, het model wil het gewoon.
  • Ik kan een solide voertuigbeschrijving schrijven met [ ] naam, beschrijving ("bel wanneer") en input_schema.
  • Ik kan de cyclus [ ] tool_use → tool_result stap voor stap volgen.
  • [ ] Ik rapporteer gereedschapsfouten aan het model als open tool_result.