Chamada de ferramentas: desenhar ferramentas que o agente usa bem
Quando um agente se porta mal, o reflexo é reescrever o prompt. Na nossa experiência o prompt é a causa talvez um terço das vezes; nas restantes, as ferramentas foram desenhadas para um programa e não para quem tem de deduzir de nomes e descrições o que uma função faz.
As ferramentas são toda a capacidade do agente de afetar o mundo, e as suas definições fazem literalmente parte do contexto do modelo.
Sete regras que evitam a maioria das chamadas más#
- Uma ferramenta, uma tarefa. `search_orders` e `refund_order` batem um `manage_order` com modo.
- Tipos em vez de prosa. Enumerações, intervalos e formatos fazem o que uma descrição nunca faz.
- Nomes que dizem o que acontece. `send_email_to_customer` é inequívoco; `notify` não.
- Erros como instrução: o que correu mal e o que fazer a seguir, numa frase curta.
- Resultados vazios são resultados. Um não-encontrado explícito bate uma exceção.
- Chaves de idempotência em tudo o que tem efeito.
- Retornos pequenos. Cortem aos campos necessários; 40 KB de JSON compram confusão.
Antes e depois#
| Desenho fraco | Porque parte | Melhor |
|---|---|---|
| `query(sql)` | Poder ilimitado, não auditável | `get_orders_by_customer(customer_id, limit)` |
| `date: string` | O modelo inventa formatos | `date: string, formato AAAA-MM-DD` |
| `HTTP 500` | Não implica ação, repetido sem fim | `Serviço de encomendas indisponível. Peça ao cliente para tentar depois.` |
| Devolve o registo inteiro | Enche o contexto, dilui a atenção | Devolve seis campos nomeados |
| `update_status(id, status)` | Qualquer estado, qualquer registo | `cancel_order(id)` com verificação de permissões |
As descrições são prompt#
O campo de descrição não é documentação para colegas; é texto que o modelo lê enquanto decide. Digam quando usar a ferramenta e quando não, nomeiem a precondição que importa e deem um exemplo de argumento.
Se duas ferramentas puderem servir o mesmo pedido, o agente escolherá mal às vezes.
Validem sempre antes de executar#
Nunca passem a saída do modelo a uma chamada de sistema sem verificação. Validem argumentos contra o esquema, resolvam identificadores contra registos que este utilizador pode ver, e rejeitem o que não encaixa em vez de o forçar.
Perguntas frequentes
Quantas ferramentas são demasiadas?
Acima de cerca de dez num ciclo, a precisão de seleção cai e as descrições enchem o contexto.
As ferramentas devem devolver respostas de API em bruto?
Não. Devolvam uma forma pequena e estável com os campos necessários.
Como evito argumentos inventados?
Restringindo: enumerações em vez de texto livre, formatos explícitos e identificadores que têm de resolver.
chamada de ferramentasfunction calling agentesdesenho de ferramentasjson schema ferramentaserros de ferramentas llm