Inteligência artificial, sem ruído.
Agentes de IA6 min

Simulação de Usuários Realistas para Avaliação de Agentes de IA em Conversas Multi-turno com Strands Evals

Introdução: Desafios na Avaliação de Agentes de IA em Interações Multi-turno A avaliação de agentes de inteligência artificial (IA) em interações de…

Introdução: Desafios na Avaliação de Agentes de IA em Interações Multi-turno

A avaliação de agentes de inteligência artificial (IA) em interações de turno único é um processo relativamente direto, onde um input é fornecido, a resposta do agente é coletada e avaliada. Frameworks como o Strands Evaluation SDK sistematizam essa avaliação por meio de métricas como helpfulness (utilidade), faithfulness (fidelidade) e uso correto de ferramentas.

No entanto, conversas reais com usuários geralmente envolvem múltiplos turnos, nos quais perguntas de seguimento, mudanças de contexto e expressões de frustração são comuns. Por exemplo, um assistente de viagens que responde adequadamente a “Reserve um voo para Paris” pode não lidar bem com perguntas subsequentes como “Na verdade, podemos ver trens?” ou “E hotéis próximos à Torre Eiffel?”.

Esses padrões dinâmicos demandam avaliações que vão além de casos estáticos e roteirizados, exigindo escalabilidade para centenas de conversas multi-turno. A avaliação manual é impraticável nesse cenário, e roteiros fixos não capturam a complexidade do comportamento humano.

ActorSimulator: Simulação Estruturada de Usuários para Avaliação Automatizada

O ActorSimulator, componente do Strands Evaluation SDK, oferece uma solução automatizada para simular usuários realistas e orientados por objetivos, capazes de interagir naturalmente com agentes em múltiplos turnos. Essa ferramenta integra-se facilmente a pipelines de avaliação automatizadas, tornando possível escalar testes complexos.

Características Fundamentais do Usuário Simulado

  • Consistência de Persona: Mantém características estáveis de comunicação, expertise e personalidade durante toda a conversa, garantindo confiabilidade nos dados de avaliação.
  • Comportamento Orientado a Objetivos: O usuário simulado possui metas explícitas, persiste até seu alcance, adapta estratégias conforme respostas do agente e reconhece a conclusão da tarefa.
  • Adaptação Dinâmica: Responde de forma contextualizada às respostas do agente, realizando perguntas de seguimento, esclarecendo dúvidas e redirecionando a conversa conforme necessário.

Funcionamento do ActorSimulator

O processo inicia com a geração automática de um perfil do usuário, elaborado por um modelo de linguagem (LLM) a partir de um caso de teste que inclui uma consulta inicial e uma descrição da tarefa. Por exemplo, para a entrada “Preciso de ajuda para reservar um voo para Paris” com a tarefa “Reserva de voo dentro do orçamento”, o simulador pode criar um perfil de viajante econômico com experiência iniciante e estilo casual.

Durante a conversa, o ActorSimulator mantém o histórico completo e gera respostas alinhadas ao perfil e aos objetivos do usuário simulado. Quando o agente responde parcialmente, o simulador formula perguntas de seguimento coerentes; se o agente pede esclarecimentos, o simulador responde condizente com a persona.

O sistema incorpora uma ferramenta interna para avaliação da conclusão da meta, encerrando a interação ao atingir o objetivo, detectar incapacidade do agente ou atingir o limite máximo de turnos configurado.

Cada resposta do usuário simulado inclui um raciocínio estruturado que explica a escolha da fala, facilitando análises detalhadas para identificação de pontos fortes e falhas do agente.

Exemplo Prático: Avaliação de Assistente de Viagens

Para iniciar, instale o SDK com:

pip install strands-agents-evals

Em seguida, defina um caso de teste, crie o agente e o simulador, e execute a conversa multi-turno:

from strands import Agent
from strands_evals import ActorSimulator, Case

case = Case(
    input="Quero planejar uma viagem para Tóquio com hotel e atividades",
    metadata={"task_description": "Pacote de viagem completo"}
)

agent = Agent(system_prompt="Você é um assistente de viagens útil.", callback_handler=None)

user_sim = ActorSimulator.from_case_for_user_simulator(case=case, max_turns=5)

user_message = case.input
conversation_history = []

while user_sim.has_next():
    agent_response = agent(user_message)
    agent_message = str(agent_response)
    conversation_history.append({"role": "assistant", "content": agent_message})

    user_result = user_sim.act(agent_message)
    user_message = str(user_result.structured_output.message)
    conversation_history.append({"role": "user", "content": user_message})

print(f"Conversa concluída em {len(conversation_history) // 2} turnos")

A conversa prossegue até que o simulador indique término por sucesso, falha ou limite de turnos.

Integração com Pipelines de Avaliação e Telemetria

Para avaliações em ambiente de produção, é essencial capturar métricas detalhadas da interação. O ActorSimulator integra-se com a coleta de telemetria via OpenTelemetry, permitindo rastrear chamadas a ferramentas, invocações de modelo e tempos de resposta em cada turno.

Esses dados são organizados em sessões estruturadas que alimentam avaliadores como GoalSuccessRateEvaluator e HelpfulnessEvaluator, possibilitando análises completas da conversa em vez de avaliações isoladas por turno.

Perfis Customizados para Testes Específicos

Além da geração automática, o ActorSimulator permite definir perfis manuais para simular diferentes tipos de usuários, como especialistas impacientes ou iniciantes técnicos, possibilitando identificar pontos fortes e limitações do agente em variados contextos.

from strands_evals.types.simulation import ActorProfile
from strands_evals import ActorSimulator
from strands_evals.simulation.prompt_templates.actor_system_prompt import DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE

actor_profile = ActorProfile(
    traits={
        "personality": "analítico e detalhista",
        "communication_style": "direto e técnico",
        "expertise_level": "especialista",
        "patience_level": "baixo"
    },
    context="Viajante de negócios experiente com status elite que valoriza eficiência",
    actor_goal="Reservar voo em classe executiva com assento específico e acesso à sala VIP"
)

user_sim = ActorSimulator(
    actor_profile=actor_profile,
    initial_query="Preciso reservar um voo em classe executiva para Londres na próxima terça",
    system_prompt_template=DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE,
    max_turns=10
)

Boas Práticas para Avaliação com Simulação

  • Configure max_turns conforme a complexidade da tarefa: 3-5 para tarefas específicas, 8-10 para fluxos multi-etapas.
  • Utilize descrições claras da tarefa para que o simulador avalie a conclusão com precisão.
  • Combine perfis gerados automaticamente para ampla cobertura e perfis customizados para reproduzir padrões reais observados em produção.
  • Analise tendências gerais na suíte de testes em vez de focar em transcrições isoladas.

O ActorSimulator no Strands Evaluation SDK oferece uma abordagem estruturada e escalável para avaliação de agentes de IA em conversas multi-turno. Ao simular usuários realistas com perfis consistentes, objetivos explícitos e comportamento adaptativo, é possível gerar dados de avaliação que refletem melhor os desafios enfrentados em ambientes reais, facilitando a identificação precisa de melhorias e regressões no desempenho dos agentes.

Links Úteis


Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.