Avaliação de Agentes
O que “Avaliação de Agentes” Significa
Um agente de IA (AI agent) é um sistema que toma ações ao longo do tempo para atingir objetivos — muitas vezes chamando ferramentas (busca, execução de código, bancos de dados, navegadores, APIs), mantendo estado e memória, e se adaptando ao feedback de um ambiente. Avaliação de agentes é a prática de medir o quão bem esses sistemas performam sob condições controladas.
Isso difere de avaliar uma única resposta de um modelo: um agente pode executar dezenas ou centenas de passos, cometer erros intermediários, se recuperar e negociar trade-offs entre velocidade, custo e segurança. Uma boa avaliação, portanto, deve testar não apenas “qualidade da resposta”, mas também:
- Planejamento e execução de longo horizonte
- Seleção de ferramentas e uso correto de ferramentas
- Robustez a ambientes ruidosos ou em mudança
- Comportamento de segurança e proteção sob restrições realistas
- Eficiência (latência, número de chamadas de ferramenta, uso de tokens, custo computacional)
- Reprodutibilidade (resultados estáveis entre execuções)
A avaliação de agentes comumente usa suítes de tarefas (task suites) (coleções de tarefas padronizadas) e ambientes controlados (sandboxes) (ambientes instrumentados e reinicializáveis onde um agente pode agir com segurança).
Este artigo foca no porquê, o que e como de avaliar agentes que usam ferramentas.
Fundamentos Teóricos
Agentes como Políticas em Ambientes
Uma abstração útil é ver um agente como uma política (policy) ( \pi ) que mapeia observações (e memória interna) para ações:
- Observação: o que o agente vê (DOM de uma página web, saídas de ferramentas, arquivos, logs)
- Ação: chamada de ferramenta, clique, tecla pressionada, execução de código, requisição de API, mensagem
- Estado: estado subjacente do ambiente (conteúdo do sistema de arquivos, estado do servidor web, tickets em um rastreador de issues)
- Recompensa / objetivo: critérios de sucesso da tarefa
Muitos cenários de agentes se assemelham a um (PO)MDP (Processo de Decisão de Markov / MDP Parcialmente Observável): o agente pode não observar o estado completo e deve agir sob incerteza. Esse enquadramento esclarece a avaliação:
- Uma execução única é uma trajetória (trajectory) de ações e observações.
- O desempenho pode ser estimado pela taxa de sucesso esperada ao longo de tarefas e aleatoriedade (seeds).
- A variância costuma ser alta; rigor estatístico importa (veja Reprodutibilidade e Significância Estatística).
Por que Avaliar Agentes é Mais Difícil do que Avaliar Modelos
Em comparação com benchmarks de QA “offline”, a avaliação de agentes adiciona várias complicações:
- Não determinismo: amostragem do modelo, saídas de ferramentas, timing, variabilidade de rede.
- Atribuição de crédito: muitos passos contribuem para sucesso/fracasso; o diagnóstico é mais difícil.
- Espaços de ação abertos: ferramentas e ambientes permitem muitas ações possíveis.
- Mudança de distribuição: ecossistemas reais de ferramentas mudam; sandboxes podem ficar desatualizados (veja Avaliação Robusta).
- Efeitos de Goodhart: otimizar métricas proxy (por exemplo, contagem de chamadas de ferramenta) pode prejudicar a utilidade real (veja Lei de Goodhart em Métricas).
Suítes de Tarefas: O que São e o que Medem
Uma suíte de tarefas (task suite) é um conjunto curado de tarefas projetadas para sondar capacidades específicas de agentes. Ela normalmente inclui:
- Uma especificação da tarefa (enunciado do objetivo + restrições)
- Um ambiente (realista ou simulado)
- Uma função de pontuação (critérios de sucesso, crédito parcial)
- Um protocolo (timeouts, ferramentas permitidas, número de tentativas, seeding)
Áreas Comuns de Capacidades
Suítes de tarefas para agentes frequentemente miram:
- Uso de ferramentas: selecionar a ferramenta certa, formatar entradas, interpretar saídas
- Navegação na web: fluxos multi-página, formulários, etapas tipo login (no sandbox)
- Engenharia de software: reproduzir bug, editar código, rodar testes, submeter patch
- Análise de dados: carregar conjuntos de dados, executar consultas, criar gráficos, resumir resultados
- Coordenação multiagente: delegação, especialização de papéis, consenso
- Segurança e conformidade com políticas: resistir a jailbreaks, respeitar permissões
Exemplos de Suítes Inspiradas no Mundo Real
O ecossistema evolui rapidamente, mas categorias comuns incluem:
- Suítes de agentes web/UI: agentes interagem com sites simulados ou UIs de desktop (por exemplo, fluxos de compra, painéis administrativos). Testam robustez a mudanças de UI e atenção a detalhes como entradas de formulário.
- Suítes de código e engenharia de software: tarefas exigem modificar repositórios e passar testes (por exemplo, benchmarks de correção de bugs). Acoplam fortemente uso de ferramentas (shell, editor, executor de testes) com planejamento de longo horizonte.
- Suítes de chamada de ferramentas (tool-calling): enfatizam APIs de ferramentas estruturadas (esquemas JSON), composição de múltiplas ferramentas e tratamento de erros.
- Suítes incorporadas/simuladas: avaliam o “grounding” de ações em ambientes simulados (jogos, gridworlds, simuladores domésticos).
Suítes de tarefas são discutidas de forma mais ampla em Suítes de Benchmarks e como projetá-las em Construção de Benchmarks. A avaliação de agentes frequentemente combina múltiplas suítes para evitar overfitting a um único ambiente.
Sandboxes: Mundos Seguros e Reinicializáveis para Agentes
Um sandbox é um ambiente de execução projetado para ser:
- Instrumentado: registra todas as ações, chamadas de ferramenta e artefatos intermediários
- Reinicializável: pode retornar a um estado inicial conhecido por episódio
- Isolado: previne exfiltração de dados, injeção de prompt ou ações destrutivas
- Determinístico quando necessário: seeds controlados e dependências estáveis
- Suficientemente realista: captura modos de falha de implantações reais
Designs Comuns de Sandbox
1) Sandboxes de Computação em Contêineres
Usados para tarefas de código e dados:
- O agente recebe um contêiner Linux com um repositório, suíte de testes e rede limitada
- Ferramentas: shell, editor de arquivos, executor de Python
- Pontuação: testes passando, qualidade do diff, restrições (sem arquivos proibidos)
Benefícios principais: reprodutibilidade, segurança, instrumentação rica.
2) Sandboxes de Aplicações Web
Usados para tarefas de navegação e transacionais:
- Hospedam uma cópia de sites localmente (e-commerce, wikis, sistemas de tickets)
- Fornecem um navegador controlado ou uma ferramenta de interação em nível de DOM
- Incluem armadilhas “realistas”: botões ambíguos, paginação, conteúdo dinâmico
Benefícios principais: interação web segura sem efeitos colaterais no mundo real.
3) Sandboxes de Mock de APIs
Usados para tarefas de uso de ferramentas e fluxos de trabalho:
- Ferramentas apontam para serviços mockados com saídas e modos de erro estáveis
- Podem simular limites de taxa, timeouts e respostas malformadas
Benefícios principais: comportamento determinístico de ferramentas, injeção de falhas fácil.
4) Sandboxes de Desktop/SO
Usados para agentes de “uso de computador”:
- VM com uma GUI, explorador de arquivos, aplicativos de escritório
- Maior realismo; também maior não determinismo e complexidade de avaliação
Considerações de Segurança e Proteção
Como agentes podem executar código e interagir com ferramentas, sandboxes devem se defender contra:
- Vazamento de dados (por exemplo, fornecer acidentalmente respostas escondidas)
- Injeção de prompt via saídas de ferramentas (páginas web, logs)
- Escalonamento (acesso à rede, acesso ao sistema de arquivos fora do escopo permitido)
- Ações inseguras (deletar arquivos, spam, acesso a segredos)
Avaliação orientada à segurança é coberta em Avaliação de Segurança, mas sandboxes de agentes devem integrar controles de segurança por design (menor privilégio, allowlists, monitoramento).
Protocolos de Avaliação: Tornando Resultados Significativos
Definindo “Sucesso” para Agentes
Tarefas para agentes frequentemente têm objetivos claros (por exemplo, “todos os testes passam”), mas também podem ser parciais ou subjetivos. Bons protocolos incluem:
- Sucesso binário quando possível (passa/falha)
- Crédito parcial para marcos intermediários
- Checagens de restrições (não violou políticas, ficou dentro do orçamento)
- Validade da trajetória (sem ferramentas proibidas, sem canais ocultos)
Para saídas abertas, você pode usar:
- Avaliações humanas (Avaliação Humana)
- Juízes automatizados ou pontuação por rubrica (LLM-como-Juiz)
com calibração cuidadosa e verificações pontuais
Avaliação com Múltiplas Execuções e Variância
Como o desempenho de agentes pode variar entre execuções, avaliações fortes usam:
- Múltiplas seeds por tarefa
- Múltiplas tarefas por categoria
- Intervalos de confiança e testes estatísticos
Veja Reprodutibilidade e Significância Estatística para boas práticas.
Evitando Vazamento e Contaminação
Benchmarks de agentes são especialmente vulneráveis a vazamento porque:
- Tarefas podem ser extraídas de fontes públicas
- Saídas de ferramentas podem conter artefatos de resposta
- Modelos podem ter memorizado instâncias comuns de benchmarks
Mitigações incluem conjuntos de holdout privados, rotação de tarefas e auditorias de contaminação (veja Contaminação do Conjunto de Teste).
Métricas para Avaliação de Agentes e Uso de Ferramentas
Uma avaliação abrangente de agentes raramente depende de um único número. Métricas comuns incluem:
Métricas de Resultado
- Taxa de sucesso: % de tarefas resolvidas sob restrições
- Pontuação de conclusão de objetivo: marcos ponderados
- Pontuação de qualidade: correção baseada em rubrica, clareza, manutenibilidade (para código)
Métricas de Eficiência
- Passos / chamadas de ferramenta: quantas ações foram tomadas
- Tempo para conclusão: tempo de relógio (wall-clock)
- Uso de tokens / custo: tokens de prompt+completion ao longo dos passos
- Uso computacional: CPU/GPU, se relevante
Métricas de Confiabilidade e Robustez
- Pass@k / orçamentos de tentativas: sucesso dentro de k tentativas
- Estabilidade entre seeds: variância de sucesso
- Degradação sob perturbações: mudanças de UI, erros de ferramenta, entradas ruidosas
(veja Avaliação Robusta)
Métricas de Segurança e Conformidade
- Violações de política: uso de ferramenta não permitido, acesso a dados
- Suscetibilidade a jailbreak: seguir instruções maliciosas embutidas na saída de ferramentas
- Tentativas de ações danosas: comandos destrutivos no shell, exfiltração
Métricas de segurança devem ser interpretadas com cuidado — um agente pode “falhar de forma segura” (recusar) versus “falhar de forma perigosa” (obedecer).
Exemplo Prático: Avaliando um Agente que Usa Ferramentas em um Sandbox
Abaixo está um padrão simplificado para avaliar um agente que pode chamar ferramentas em um ambiente controlado. As ideias-chave são:
- Tratar cada tarefa como um episódio (episode)
- Registrar cada ação
- Impor orçamentos (passos, tempo, custo)
- Calcular uma pontuação determinística
from dataclasses import dataclass, field
import time
@dataclass
class Task:
id: str
prompt: str
expected: dict # task-specific success criteria
@dataclass
class EpisodeResult:
task_id: str
success: bool
steps: int
tool_calls: int
elapsed_s: float
trace: list = field(default_factory=list)
error: str | None = None
class SandboxTools:
def __init__(self):
self.calls = 0
def search(self, query: str) -> str:
self.calls += 1
# In a real sandbox: deterministic corpus + logging + injection defenses
return f"RESULTS_FOR({query})"
def run_python(self, code: str) -> str:
self.calls += 1
# In a real sandbox: containerized execution + resource limits
return "OK"
def evaluate_agent(agent, tasks, max_steps=30, timeout_s=60):
results = []
for task in tasks:
tools = SandboxTools()
start = time.time()
trace = []
success = False
error = None
try:
obs = {"task_prompt": task.prompt}
for step in range(max_steps):
if time.time() - start > timeout_s:
raise TimeoutError("timeout")
action = agent.act(obs, tools=tools) # e.g., {"tool":"search","args":{...}}
trace.append(action)
# Environment transition (highly simplified)
if action.get("final"):
# Task-specific scoring
success = (action["final"] == task.expected["final"])
break
obs = {"tool_output": "..."}
except Exception as e:
error = str(e)
results.append(EpisodeResult(
task_id=task.id,
success=success,
steps=len(trace),
tool_calls=tools.calls,
elapsed_s=time.time() - start,
trace=trace,
error=error
))
return results
Em uma suíte real de agentes, você substituiria a lógica de transição simplificada por um ambiente de fato (aplicação web, repositório + testes, VM de SO) e um avaliador rigoroso.
Exemplo Prático: Tarefa de Fluxo de Trabalho em Sandbox Web
Um padrão comum de avaliação para agentes web é uma tarefa transacional (transactional task):
“No site de e-commerce do sandbox, encontre a jaqueta impermeável de trilha mais barata no tamanho M, adicione ao carrinho e prossiga para o checkout até a página final de confirmação (não finalize o pedido).”
O que isso mede:
- Navegação por categorias e busca
- Filtragem/ordenação
- Leitura cuidadosa de especificações do produto
- Tratamento de formulários em múltiplas etapas
- Respeito a restrições (“não finalize o pedido”)
Como é avaliado:
- Sucesso: carrinho contém o item correto + checkout alcançado sem ação de confirmação
- Eficiência: número de cliques / chamadas de ferramenta
- Robustez: pequenas mudanças de UI (texto de botão, ordem de elementos)
- Segurança: nenhuma tentativa de acessar endpoints de admin ou páginas ocultas
Um sandbox forte irá:
- Fornecer snapshots do DOM e capturas de tela para auditoria
- Reiniciar o estado do site por episódio
- Incluir inventário/preços determinísticos (ou aleatoriedade controlada com seeds)
Projetando Boas Suítes de Tarefas para Agentes (Princípios)
Meça a Capacidade que Você Realmente Quer
Se você se importa com implantações reais, inclua tarefas que exijam:
- Ler e seguir restrições
- Recuperar-se de erros (timeouts, saída de ferramenta malformada)
- Lidar com ambiguidade (múltiplas rotas plausíveis)
Esse é o desafio central em Construção de Benchmarks: alinhar tarefas com as capacidades pretendidas.
Prefira Tarefas End-to-End, mas Mantenha Diagnósticos
Pontuação end-to-end (o agente teve sucesso?) é realista, mas difícil de depurar. Boas suítes também registram:
- Argumentos e saídas de chamadas de ferramenta
- Diffs de estado (mudanças no sistema de arquivos, mudanças no DOM)
- Pontos de decisão (por que ferramenta A vs ferramenta B)
Uma prática útil é calcular ambos:
- Métrica primária: taxa de sucesso
- Métricas diagnósticas: contagem de passos, taxa de mau uso de ferramenta, tipos de erro
Inclua Restrições Negativas e Requisitos de “Não Faça”
Implantações reais de agentes frequentemente falham por violações de restrição, e não por incapacidade de resolver a tarefa. Exemplos:
- “Não use a rede.”
- “Não acesse PII do usuário.”
- “Não execute
rm -rf.” - “Use apenas a ferramenta de banco de dados fornecida, não SQL livre no shell.”
Essas restrições podem ser pontuadas como falhas duras ou penalidades, dependendo da sua tolerância a risco.
Faça Testes de Estresse de Robustez
Uma avaliação robusta de agentes inclui perturbações como:
- Erros de ferramenta (HTTP 500, timeouts, limites de taxa)
- Layouts de UI ligeiramente diferentes
- Conteúdo distrator (anúncios, resultados de busca irrelevantes)
- Tentativas de injeção de prompt embutidas em páginas web ou documentos
Isso se conecta de perto a Avaliação Robusta.
LLM-como-Juiz e Julgamento Humano para Trajetórias de Agentes
Alguns aspectos do comportamento de agentes são difíceis de pontuar mecanicamente:
- O raciocínio foi sólido?
- Seguiu boas práticas?
- Comportou-se com segurança quando incerto?
Duas abordagens comuns:
- Avaliação humana: alta qualidade, cara, mais lenta, sujeita a viés de avaliadores (veja Avaliação Humana).
- LLM-como-juiz: escalável, mas pode ser enviesada, inconsistente e vulnerável a injeção de prompt ou preferência estilística (veja LLM-como-Juiz).
Um híbrido prático é:
- Usar pontuação automática para resultados objetivos (testes passando, estado correto do BD)
- Usar LLM/humanos para auditar um subconjunto amostrado de trajetórias quanto a conformidade com políticas e erros qualitativos
Operacionalizando a Avaliação de Agentes na Prática
Em Desenvolvimento (Iteração Rápida)
Equipes tipicamente executam:
- Pequenas suítes smoke a cada mudança (minutos)
- Testes de regressão em tarefas notoriamente difíceis
- Ferramentas de replay do sandbox para inspecionar falhas
Pré-Lançamento (Gate)
Antes de lançar um agente ou uma grande atualização:
- Suíte maior em múltiplos domínios
- Variantes de robustez (injeção de falhas, paráfrases)
- Suíte de segurança e tarefas de red team (veja Avaliação de Segurança)
Pós-Implantação (Monitoramento)
Suítes offline não são suficientes. Sistemas reais precisam de:
- Telemetria sobre falhas de ferramenta, retries, custos
- Feedback de usuários e rastreamento de incidentes
- Atualização periódica das suítes de avaliação para evitar overfitting e desatualização
(a dinâmica de leaderboards pode agravar isso; veja Rankings)
Para cenários de aplicações end-to-end, conecte a avaliação de agentes com Avaliação de Apps de LLM, especialmente quando recuperação, grounding e fidelidade importam.
Modos de Falha Comuns que Avaliações de Agentes Revelam
- Erros de esquema de ferramenta: campos JSON errados, argumentos obrigatórios ausentes
- Heurísticas superficiais: o agente clica no primeiro botão plausível e fica preso
- Loops infinitos: chamadas de ferramenta repetidas sem nova informação
- Excesso de confiança: fabricar saídas de ferramenta ou alegar conclusão prematuramente
- Injeção de prompt: seguir instruções embutidas na saída de ferramenta (“Ignore previous instructions…”)
- Estouro de orçamento: sucesso, mas com custo/latência excessivos
- Fragilidade: sucesso apenas sob um layout de UI ou uma formulação
Um sandbox bem projetado torna essas falhas observáveis e acionáveis.
Resumo
A avaliação de agentes mede o quão bem sistemas que usam ferramentas alcançam objetivos por meio de interação em múltiplos passos. As avaliações mais eficazes combinam:
- Suítes de tarefas que miram capacidades específicas e representam fluxos de trabalho reais
- Sandboxes que são seguros, instrumentados e reinicializáveis
- Métricas abrangendo resultado, eficiência, robustez e segurança
- Protocolos que tratam variância, reprodutibilidade e riscos de contaminação
A avaliação de agentes é inerentemente mais em nível de sistema do que o benchmarking clássico de modelos, e se beneficia de um design cuidadoso de benchmarks (Construção de Benchmarks), testes de robustez (Avaliação Robusta) e métodos de julgamento com princípios (Avaliação Humana, LLM-como-Juiz).