Skip to content

Otimização de instruções (Optimizer)

O Optimizer reescreve automaticamente a instrução de um Agent, usando o Eval como régua: a cada rodada, ele olha os casos que falharam, pede a um modelo de IA algumas variantes da instrução e mantém a que performar melhor no conjunto de testes.

Pré-requisito: um bom conjunto de testes

O Optimizer não inventa critério de qualidade — ele usa o conjunto de testes que você indicar como gabarito em cada rodada. Isso quer dizer que a régua da otimização é o conjunto de testes: quanto mais representativos forem os casos (idealmente com a trajetória esperada e/ou a resposta final esperada definidas, não só a entrada), melhor a instrução final.

Um conjunto de testes pequeno, incompleto ou com poucos casos negativos tende a produzir uma instrução que só parece boa — porque só foi cobrada nos poucos cenários que o conjunto de testes testa. Antes de rodar o Optimizer, revise o conjunto de testes como se fosse revisar os requisitos de um projeto.

Como funciona

mermaid
flowchart TD
    A[Conjunto de testes com casos] --> B[Roda a avaliação com a instrução atual]
    B --> C{Algum caso falhou?}
    C -->|Sim| D[IA gera K variantes da instrução,<br/>focadas nos casos que falharam]
    D --> E[Cada variante roda o Agent em sandbox<br/>e é pontuada pelos mesmos critérios da avaliação]
    E --> F[Mantém a melhor variante da rodada]
    F --> G{Ainda há rodadas<br/>ou orçamento disponível?}
    G -->|Sim| B
    G -->|Não| H[Instrução vencedora]
    C -->|Não| H
    H --> I[Comparar antiga x nova e aplicar]
    I --> J[Grava no rascunho e PUBLICA<br/>uma nova versão do Agent]

A cada rodada:

  1. O Optimizer identifica os casos de teste que falharam com a instrução atual (a instrução vencedora da rodada anterior, ou a instrução base na primeira rodada).
  2. Pede a um modelo de IA gerador K variantes da instrução (candidatas), cada uma tentando corrigir as falhas identificadas sem perder o que já funcionava.
  3. Cada variante roda o Agent em sandbox (sem efeitos reais de CRM) contra todo o conjunto de testes e é pontuada pelos mesmos critérios usados no Eval (trajetória de ferramentas, resposta final, rubrica, segurança).
  4. A variante com melhor taxa de aprovação vira a instrução vigente para a próxima rodada.
  5. O processo repete por até N rodadas, respeitando um teto de orçamento de tokens (o "combustível" cobrado pelo uso de IA) — o que vier primeiro.

Ao final, a instrução da última rodada com o melhor resultado é a instrução vencedora da otimização.

Padrões

ConfiguraçãoPadrãoLimite
Número de rodadas3até 10
Variantes por rodada4até 8
Orçamento de tokens200000— (teto de custo; o processo para ao estourar)
Dica

Credenciais e modelo são determinados pelo sistema — o cliente não escolhe. Todas as chamadas de IA da otimização (o gerador de variantes e o juiz que pontua os candidatos) usam a credencial do próprio workspace (a chave do cliente, a mesma integração conectada que o Agent usa para rodar) — nunca uma chave global.

O juiz herda o provedor do próprio Agent — a mesma integração conectada que roda o Agent (OpenAI, Anthropic, Gemini, OpenRouter, etc.). Ele não exige uma integração OpenRouter separada: o provedor é derivado do modelo do Agent (ex.: gpt-4o → OpenAI, claude-sonnet-4 → Anthropic, gemini-2.5-flash → Gemini, qualquer modelo com / no identificador → OpenRouter) e usa a credencial daquele provedor.

O modelo do juiz é determinado pelo sistema por provedor — um modelo barato/leve por provedor (ex.: gpt-4.1-nano na OpenAI, um Haiku na Anthropic, um Flash Lite no Gemini). O gerador de variantes roda no modelo do próprio Agent sob otimização (o mesmo em que ele executa).

