Tool calling: tools ontwerpen die de agent goed gebruikt
Als een agent zich misdraagt is de reflex de prompt te herschrijven. In onze ervaring is de prompt misschien een derde van de keren de oorzaak; de rest van de tijd zijn de tools ontworpen voor een programma en niet voor een lezer die uit namen en beschrijvingen moet afleiden wat een functie doet.
Tools zijn het hele vermogen van de agent om de wereld te beïnvloeden, en hun definities zijn letterlijk deel van de modelcontext. Ze goed ontwerpen is goedkoper en veel duurzamer dan prompttuning.
Zeven regels die de meeste slechte aanroepen voorkomen#
- Eén tool, één taak. `search_orders` en `refund_order` verslaan een `manage_order` met modus.
- Types in plaats van proza. Enums, bereiken en formaten doen wat een beschrijving nooit doet.
- Namen die zeggen wat er gebeurt. `send_email_to_customer` is eenduidig; `notify` niet.
- Fouten als instructie: wat er mis was en wat nu te doen, in één korte zin.
- Lege resultaten zijn resultaten. Een expliciet niet-gevonden verslaat een exception.
- Idempotentiesleutels op alles met bijwerking.
- Kleine returns. Snijd terug tot de nodige velden; 40 KB JSON koopt verwarring.
Voor en na#
| Zwak ontwerp | Waarom het faalt | Beter |
|---|---|---|
| `query(sql)` | Onbegrensde macht, niet controleerbaar | `get_orders_by_customer(customer_id, limit)` |
| `date: string` | Model verzint formaten | `date: string, formaat JJJJ-MM-DD` |
| `HTTP 500` | Impliceert geen actie, eindeloos herhaald | `Orderservice niet bereikbaar. Zeg de klant het later te proberen.` |
| Geeft het hele record terug | Vult context, verdunt aandacht | Geeft zes benoemde velden terug |
| `update_status(id, status)` | Elke status, elk record | `cancel_order(id)` met rechtencontrole |
Beschrijvingen zijn prompt#
Het beschrijvingsveld is geen documentatie voor collega's; het is tekst die het model leest tijdens het beslissen. Zeg wanneer u de tool gebruikt en wanneer niet, noem de ene voorwaarde die telt en geef één voorbeeldargument. Drie zinnen verslaan drie alinea's.
Kunnen twee tools hetzelfde verzoek bedienen, dan kiest de agent soms verkeerd. Voeg ze samen of maak de grens expliciet.
Valideer altijd vóór uitvoering#
Geef modeluitvoer nooit ongecontroleerd door aan een systeemaanroep. Valideer argumenten tegen het schema, los identifiers op tegen records die deze gebruiker mag zien, en wijs af wat niet past in plaats van het passend te maken.
Veelgestelde vragen
Hoeveel tools is te veel?
Boven ongeveer tien in één lus daalt de selectienauwkeurigheid en vullen beschrijvingen de context.
Moeten tools ruwe API-antwoorden teruggeven?
Nee. Geef een kleine, stabiele vorm terug met de velden die echt nodig zijn.
Hoe voorkom ik verzonnen argumenten?
Door te begrenzen: enums in plaats van vrije tekst, expliciete formaten en identifiers die moeten oplossen.
tool callingfunction calling agentstoolontwerpjson schema toolsllm toolfouten