Avaliar conversas
A avaliação de conversas permite analisar sessões de conversação inteiras, em vez de turnos individuais. Isso é essencial para avaliar sistemas AI conversacional, nos quais a qualidade emerge ao longo de múltiplas interações, como padrões de frustração do usuário, completude da conversa ou coerência geral do diálogo.
Os juízes de múltiplas rodadas podem ser usados tanto para avaliação offline durante o desenvolvimento (conforme descrito nesta página) quanto para monitoramento contínuo em produção.
A avaliação em múltiplas etapas é experimental. A API e o comportamento podem mudar em versões futuras.
Pré-requisitos
Instale o MLflow 3.10.0 ou mais tarde:
pip install --upgrade 'mlflow[databricks]>=3.10'
Seu agente deve estar configurado para rastrear IDs de sessão nos rastreamentos. Consulte a seção Rastrear usuários e sessões para saber como definir IDs de sessão em seus rastreamentos.
Duas abordagens
O MLflow suporta duas abordagens para avaliar conversas:
-
Avaliar conversas pré-geradas : Avaliar conversas existentes que já foram rastreadas. Utilize esta abordagem quando tiver:
- Dados de conversação de produção para análise
- Conversas de teste pré-gravadas de controle de qualidade ou estudos de usuários.
- Conversas de uma versão anterior do agente para comparação.
-
Simule conversas durante a avaliação : Gere novas conversas simulando interações do usuário com seu agente. Utilize essa abordagem quando quiser:
- Teste sistematicamente uma nova versão do agente com cenários consistentes.
- Gere diversos cenários de teste em escala.
- Teste a resistência do seu agente com comportamentos de usuário específicos e casos extremos.
Visão geral
A avaliação tradicional de turno único avalia a resposta de cada agente de forma independente. No entanto, os agentes conversacionais exigem avaliação em nível de sessão para capturar:
- Frustração do usuário : O usuário ficou frustrado? O problema foi resolvido?
- Completude da conversa : Todas as perguntas do usuário foram respondidas até o final da conversa?
- Retenção de conhecimento : O agente se lembra de informações do início da conversa?
- Coerência do diálogo : A conversa flui naturalmente?
A avaliação multiturn atende a essas necessidades agrupando os registros em sessões de conversa e aplicando avaliadores que analisam toda a história da conversa.
Avaliar conversas pré-geradas
Avalie as conversas que já foram rastreadas. Isso é útil para avaliar dados de produção ou conversas de teste pré-gravadas.
o passo 1: marcar rastros com IDs de sessão
Ao criar seu agente, defina IDs de sessão nos rastreamentos para agrupá-los em conversas:
import mlflow
@mlflow.trace
def my_chatbot(question, session_id):
mlflow.update_current_trace(
tags={"mlflow.trace.session": session_id}
)
# ... your chatbot logic
Para obter documentação completa sobre como acompanhar sessões, consulte Rastrear usuários e sessões.
o passo 2: Recuperar e avaliar sessões
Obtenha os traços do seu experimento e passe-os para mlflow.genai.evaluate. O MLflow agrupa automaticamente os rastreamentos por ID de sessão:
from mlflow.genai.scorers import ConversationCompleteness, UserFrustration
# Get traces from your experiment
traces = mlflow.search_traces(
filter_string="attributes.status = 'OK'",
return_type="list",
)
# Evaluate the conversations
# MLflow automatically groups traces by their session ID tag
results = mlflow.genai.evaluate(
data=traces,
scorers=[
ConversationCompleteness(), # Did the agent answer all questions?
UserFrustration(), # Did the user become frustrated?
],
)
Você também pode recuperar sessões completas diretamente usando mlflow.search_sessions:
import mlflow
# Get complete sessions (each session is a list of traces)
sessions = mlflow.search_sessions(
locations=["<your-experiment-id>"],
max_results=50,
)
# Flatten for evaluation
all_traces = [trace for session in sessions for trace in session]
results = mlflow.genai.evaluate(
data=all_traces,
scorers=[ConversationCompleteness(), UserFrustration()],
)
Simule conversas durante a avaliação.
Gere novas conversas simulando interações do usuário. Isso permite testar diferentes versões de agentes com objetivos e perfis consistentes.
import mlflow
from mlflow.genai.simulators import ConversationSimulator
from mlflow.genai.scorers import ConversationCompleteness, Safety
# Define test scenarios
simulator = ConversationSimulator(
test_cases=[
{"goal": "Successfully set up experiment tracking"},
{"goal": "Identify the root cause of a deployment error"},
{
"goal": "Understand how to implement model versioning",
"persona": "You are a beginner who needs detailed explanations",
},
],
max_turns=5,
)
# Your agent's predict function
def predict_fn(input: list[dict], **kwargs) -> str:
# input is the conversation history
response = your_agent.chat(input)
return response
# Simulate conversations and evaluate
results = mlflow.genai.evaluate(
data=simulator,
predict_fn=predict_fn,
scorers=[
ConversationCompleteness(),
Safety(),
],
)
Para obter documentação completa sobre simulação de conversação, incluindo definição de casos de teste, interfaces de funções de previsão e opções de configuração, consulte Simulação de conversação.
Juízes de múltiplas voltas
juízas integradas
MLflow oferece avaliadores integrados de múltiplas interações para avaliar a qualidade da conversa. Para obter a lista completa e a documentação detalhada, consulte a documentação dos avaliadores predefinidos do MLflow e a página Avaliadores e juízes de LLM .
Juízes personalizados
Crie juízes personalizados de múltiplas voltas usando make_judge. Use a variável {{ conversation }} padrão para acessar a história completa da conversa:
from mlflow.genai.judges import make_judge
from typing import Literal
# Create a custom multi-turn judge
politeness_judge = make_judge(
name="politeness",
instructions=(
"Evaluate whether the assistant maintained a polite and professional "
"tone throughout this conversation:\n\n{{ conversation }}\n\n"
"Rate as 'consistently_polite', 'mostly_polite', or 'impolite'."
),
feedback_value_type=Literal["consistently_polite", "mostly_polite", "impolite"],
)
# Get traces from your experiment
traces = mlflow.search_traces(
filter_string="attributes.status = 'OK'",
return_type="list",
)
# Use in evaluation
results = mlflow.genai.evaluate(
data=traces,
scorers=[politeness_judge],
)
A variável {{ conversation }} insere o histórico completo da conversa em um formato legível para o juiz analisar.
A variável {{ conversation }} só pode ser usada com {{ expectations }}, não com {{ inputs }}, {{ outputs }} ou {{ trace }}.
Como as avaliações são armazenadas
As avaliações de múltiplas interações são armazenadas no primeiro registro (cronologicamente) de cada sessão. Este projeto garante:
- As avaliações permanecem estáveis mesmo com a adição de novas etapas a uma conversa.
- Você pode encontrar facilmente avaliações em nível de conversa analisando os registros de início de sessão.
- A interface de usuário de Sessões pode exibir métricas de conversação de forma eficiente.
As avaliações incluem metadados que as identificam como sendo de nível conversacional:
session_idO ID da sessão que vincula a avaliação à conversa completa.
Trabalhando com sessões específicas
Para avaliar uma sessão específica, use mlflow.search_traces com strings de filtro:
import mlflow
from mlflow.genai.scorers import ConversationCompleteness, UserFrustration
# Get traces for a specific session using filter
traces = mlflow.search_traces(
filter_string="tags.`mlflow.trace.session` = '<your-session-id>'",
return_type="list",
)
# Evaluate the session
results = mlflow.genai.evaluate(
data=traces,
scorers=[ConversationCompleteness(), UserFrustration()],
)
Próximos passos
- Monitore as conversas na produção - Utilize juízes de múltiplas rodadas para monitoramento contínuo da produção.
- Simulação de Conversas - Gere conversas sintéticas para testar seu agente em diversos cenários e comportamentos de usuários.
- Marcadores predefinidos - Referência completa para todos os marcadores integrados de uma ou várias voltas.
- Juízes personalizados - Crie juízes LLM personalizados usando
make_judgepara avaliar critérios específicos de conversação. - Monitore usuários e sessões - Aprenda como configurar seu agente com IDs de sessão.