Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares para Versões Prévias do Microsoft Azure.
Gere conversas simuladas a partir de descrições de cenário e avalie-as no nível da conversa. Use esse cenário para testar o comportamento do agente em situações controladas antes da implantação. O serviço gera conversas realistas com base em suas descrições de cenário e, em seguida, as avalia.
Pré-requisitos
- Conclua os pré-requisitos de avaliação de nuvem e a configuração do cliente.
- Uma implantação de modelo para simular usuários.
- Um alvo de agente para avaliar.
- Dados de cenário que descrevem as interações a serem simuladas.
Os exemplos usam o cliente SDK configurado em Configurar o cliente SDK.
Entender a simulação de conversa
Essa abordagem é útil para:
- Teste de pré-implantação: validar o comportamento do agente em diversos cenários sem tráfego real do usuário.
- Cobertura de casos extremos: cenários de teste que raramente ocorrem naturalmente, mas que são importantes de serem tratados adequadamente.
- Teste de regressão: verifique se as atualizações do agente não prejudicam o desempenho em cenários conhecidos.
- Teste em escala: gere muitas conversas rapidamente para testar sob estresse as capacidades do agente.
A simulação de conversa segue estas etapas:
- Você fornece um conjunto de dados de descrições de cenário – cada linha descreve uma situação que o usuário simulado tenta realizar.
- O serviço usa um modelo de simulador para desempenhar a função do usuário, interagindo com seu agente com base no cenário.
- Cada cenário gera uma ou mais conversas completas.
- Os avaliadores de nível de conversa avaliam as conversas geradas.
- Seu projeto armazena as conversas e os resultados da avaliação.
Preparar dados de cenário
Dica
Em vez de criar cenários manualmente, gere-os usando o tipo de tarefa Semente de simulação (multiturno). O conjunto de dados gerado contém o campo necessário test_case_description e também pode conter id, categorye desired_num_turns. Use a ID do conjunto de dados gerado como scenarios_id na execução da simulação e ignore a etapa de upload. Consulte Gerar um conjunto de dados de sementes de simulação.
Crie um arquivo JSONL em que cada linha descreve um cenário para o usuário simulado. Cada linha deve conter test_case_description. Os idcampos , categorye desired_num_turns são opcionais. Inclua detalhes sobre a meta, o contexto e as restrições do usuário. Para obter um exemplo completo, consulte os exemplos de avaliação de conversação no SDK.
{"id": "contoso_refund_timeline", "test_case_description": "Customer returned an item to Contoso Electronics 5 days ago and hasn't received their refund yet. They want to know how long Contoso refunds take.", "desired_num_turns": 10}
{"id": "contoso_store_hours_lookup", "test_case_description": "Customer wants to know what time the Contoso Electronics store closes today. Simple single-fact question with possibly one clarifying turn about which location.", "desired_num_turns": 3}
Use estes parâmetros para configurar a simulação:
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
num_conversations |
Não | Número de conversas a serem geradas por cenário. O valor padrão é 5, com limite no servidor de 5. |
max_turns |
Não | Número máximo de turnos (trocas) por conversa. O padrão é 10, com limite no servidor de 50. |
model |
Yes | Implantação de modelo a ser usada para simular o usuário. Por exemplo, gpt-4.1. O roteador de modelos não é compatível como modelo do simulador; ele só pode ser usado como alvo da avaliação. |
sampling_params |
Não | Parâmetros de amostragem para o modelo de simulador, incluindo temperature, top_pe max_completion_tokens. |
data_mapping |
Não | Mapeia campos do seu cenário JSONL para parâmetros de simulação. Mapeamentos comuns: test_case_description, , id. desired_num_turns |
Definir avaliadores
Selecione os avaliadores projetados para avaliação em nível de conversa. As conversas simuladas são mapeadas automaticamente para os avaliadores.
import os
from openai.types.eval_create_params import DataSourceConfigCustom
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import TestingCriterionAzureAIEvaluator, PromptAgentDefinition
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
agent_name = os.environ.get("FOUNDRY_AGENT_NAME", "")
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
# Simulation uses the same "custom" eval group type as dataset evaluation (S1),
# since the generated conversations follow the same messages schema.
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"messages": {"type": "array"},
},
"required": ["messages"],
},
include_sample_schema=False,
)
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}}"},
),
]
Criar a avaliação e executar
Baixe sample_data_simulation_scenarios.jsonl.
# Create (or update) an agent to simulate against
agent = project_client.agents.create_version(
agent_name=agent_name,
definition=PromptAgentDefinition(
model=model_deployment_name,
instructions="You are a helpful customer service agent. Be empathetic and solution-oriented.",
),
)
# Upload scenario data
scenarios_id = project_client.datasets.upload_file(
name="simulation-scenarios",
version="1",
file_path="./sample_data_simulation_scenarios.jsonl",
).id
# Create the evaluation
eval_object = openai_client.evals.create(
name="Multi-turn Conversation Simulation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Create a simulation run
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="conversation-simulation-run",
data_source={
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": scenarios_id,
},
"target": {
"type": "azure_ai_agent",
"name": agent.name,
"version": agent.version,
},
"item_generation_params": {
"type": "conversation_gen_preview",
"model": model_deployment_name,
"num_conversations": 2,
"max_turns": 5,
"sampling_params": {
"temperature": 0.7,
"top_p": 1.0,
"max_completion_tokens": 800,
},
"data_mapping": {
"test_case_description": "test_case_description",
"id": "id",
"desired_num_turns": "desired_num_turns",
},
},
},
extra_body={"evaluation_level": "conversation"},
)
Próximas Etapas
- Para sondar a conclusão e interpretar os resultados, consulte Obter resultados de avaliação de nuvem.
- Para obter um exemplo executável completo, consulte sample_multiturn_conversation_simulation.py em GitHub.
- Para avaliar conversas armazenadas, consulte Avaliar conjuntos de dados de conversa.
- Para avaliar rastros de produção, consulte Avaliar conversas de modelos e agentes implantados.