Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Avaliar conversas completas de produção captadas no Application Insights para investigar interações específicas ou amostrar o tráfego de agentes implementados.
Pré-requisitos
- Complete os pré-requisitos de avaliação cloud e a configuração do cliente.
- Rastreei conversas de produção no Application Insights.
- Avaliadores ao nível da conversa que apoiam o nível de avaliação selecionado.
Os exemplos utilizam o cliente SDK configurado em Configurar o cliente SDK.
Avaliar conversas pelo ID com base em rastos
Avalie conversas específicas do Application Insights fornecendo os seus IDs de conversa. Utilize esta opção para identificar a causa raiz dos problemas ou validar correções em interações específicas. Por exemplo, pode investigar uma conversa sinalizada por um alerta ou verificar uma correção para um problema conhecido.
Onde encontrar IDs de conversa
Encontre IDs de conversa em:
-
IU dos registos de rastreio do Application Insights — Vá para rastreios interessantes e localize o campo
conversation_idnos detalhes do rastreio. -
Saída de registo da sua aplicação — Se definir
conversation_idexplicitamente ao criar respostas de agentes, recupere-a dos seus registos. -
Contexto de rastreio OpenTelemetry — O
conversation_idtambém pode ser derivado do cabeçalho traceparent se o seu agente usar a propagação padrão de contexto de rastreio.
Note
As definições das ferramentas são automaticamente obtidas a partir dos rastreios ou através de consulta ao registo do agente. Não precisas de os fornecer no pedido.
Parâmetros para a procura do ID da conversa
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
conversation_ids |
Sim | Matriz de IDs de conversa para avaliar. |
lookback_hours |
No | Horas para procurar de volta a partir de end_time. O valor predefinido é de sete dias (168 horas). |
end_time |
No | Fim da janela de pesquisa (formato ISO 8601). Predefinido para a hora atual. |
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import TestingCriterionAzureAIEvaluator
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
# Provide conversation IDs or trace IDs from App Insights
conversation_ids = ["conversation_1234", "conversation_5678"]
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
# Eval group for trace-based evaluations
data_source_config = {
"type": "azure_ai_source",
"scenario": "traces",
}
testing_criteria = [
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="conversation_coherence",
evaluator_name="builtin.coherence",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="groundedness",
evaluator_name="builtin.groundedness",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
]
# Create evaluation with traces scenario
eval_object = openai_client.evals.create(
name="Multi-turn Trace Evaluation (by ID)",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Run evaluation on specific conversation IDs
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="multiturn-trace-by-id-run",
data_source={
"type": "azure_ai_trace_data_source_preview",
"trace_source": {
"type": "conversation_id_source",
"conversation_ids": conversation_ids,
},
},
extra_body={"evaluation_level": "conversation"},
)
Note
- A ingestão de dados do Application Insights pode causar um atraso entre o momento em que os traços são gerados e o momento em que estão disponíveis para avaliação. Se a consulta não encontrar rastos, espere alguns minutos e tente novamente.
- O período máximo retroativo é 7 dias (168 horas). Para aceder a vestígios mais antigos, utilize
start_timeeend_timedentro dos limites de retenção do App Insights.
Para um exemplo completo e executável, veja sample_multiturn_trace_evaluation_by_id.py no GitHub.
Avalie conversas amostradas por filtro de agente
Avalie um conjunto amostrado de conversas do Application Insights filtrando pelo nome do agente. Use esta opção para avaliar a qualidade global do agente em todo o tráfego de produção. Por exemplo, realizar avaliações regulares de qualidade ou monitorizar a degradação da qualidade na produção.
O agente que especificar para a filtragem pode fazer parte de uma conversa entre vários agentes. O filtro corresponde a qualquer conversa em que esse agente tenha participado.
Note
As definições das ferramentas são automaticamente obtidas a partir dos rastreios ou através de consulta ao registo do agente. Não precisas de os fornecer no pedido.
Campos de identidade do agente
Especifique o agente a filtrar usando um destes formatos:
| Format | Example | Descrição |
|---|---|---|
agent_name + agent_version |
"agent_name": "my-agent", "agent_version": "1" |
São dois campos separados. Se agent_version for omitido, use a versão mais recente. |
agent_id |
"agent_id": "my-agent:1" |
Cadeia única no formato "name:version". |
Estratégias de filtro
| Strategy | Descrição |
|---|---|
random_sampling |
(Padrão) Amostra aleatória uniforme até max_traces conversas. |
smart_filtering |
Heurística gerida pelo serviço que privilegia rastreios "interessantes" — conversas com potenciais problemas, casos extremos ou anomalias. |
Parameters
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
agent_name |
Sim | O nome do agente pelo qual filtrar os rastreios. |
agent_version |
No | A versão do agente. Se omitido, usa a versão mais recente. |
agent_id |
No | Alternativa a agent_name + agent_version. Uma única cadeia de caracteres no formato "name:version". |
start_time |
Sim | Início da janela temporal (segundos da época Unix, UTC). |
end_time |
Sim | Fim da janela temporal (segundos da época Unix, UTC). Reduza +600 segundos para evitar atraso na ingestão. |
max_traces |
No | Número máximo de conversas a amostrar. Por predefinição, é 1 000. |
filter_strategy |
No |
"random_sampling" (predefinido) ou "smart_filtering" (heurística gerida pelo serviço que dá prioridade a rastreios interessantes). |
Importante
A janela temporal (end_time - start_time) deve ser de pelo menos 15 minutos (900 segundos). Este requisito existe porque as consultas ao nível da conversa aplicam um buffer de inatividade de 5 minutos em cada extremidade para evitar conversas parciais.
import os
import time
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import TestingCriterionAzureAIEvaluator
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
agent_name = os.environ["FOUNDRY_AGENT_NAME"]
agent_version = os.environ.get("FOUNDRY_AGENT_VERSION", "")
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
# Eval group for trace-based evaluations
data_source_config = {
"type": "azure_ai_source",
"scenario": "traces",
}
testing_criteria = [
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="customer_satisfaction",
evaluator_name="builtin.customer_satisfaction",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="task_completion",
evaluator_name="builtin.task_completion",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
]
eval_object = openai_client.evals.create(
name="Multi-turn Trace Evaluation (Agent Filter)",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Compute time window in unix seconds
# Pad end_time by +600s (10 min) to avoid ingestion-delay edge exclusion
now_unix = int(time.time())
end_time = now_unix + 600
start_time = now_unix - (24 * 3600) # 24 hours lookback
# Build trace_source with agent filter
trace_source = {
"type": "agent_filter",
"agent_name": agent_name,
"start_time": start_time,
"end_time": end_time,
"max_traces": 5,
}
if agent_version:
trace_source["agent_version"] = agent_version
# Run evaluation on sampled agent conversations
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="multiturn-agent-filter-run",
data_source={
"type": "azure_ai_trace_data_source_preview",
"trace_source": trace_source,
},
extra_body={"evaluation_level": "conversation"},
)
Note
O período de consulta App Insights está atualmente limitado a um máximo de 7 dias (168 horas). Não pode aceder a vestígios com mais de 7 dias sem fornecer explicitamente start_time e end_time dentro dos limites de retenção do App Insights.
Passos seguintes
- Para verificar periodicamente a conclusão e interpretar os resultados, consulte Obter os resultados da avaliação na nuvem.
- Para um exemplo completo executável, veja sample_multiturn_trace_evaluation_agent_filter.py sobre GitHub.
- Para avaliar conversas armazenadas, consulte Avaliar conjuntos de dados de conversa.
- Para gerar conversas sintéticas, veja Simular conversas com agentes.