Pular para o conteúdo
VELRINO.

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.

Emily consulta EXP-1042 no próprio notebook, vista por trás do ombro com a tela voltada para ela. O portal mostra Receipt required, equivalente a Comprovante obrigatório; três rótulos explicam pedir uma consulta, conferir acesso e retornar o status, com a assinatura VELRINO.

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.

Três etapas desenhadas mostram a consulta de EXP-1042: o modelo propõe a chamada, o aplicativo verifica o acesso e faz uma consulta de leitura, depois confere o identificador e o status antes de exibir Comprovante obrigatório.
A consulta inteira em uma imagem: o modelo propõe, o aplicativo executa e confere, depois o modelo explica. O resultado fictício é apenas um status de leitura; não envia nem aprova despesas. Os rótulos estão em inglês. Abrir ilustração completa

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.

  1. O modelo propõe consultar o identificador EXP-1042.
  2. O servidor valida a proposta, verifica o acesso e consulta a API de despesas.
  3. O aplicativo confere o resultado e fornece apenas os campos necessários ao modelo.
  4. O modelo explica o resultado; a interface exibe o status validado.
A proposta de consulta do modelo segue para o servidor, que verifica e executa a operação. O resultado retorna ao aplicativo e ao modelo antes da explicação para Emily.
O caminho de volta importa: propor uma chamada não significa que ela aconteceu. Neste exemplo fictício, a execução pertence ao aplicativo; os rótulos estão em inglês. Abrir ilustração completa

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.

Contrato proposto para uma única consulta
ParteRegra
OperaçãoApenas get_my_expense_status, entre as ferramentas permitidas.
Entradaclaim_id obrigatório, do tipo texto. Campos extras não são aceitos.
CapacidadeLeitura 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.

O argumento claim_id EXP-1042 passa por uma checagem de formato. Outra verificação no servidor usa a identidade autenticada e a propriedade do registro para autorizar a consulta restrita.
Formato e acesso são verificações separadas. O identificador deste exemplo não é uma credencial nem concede permissão. Abrir ilustração completa

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”.

O sistema de despesas fornece claim_id EXP-1042 e status needs_receipt. Após validação no aplicativo, a interface exibe Receipt required, equivalente a Comprovante obrigatório, sem aprovação.
A interface mostra o status derivado dos dados validados do sistema de despesas. Um objeto bem formatado, sozinho, não comprova que a consulta ocorreu. Abrir ilustração completa

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.

Três situações têm respostas diferentes: identificador ausente pede esclarecimento, acesso negado protege o registro e consulta indisponível informa que o status não pôde ser verificado. Nenhuma produz um status inventado.
Ausência de informação, falta de permissão e falha técnica exigem tratamentos diferentes. São casos propostos para nossa central, não resultados medidos. Abrir ilustração completa

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.

Casos de aceitação da consulta de status
SituaçãoResultado esperado
EXP-1042 autorizadoExibir “Comprovante obrigatório” conforme o retorno validado.
Identificador ausentePedir o número, sem adivinhar.
Outro proprietário ou acesso negadoNão fornecer nem confirmar informações privadas.
Tempo esgotado ou resultado inesperadoInformar 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.

  1. Function calling OpenAI
  2. Tool use with Claude Anthropic
  3. Handle tool calls Anthropic
  4. Structured model outputs OpenAI
  5. object JSON Schema
  6. Authorization Cheat Sheet OWASP
  7. LLM Prompt Injection Prevention Cheat Sheet OWASP
Voltar para o blog
Ferramentas de IA: chamadas de função e saídas estruturadas | Velrino