Cada workspace pode fixar um modelo ÚNICO de juiz (ex.: openai/gpt-4.1-nano ou gemini-2.5-flash-lite) que passa a valer para todas as avaliações. Quando definido, o juiz usa esse modelo para qualquer Agent, e provedor e credencial passam a vir do modelo escolhido (não mais do Agent). Vazio = padrão do sistema por provedor do Agent. Veja Modelo do juiz por workspace no guia de Eval.

Se o Agent não tiver um modelo definido ou o workspace não tiver a integração do provedor conectada, o disparo da otimização falha com um erro claro — configure a integração antes de otimizar.

Disparando uma otimização

Essa ação é feita pela tela do Agent Builder. Para times técnicos, também é possível via API:

bash
curl -X POST https://sua-instancia/api/ai-agents/{agent}/eval-sets/{set}/optimize \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
        "config": {
          "rounds": 3,
          "candidates": 4,
          "budget_tokens": 200000
        }
      }'

Todos os campos de configuração são opcionais — se omitidos, usam os padrões acima. A resposta devolve a otimização recém-criada com status "em andamento": o processamento roda em segundo plano, fora do processamento normal de uma requisição web — por isso, assim como o modo ao vivo do Eval, não tem um limite curto de tempo de execução.

Permissão requerida: gerenciar avaliações do Agent.

Acompanhando o progresso

Na tela de otimização, é possível ver ao vivo cada candidato sendo avaliado: a rodada, o índice do candidato, a taxa de aprovação do candidato, a melhor instrução encontrada até agora e os tokens já gastos. Sem precisar dar refresh na página, dá pra acompanhar a evolução rodada a rodada até o Optimizer convergir ou estourar o orçamento.

Para times técnicos, o mesmo pode ser consultado via API:

bash
curl https://sua-instancia/api/ai-agents/{agent}/optimize-runs/{optimizeRun} \
  -H "Authorization: Bearer {token}"

curl https://sua-instancia/api/ai-agents/{agent}/optimize-runs/{optimizeRun}/candidates \
  -H "Authorization: Bearer {token}"

O primeiro endpoint devolve o resumo da otimização (status, configuração, instrução base, instrução vencedora); o segundo lista cada candidato gerado (rodada, índice, instrução testada, taxa de aprovação, média por critério).

Permissão requerida: visualizar avaliações do Agent.

Aplicando a instrução vencedora

Quando a otimização chega ao fim com uma instrução vencedora, a tela mostra um comparativo entre a instrução antiga e a nova para revisão antes de aplicar:

bash
curl -X POST https://sua-instancia/api/ai-agents/{agent}/optimize-runs/{optimizeRun}/apply \
  -H "Authorization: Bearer {token}"

Só é possível aplicar uma otimização que tenha terminado com uma instrução vencedora — tentar aplicar uma otimização ainda em andamento, sem instrução vencedora, retorna erro de validação.

Permissão requerida: gerenciar avaliações do Agent.

Custos e limites

  • O custo escala com rodadas × variantes × casos do conjunto de testes × (1 execução do Agent + 1 julgamento de IA por critério) — um conjunto de testes com 10 casos, 3 rodadas e 4 variantes já significa até 120 execuções completas do Agent, cada uma seguida de avaliação por um juiz de IA. Comece pequeno (menos rodadas/variantes) e aumente conforme necessário.
  • Use o orçamento de tokens como teto de segurança: o processo para assim que o consumo estimado de tokens ultrapassa o valor configurado, mesmo que ainda faltem rodadas.
  • Conversas de múltiplas trocas não são suportadas no caso de teste usado pelo Optimizer — cada caso é avaliado a partir do turno inicial, sem considerar uma conversa de múltiplas trocas.
  • Assim como no eval, a qualidade da otimização depende diretamente da qualidade do conjunto de testes usado — veja Pré-requisito: um bom conjunto de testes acima.

Ver também