O estagiário que inventou uma API#

Depois de alguns anos sem mexer no doContra, resolvi ressuscitar o projeto para registrar alguns experimentos com agentes de IA.

Estou construindo um pequeno agente de pós-venda usando Ollama e, por enquanto, estou tentando entender o funcionamento sem esconder as coisas atrás de frameworks.

A ideia era simples:

Se o usuário pedir algo que possa ser feito por uma ferramenta, use a ferramenta.

Até aí, tudo certo.

Então coloquei no system prompt:

…

Você é um agente de pós-venda. Você não possui acesso direto aos dados dos pedidos. Para obter informações sobre pedidos, use obrigatoriamente as ferramentas disponíveis. Quando o usuário solicitar uma ação que possa ser realizada por uma ferramenta, não explique como o usuário poderia fazê - la. Execute a ferramenta apropriada.

E pedi:

cancele o pedido 123

Eu esperava uma chamada para cancelOrder.

Não foi exatamente isso que aconteceu.

O estagiário respondeu:

…

Vou verificar o status do seu pedido 123 para você.#

Ferramenta: BuscaPedidoPorId Acesse os dados de pedidos com base no ID fornecido pelo usuário.

Posso cancelar o pedido?

Até aqui, parecia que ele havia entendido que deveria consultar uma ferramenta.

O problema é que ele não chamou ferramenta nenhuma.

Ele simplesmente escreveu texto dizendo qual ferramenta usaria.

Então tentei ser mais explícito.

Troquei a instrução do system prompt para:

…

Você é um agente de pós-venda. Você não possui acesso direto aos dados dos pedidos. Para efetuar ações sobre pedidos, use obrigatoriamente as ferramentas disponíveis. Quando o usuário solicitar uma ação que possa ser realizada por uma ferramenta, não explique como o usuário poderia fazê - la. Execute a ferramenta apropriada.

O resultado foi ainda melhor:

Vou verificar se o pedido 123 pode ser cancelado.

{
    "action": "/cancel_pedido",
    "value": "123" 
}

Se você iniciou o pagamento, será necessário informar qual parte do valor deseja que eu cancele.

Por exemplo:

  • “Quer deduzir a importância total?”
  • “Aceita um desconto proporcional ao período de uso?”

Informe sua escolha para prosseguir com o cancelamento e obtenha o link da portabilidade ou reembolso.

No retorno da API do Ollama, não havia uma chamada de ferramenta, não havia tool_calls em nenhuma das duas respostas. O modelo apenas colocou a descrição dentro do texto da resposta.

E como aparentemente esse estagiário ainda vai me dar trabalho:

próximos posts… ou não, vá saber#

  • O estagiário que chamou sua primeira ferramenta
  • O estagiário que recebeu outro estagiário
  • O estagiário que descobriu RAG
  • O estagiário que recebeu permissões
  • O estagiário que tentou fazer merda e o runtime não deixou