Construindo um atendimento com IAEpisódio 04
Inteligência ArtificialUMA EXPLICAÇÃO VISUAL, PASSO A PASSO
Como funcionam as ferramentas de IA: chamadas de função e saídas estruturadas
Entenda ferramentas de IA e saídas estruturadas com o reembolso de Emily: acompanhe uma consulta, confira permissões, valide JSON e trate falhas.

TL;DR
Uma ferramenta permite que o assistente peça uma operação definida pelo aplicativo. A inteligência artificial (IA) gera uma proposta; o código controla sua execução. Nosso modelo de linguagem de grande escala, ou LLM (large language model), produz texto, mas não ganha acesso ao sistema de despesas só por escrever uma chamada.
- O modelo propõe a ferramenta e os dados necessários. O servidor verifica e executa.
- Saídas estruturadas organizam os dados em campos previsíveis; não provam sua veracidade.
- Permissão, status e erros vêm das verificações do aplicativo, não de uma resposta convincente.
Emily agora pergunta: “Qual é o status do pedido EXP-1042?” Vamos acrescentar uma consulta restrita à mesma central. Este é um projeto didático, com política, identificador e resultado fictícios; nenhum sistema de despesas real está sendo consultado.

1. A política não é o registro do pedido
O jantar de Emily custou US$45. A Travel Policy v3, §4 estabelece o limite de US$50 e exige comprovante detalhado. Nenhuma exceção para comprovante perdido foi fornecida. O episódio sobre busca de fontes com RAG mostrou como recuperar essa política, mas ela não revela o andamento de um pedido específico.
Depois da conversa, Emily registrou o EXP-1042 por conta própria no portal de despesas da empresa. O assistente não enviou, aprovou nem pagou nada. Agora ele precisa consultar o registro existente, em vez de deduzir um status a partir do valor do jantar.
Para isso, o aplicativo pode usar uma API, interface de programação de aplicações: uma forma definida de um sistema pedir informações a outro. A ferramenta conecta a conversa a uma consulta específica dessa interface.
2. O modelo pede; o aplicativo executa
Function calling, ou chamada de função, é o mecanismo pelo qual o modelo propõe uma operação pelo nome e fornece seus argumentos, os dados de entrada. Em nosso exemplo, a operação é get_my_expense_status, “consultar o status da minha despesa”. A documentação da OpenAI apresenta esse ciclo entre modelo, aplicativo e resultado.
- O modelo propõe consultar o identificador EXP-1042.
- O servidor valida a proposta, verifica o acesso e consulta a API de despesas.
- O aplicativo confere o resultado e fornece apenas os campos necessários ao modelo.
- O modelo explica o resultado; a interface exibe o status validado.

Essa divisão descreve nossa função controlada pelo aplicativo. Alguns provedores também oferecem ferramentas executadas em sua própria infraestrutura. A Anthropic distingue ferramentas executadas pelo cliente das executadas pelo servidor do provedor.
3. Definir um contrato pequeno e claro
JSON (JavaScript Object Notation) é um formato de dados com nomes e valores, comum nessa troca entre sistemas. Um schema, ou esquema, descreve o formato aceito: campos obrigatórios, tipos e valores permitidos. Aqui basta um argumento de texto, claim_id, o identificador do pedido. A ferramenta só consulta; não altera registros.
| Parte | Regra |
|---|---|
| Operação | Apenas get_my_expense_status, entre as ferramentas permitidas. |
| Entrada | claim_id obrigatório, do tipo texto. Campos extras não são aceitos. |
| Capacidade | Leitura do status; nenhuma submissão, aprovação ou transferência. |
Não ofereça uma ferramenta genérica que aceite qualquer endereço, comando ou consulta ao banco. Um contrato restrito torna a intenção verificável e limita a capacidade exposta. Na definição de objetos, exigir campos e rejeitar propriedades extras são regras distintas. A documentação do JSON Schema explica essas restrições.
4. Manter as permissões no servidor
EXP-1042 pode ter um formato correto e pertencer a outra pessoa. O servidor obtém a identidade verificada e a organização pela sessão autenticada, não por argumentos gerados pelo modelo. Depois confere a propriedade do pedido e a permissão de consulta.

