Prompt Engineering para Executivos · Capítulo 12 de 28 · 13 min
Escrever ferramentas e prompts para agentes com limites claros
Escreva cada ferramenta do agente como contrato de três a quatro frases e declare no prompt o que ele executa sozinho e o que pede confirmação humana.
Este capítulo faz parte do curso gratuito Prompt Engineering para Executivos.
A descrição de cada ferramenta é o texto que mais pesa na escolha de um agente: a Anthropic a chama de fator de longe mais importante no desempenho com ferramentas. Quem põe um agente nos sistemas da empresa deve reescrever hoje uma descrição em três a quatro frases e escrever no prompt o que exige confirmação humana.
Agente é o modelo que decide sozinho o próximo passo, como um estagiário com acesso ao sistema. Ferramenta é cada ação que ele pode pedir: consultar um pedido, abrir um chamado, emitir um boleto. Quem escolhe entre elas é o modelo, lendo nome, descrição e campos de cada uma.
Quando a escolha sai errada, o agente raramente devolve erro. Ele consulta o pedido de outra pessoa, abre o segundo chamado para o mesmo problema ou tenta três formatos de documento até acertar. O time ajusta o prompt por semanas, e o defeito mora num texto de duas linhas que ninguém revisou.
Chamada de ferramenta (tool use, ou function calling na OpenAI e no Gemini) é um pedido estruturado que o modelo devolve ao aplicativo: o nome da ferramenta e os argumentos em JSON. O modelo nunca executa nada. O aplicativo valida os argumentos, confere a permissão, executa e devolve o resultado, e o modelo decide o passo seguinte com ele. Por isso a autorização mora no código que atende à chamada, e a descrição só orienta a escolha.
A Anthropic descreve a ferramenta como contrato entre um sistema determinístico (que sempre responde igual) e um agente que não é. O guia de 11/09/2025 pede poucas ferramentas, cada uma resolvendo um trabalho inteiro, com prefixo de serviço no nome e retorno enxuto. A OpenAI resume o mesmo critério no teste do estagiário: alguém novo na empresa, lendo só a descrição, saberia usar a função?
Três mudanças separam 2026 de 2024. O modo estrito (strict) só deixa sair a chamada que obedece ao esquema dos campos, como formulário que recusa campo fora do padrão. A busca de ferramentas carrega a definição só quando o agente precisa dela. E nos modelos Claude mais recentes, forçar uma ferramenta específica passou a devolver erro.
- Etapa 1 de 6: O modelo lê o pedido e as ferramentas
Nome, descrição e esquema de cada uma entram no contexto
- Etapa 2 de 6: Devolve uma chamada
Nome da ferramenta e argumentos em JSON, uma ou várias em paralelo
- Etapa 3 de 6: O aplicativo valida e confere a permissão
Formato, dono do dado e nível de autonomia da ação
- Etapa 4 de 6: Executa ou pede confirmação humana
Ação que muda dinheiro, contrato ou cadastro espera o sim
- Etapa 5 de 6: Devolve o resultado ao modelo
Todos os resultados de chamadas paralelas numa única mensagem
- Etapa 6 de 6: O modelo responde ou chama de novo
O laço termina com texto ao usuário ou com a regra de parada
Uma descrição de ferramenta boa responde a quatro perguntas: o que faz, quando usar, o que ela não faz e o que significa cada retorno, inclusive o vazio. A documentação da Anthropic pede no mínimo três a quatro frases por ferramenta e aceita o campo input_examples (exemplos de argumentos válidos, como um formulário já preenchido) para campos difíceis. A OpenAI faz uma ressalva: em modelos de raciocínio, exemplos podem piorar a escolha, então teste com e sem eles.
O erro mais caro é a descrição que só repete o nome da função. O agente escolhe por semelhança, chuta o formato do campo e trata resposta vazia como falha, repetindo a chamada. Cada tentativa é cobrada e nenhuma aparece como erro no relatório.
A mesma ferramenta de pedidos, descrita de dois jeitos
Descrição que confunde o agente
Antes
- Nome get_order, sem prefixo, ao lado de fetch_order e order_info criadas por outros times
- Descrição de uma linha: pega o pedido
- Campo id, sem dizer se é o número do pedido, o CPF ou o e-mail
- Nada sobre o que a ferramenta não faz, e o agente tenta cancelar por ela
- Silêncio sobre o retorno vazio, que vira nova tentativa
Descrição que o agente usa certo
Depois
- Nome pedidos_consultar_status, com prefixo da família pedidos
- Três a quatro frases: o que consulta, para quem e quando usar
- Campo pedido_id no formato PED- seguido de quatro dígitos, com exemplo
- Declara que é só leitura e aponta a ferramenta certa para mudanças
- Diz que nao_encontrado é resposta conclusiva e não indica cancelamento
Quantidade de ferramentas também pesa. A OpenAI recomenda menos de 20 funções disponíveis no início do turno. Acima disso, a saída é a busca de ferramentas (tool search): as definições ficam marcadas com defer_loading e só entram no contexto quando o agente as procura, como um catálogo consultado sob demanda. O MCP (Model Context Protocol, padrão aberto que liga agentes a sistemas, como uma tomada universal) entrega essas ferramentas prontas, e cada uma chega com a descrição que o autor do servidor escreveu.
Chamadas paralelas (parallel tool use, várias consultas disparadas de uma vez, como pedir três orçamentos no mesmo e-mail) são o padrão no Claude e no Grok. O aplicativo executa todas e, no Claude, devolve os resultados juntos numa única mensagem. Quando a ordem importa, como consultar antes de alterar, escreva no prompt que a alteração espera o resultado da consulta; na OpenAI e no Grok, parallel_tool_calls: false limita o turno a uma chamada.
As regras mudam por fornecedor no que quebra produção: forçar ferramenta, limite de ferramentas estritas e o que reenviar entre chamadas.
Como fica em cada modelo
| Modelo | O que muda | Cuidado |
|---|---|---|
| Claude (Anthropic) | strict: true por ferramenta, input_examples, defer_loading com tool search e conector MCP; chamadas paralelas por padrão | tool_choice any ou tool devolve erro 400 no Fable 5.1, Opus 5.5 e Sonnet 5.5: use auto, strict e a instrução no prompt. Até 20 ferramentas strict por requisição |
| OpenAI (GPT) | strict recomendado sempre; menos de 20 funções; allowed_tools restringe o uso sem trocar a lista; tool search com defer_loading a partir do gpt-5.4 | GPT-6 Astra e GPT-6.1 Sol só chamam ferramentas pela Responses API. O GPT-6 tende a agir sem pedir aprovação: escreva quando parar |
| Gemini (Google) | Function calling com JSON Schema, combinável com Google Search e execução de código no Gemini 3; variante gemini-3.1-pro-preview-customtools | Reenvie as thought signatures das chamadas anteriores em modo sem estado, ou a conversa perde o fio |
| Grok (xAI) | Até 350 ferramentas por requisição; strict implícito em ferramentas; paralelo ligado por padrão; MCP remoto na Responses API | Descrição omitida vira descrição vazia, e o modelo escolhe só pelo nome |
| Modelos abertos (DeepSeek, Qwen) | Function calling no formato da OpenAI e, no DeepSeek, também no formato da Anthropic | Com ferramentas, o DeepSeek exige o reasoning_content inteiro de volta em cada requisição, senão erro 400; no Qwen, preserve_thinking |
Fonte: Documentação de ferramentas de Anthropic, OpenAI, Google, xAI e DeepSeek, acesso em 13/10/2026
Permissão é a parte que o prompt declara e o código confirma. Simon Willison chamou de tríade letal (16/06/2025) o agente que reúne acesso a dados privados, leitura de conteúdo de terceiros e um canal para enviar dados para fora: basta uma instrução escondida num e-mail para vazar o cadastro. Remover uma das três peças desfaz o ataque, e a confirmação humana antes de ações sensíveis é a defesa operacional que sobra quando as três precisam existir.
A decisão de pedir confirmação segue duas perguntas: a ação se desfaz com um clique e o impacto cabe num limite escrito? Consultas rodam sozinhas e em paralelo. Mudança de endereço, reembolso e cancelamento esperam o sim, e o prompt diz isso com todas as letras, porque o GPT-6, segundo a própria OpenAI, prefere seguir até o fim e só pede aprovação com o resultado pronto.
Quando o agente executa sozinho e quando pede confirmação
Eixo horizontal: Reversibilidade (difícil de desfazer à esquerda, desfaz com um clique à direita)Eixo vertical: Impacto (baixo embaixo, alto em cima)
Confirmação humana sempre
- Reembolso
- Cancelamento de contrato
- Envio de dado para fora da empresa
Executa com limite escrito e registro
- Desconto dentro da tabela
- Reagendamento de entrega
Prepara e mostra antes de enviar
- E-mail ao cliente
- Troca de endereço de entrega
Executa sozinho, em paralelo
- Consultar status de pedido
- Buscar apólice
- Ler histórico do atendimento
Três agentes fictícios e o contrato de cada um
1 de 3Atendimento de varejo
Consulta de pedido roda sozinha; troca de endereço sai como proposta com os dados novos e só executa depois do sim do cliente na conversa.
- pedidos_consultar_status
- pedidos_abrir_solicitacao com confirmação
Contas a pagar
O agente lê notas fiscais e prepara o lançamento no sistema financeiro. Pagamento acima de R$ 5.000,00 vai para a fila do aprovador com o PDF anexado.
- financeiro_ler_nota
- financeiro_preparar_lancamento
Triagem jurídica
Busca cláusulas em contratos da pasta autorizada e devolve trecho com página. Não tem ferramenta de envio: a tríade letal fica sem o canal de saída.
- contratos_buscar_clausula
- sem ferramenta de envio externo
Guia prático: definir duas ferramentas e o prompt do agente que as usa
Exemplo fictício da loja Casa Ipê: uma ferramenta de leitura e uma de alteração com confirmação.
Passo 1: Escreva o nome com prefixo de serviço
pedidos_consultar_status e pedidos_abrir_solicitacao deixam claro a família e o verbo.
Deu certo quando: Nenhuma outra ferramenta do agente começa com o mesmo verbo e objeto.
Erro comum: Manter get_order ao lado de fetch_order, criadas por times diferentes.
Passo 2: Descreva em três a quatro frases
O que faz, quando usar, o que não faz e o que significa cada retorno, inclusive o vazio.
Deu certo quando: Um colega novo lê só a descrição e diz qual ferramenta usar em cinco perguntas de cliente.
Erro comum: Descrição que repete o nome da função em outras palavras.
Passo 3: Ligue strict e feche o esquema
strict: true, additionalProperties: false, enum nos campos de lista fechada e input_examples no campo difícil.
Deu certo quando: Uma chamada com campo extra ou formato errado volta recusada antes de chegar ao sistema.
Erro comum: Usar minLength ou maximum no Claude com strict, que não aceita essas restrições.
Passo 4: Declare no prompt o que pede confirmação
Liste as ações que executam sozinhas, as que esperam o sim e as que o agente nunca faz.
Deu certo quando: Na conversa de teste, a troca de endereço aparece como proposta antes de qualquer chamada de alteração.
Erro comum: Confiar só na frase do prompt: o código que atende à chamada também precisa conferir a permissão.
Passo 5: Teste o caminho feliz e a fronteira
Rode uma pergunta de consulta, uma de alteração e uma com número inválido.
Deu certo quando: As três seguem o contrato: consulta direta, proposta com pedido de confirmação e pedido do número certo.
Erro comum: Testar só a pergunta fácil e descobrir a fronteira em produção.
No fim você tem: Duas ferramentas com contrato legível e um agente que consulta sozinho e pede o sim antes de alterar.
[
{
"name": "pedidos_consultar_status",
"description": "Consulta a etapa atual de um pedido da Casa Ipê feito pela pessoa autenticada na conversa. Use quando o cliente perguntar onde está o pedido, qual a previsão de entrega ou se já foi despachado. Somente leitura: não cancela, não reembolsa e não altera endereço; para qualquer mudança, use pedidos_abrir_solicitacao. Retorna estado encontrado ou nao_encontrado, a etapa, a previsão de entrega e o código de rastreio; nao_encontrado é resposta conclusiva e não significa pedido cancelado.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"pedido_id": {
"type": "string",
"description": "Número do pedido no formato PED- seguido de quatro dígitos, como aparece no e-mail de confirmação. CPF e e-mail não são aceitos."
}
},
"required": ["pedido_id"],
"additionalProperties": false
},
"input_examples": [{ "pedido_id": "PED-1042" }]
},
{
"name": "pedidos_abrir_solicitacao",
"description": "Abre uma solicitação de mudança em pedido ainda não despachado da pessoa autenticada. Use só depois que o cliente confirmar na conversa os dados exatos da mudança. Não consulta status e não processa reembolso, que segue para atendimento humano. Retorna o número do protocolo, ou recusado com o motivo quando o pedido já saiu do centro de distribuição.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"pedido_id": { "type": "string", "description": "Número do pedido no formato PED- seguido de quatro dígitos." },
"tipo": { "type": "string", "enum": ["troca_endereco", "cancelamento"], "description": "Tipo de mudança pedida pelo cliente." },
"detalhe": { "type": "string", "description": "Novo endereço completo com CEP, ou o motivo do cancelamento, nas palavras do cliente." }
},
"required": ["pedido_id", "tipo", "detalhe"],
"additionalProperties": false
}
}
]1) Chamada que o modelo devolve ao aplicativo:
pedidos_consultar_status { "pedido_id": "PED-1042" }
2) Resultado que o aplicativo devolve ao modelo:
{ "estado": "encontrado", "etapa": "em separação",
"previsao_entrega": "17/10/2026", "rastreio": null }
3) Resposta ao cliente (sem chamar pedidos_abrir_solicitacao):
O pedido PED-1042 está em separação, com entrega prevista
para 17/10/2026. Como ainda não foi despachado, dá para
trocar o endereço. Confira os dados:
Novo endereço: Rua das Acácias, 210, apto 32, Pinheiros,
São Paulo, CEP 05414-020.
Posso abrir a solicitação?
4) Só depois do "sim" do cliente, a chamada de alteração:
pedidos_abrir_solicitacao { "pedido_id": "PED-1042",
"tipo": "troca_endereco", "detalhe": "Rua das Acácias, 210,
apto 32, Pinheiros, São Paulo, CEP 05414-020" }O que derruba um agente com ferramentas
A descrição orienta a escolha; a permissão mora no código que atende à chamada.
- Instrução antiga em caixa alta (use sempre a ferramenta) faz o Claude 4.6+ chamar demais
- tool_choice forçado no Claude Opus 5.5 e Sonnet 5.5 devolve erro 400
- Trocar a lista de ferramentas ou o tool_choice entre chamadas invalida o cache
- Somente leitura escrito na descrição não protege uma função que altera dados
- Falha de rede tratada como nao_encontrado vira resposta errada ao cliente
O teste: Peça ao agente para cancelar um pedido e confira se ele propõe antes de chamar.
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
Verificação rápida
O agente tem 45 ferramentas e escolhe a errada com frequência. Qual é a primeira mudança?
Faça hoje
Abra a lista de ferramentas do agente que sua equipe já usa e escolha a que mais aparece em chamadas repetidas. Reescreva a descrição em três a quatro frases, ligue strict, feche o esquema e acrescente ao prompt a lista do que executa sozinho e do que espera confirmação. Em 30 minutos, rode as três perguntas do guia; deu certo quando a consulta sai em uma chamada e a alteração aparece como proposta antes de qualquer execução.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- Usar o mapa do curso e o glossário mínimosugerido pelo grafoApresenta o conceito “MCP”, usado em “Escrever ferramentas e prompts para agentes com limites claros”.
- CursoSkills de IA com Vibecoding e Terminalsugerido pelo grafo3 capítulos de “Prompt Engineering para Executivos” usam conceitos apresentados em “Skills de IA com Vibecoding e Terminal”.
- CursoVídeo com IA: Claude Code, Codex e ElevenLabssugerido pelo grafo3 capítulos de “Prompt Engineering para Executivos” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoMCP para quem decidesugerido pelo grafo2 capítulos de “Prompt Engineering para Executivos” usam conceitos apresentados em “MCP para quem decide”.
Depois, siga para
- CursoAgentes de IA Autônomos: Do Conceito à Produção
- CursoLLM FinOps: o custo da IA para quem assina o orçamentosugerido pelo grafo5 capítulos de “LLM FinOps: o custo da IA para quem assina o orçamento” usam conceitos apresentados em “Prompt Engineering para Executivos”.
- CursoRLM 2027sugerido pelo grafo2 capítulos de “RLM 2027” usam conceitos apresentados em “Prompt Engineering para Executivos”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Saúde Mental para Autistas em IAIA como suporte de função executiva: usos legítimos e armadilhasExaminar conexões de IA como suporte de função executiva: usos legítimos e armadilhas
- Agentes de IA Autônomos: Do Conceito à ProduçãoGuardrails e segurançaExaminar conexões de Guardrails e segurança
- MCP para quem decideComparar Claude e Grok antes de liberar conectoresExaminar conexões de Comparar Claude e Grok antes de liberar conectores
- Claude Code CLI: Programação com IAConhecer o Claude e escolher o modelo certo para cada tarefaExaminar conexões de Conhecer o Claude e escolher o modelo certo para cada tarefa
Voltar ao capítulo anterior: Receber JSON no formato combinado em toda chamada de API
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Capítulos vizinhos em Prompt Engineering para Executivos
- 10Decidir quando o exemplo ajuda e quando atrapalha o modelo
- 11Receber JSON no formato combinado em toda chamada de API
- 12Escrever ferramentas e prompts para agentes com limites claros
- 13Montar a estratégia de marketing com oito prompts prontos
- 14Produzir peças de campanha com oito prompts prontos para revisar