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.
Importante
Os itens assinalados com (pré-visualização) neste artigo estão atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para trabalhos em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos Suplementares de Utilização para Microsoft Azure Previews.
Gerar conversas simuladas a partir de descrições de cenários e avaliá-las ao nível da conversa. Use este cenário para testar o comportamento do seu agente em situações controladas antes da implantação. O serviço gera conversas realistas com base nas descrições dos seus cenários e depois avalia-as.
Pré-requisitos
- Complete os pré-requisitos de avaliação cloud e a configuração do cliente.
- Uma implementação de modelos para simular utilizadores.
- Um alvo de agente para avaliar.
- Dados de cenários que descrevem as interações a simular.
Os exemplos utilizam o cliente SDK configurado em Configurar o cliente SDK.
Compreender a simulação de conversa
Esta abordagem é útil para:
- Testes pré-implementação: Validar o comportamento dos agentes em vários cenários sem tráfego real de utilizadores.
- Cobertura de casos extremos: Cenários de teste que raramente ocorrem naturalmente, mas são importantes de gerir bem.
- Testes de regressão: Garantir que as atualizações dos agentes não degradam o desempenho em cenários conhecidos.
- Testes à escala: Gere rapidamente muitas conversas para pôr à prova as capacidades do agente.
A simulação de conversa segue estes passos:
- Fornece um conjunto de dados de descrições de cenários — cada linha descreve uma situação que o utilizador simulado tenta realizar.
- O serviço utiliza um modelo simulador para desempenhar o papel do utilizador, interagindo com o 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.
- O seu projeto armazena tanto as conversas como os resultados da avaliação.
Preparar os dados dos cenários
Sugestão
Em vez de criar cenários manualmente, gere-os através do tipo de tarefa Semente de simulação (múltiplos turnos). O conjunto de dados gerado contém o campo requerido test_case_description e pode também conter id, category, e desired_num_turns. Usa o ID do conjunto de dados gerado como scenarios_id na simulação e salta o passo de upload. Consulte Gerar um conjunto de dados inicial de simulação.
Crie um ficheiro JSONL onde cada linha descreva um cenário para o utilizador simulado. Cada linha deve conter test_case_description. Os idcampos , category, e desired_num_turns são opcionais. Inclua detalhes sobre o objetivo do utilizador, contexto e restrições. Para um exemplo completo, consulte os exemplos de avaliação de conversas 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 |
No | Número de conversas a gerar por cada cenário. O valor predefinido é 5, com um limite no servidor de 5. |
max_turns |
No | Número máximo de turnos (trocas) por conversa. O valor predefinido é 10, com um limite do lado do servidor de 50. |
model |
Sim | Implementação de modelos para usar na simulação do utilizador. Por exemplo, gpt-4.1. O router modelo não é suportado como modelo do simulador; só pode ser usado como alvo de avaliação. |
sampling_params |
No | Parâmetros de amostragem para o modelo do simulador, incluindo temperature, top_p, e max_completion_tokens. |
data_mapping |
No | 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 avaliadores concebidos para avaliação ao nível da conversação. As conversas simuladas são automaticamente associadas aos 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}}"},
),
]
Crie a avaliação e execute
Descarregue 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"},
)
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_conversation_simulation.py sobre GitHub.
- Para avaliar conversas armazenadas, consulte Avaliar conjuntos de dados de conversa.
- Para avaliar os rastreios de produção, consulte Avaliar o modelo implementado e as conversas de agentes.