Essa é a continuidade dos limites do episódio de guardrails. O nome da ferramenta precisa estar entre os permitidos, e cada consulta exige uma decisão de acesso. A OWASP recomenda verificar autorização em toda requisição. A instrução “consulte apenas meus pedidos” não substitui essa regra no servidor.
5. Retornar campos que o aplicativo consegue conferir
Uma saída estruturada apresenta campos previsíveis em vez de um texto livre. Aqui usamos JSON. Para esta consulta fictícia, o sistema de despesas retorna:
{
"claim_id": "EXP-1042",
"status": "needs_receipt"
}O aplicativo valida os campos, confirma o pedido correspondente e reconhece o status entre os valores aceitos. Na interface, needs_receipt aparece como “Comprovante obrigatório”. O modelo pode explicar essa informação, mas não transformá-la em “Aprovado”.

JSON válido não garante correspondência ao esquema; corresponder ao esquema não prova fatos nem concede acesso. Recursos de saída estrita também têm limites de suporte a esquemas e casos de recusa ou falha. A documentação de saídas estruturadas da OpenAI descreve essas condições.
6. Tratar lacunas e falhas sem inventar um status
Sem identificador, peça o número do pedido; não escolha um registro parecido. Se houver acesso negado ou pedido não encontrado, responda sem revelar detalhes privados nem confirmar a existência de um pedido de outra pessoa.
Se a API demorar demais ou estiver indisponível, diga “Não foi possível consultar o status”. “Pendente” seria uma informação inventada. Um campo ausente ou status desconhecido também não pode aparecer como dado confirmado. A documentação da Anthropic aborda o retorno de resultados e erros de ferramentas.

Textos retornados por ferramentas continuam sendo dados não confiáveis: uma observação no pedido não pode ordenar novas ações. A OWASP inclui ferramentas e conteúdo externo na defesa contra injeção de instruções. Nos registros de diagnóstico, evite copiar credenciais, comprovantes ou respostas completas da API; limite acesso e retenção.
7. De uma ferramenta a um fluxo organizado
Antes de ampliar a central, verifique o comportamento esperado em casos concretos. Esta é uma proposta de aceitação, não a validação de um serviço publicado.
| Situação | Resultado esperado |
|---|---|
| EXP-1042 autorizado | Exibir “Comprovante obrigatório” conforme o retorno validado. |
| Identificador ausente | Pedir o número, sem adivinhar. |
| Outro proprietário ou acesso negado | Não fornecer nem confirmar informações privadas. |
| Tempo esgotado ou resultado inesperado | Informar que a consulta não pôde ser concluída, sem substituir o status. |
Perguntas frequentes
O que é uma ferramenta de IA?
É uma capacidade que o modelo pode solicitar, como consultar um reembolso. Neste exemplo, o código da aplicação verifica o pedido e as permissões antes de executar uma função somente de leitura no sistema de despesas.
O que é uma chamada de função?
Uma chamada de função permite ao modelo propor uma operação com nome e argumentos organizados, além de escrever texto. A aplicação decide se o pedido é válido e autorizado, executa a operação e devolve o resultado.
O que são saídas estruturadas?
São resultados com campos previsíveis e um esquema definido, para que o software confira seu formato. Os recursos dos provedores têm limites de esquema e casos de falha. Um formato correto não prova a veracidade do valor nem autoriza acesso.
O modelo pode aprovar um reembolso apenas chamando uma ferramenta?
Não. A ferramenta do exemplo apenas consulta o status de uma solicitação existente. Aprovar exigiria outra operação autorizada e controles de negócio. As palavras do modelo não alteram o registro da despesa.
O que deve acontecer quando a consulta falha?
Peça o identificador ausente, proteja detalhes privados quando o acesso for negado e informe que não foi possível consultar o status quando o sistema estiver indisponível. Nunca troque uma consulta que falhou por um status inventado.
Fontes e próximas leituras
As pesquisas originais que fundamentam o artigo, para quem deseja explorar os detalhes.
- Function calling OpenAI
- Tool use with Claude Anthropic
- Handle tool calls Anthropic
- Structured model outputs OpenAI
- object JSON Schema
- LLM Prompt Injection Prevention Cheat Sheet OWASP