Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.
Generare conversazioni simulate dalle descrizioni degli scenari e valutarle a livello di conversazione. Usare questo scenario per testare il comportamento dell'agente in situazioni controllate prima della distribuzione. Il servizio genera conversazioni realistiche in base alle descrizioni degli scenari e quindi le valuta.
Prerequisiti
- Completare i prerequisiti di valutazione cloud e la configurazione del client.
- Una distribuzione del modello per simulare utenti.
- Un obiettivo dell'agente da valutare.
- Dati dello scenario che descrivono le interazioni da simulare.
Gli esempi usano il client SDK configurato in Configurare il client SDK.
Informazioni sulla simulazione della conversazione
Questo approccio è utile per:
- Test di pre-distribuzione: convalidare il comportamento dell'agente in diversi scenari senza traffico utente reale.
- Copertura dei casi limite: scenari di test che si verificano raramente, ma che è importante gestire correttamente.
- Test di regressione: assicurarsi che gli aggiornamenti dell'agente non degradino le prestazioni in scenari noti.
- Test di scalabilità: generare molte conversazioni rapidamente per le funzionalità dell'agente di test di stress.
La simulazione di conversazioni segue questa procedura:
- Viene fornito un set di dati di descrizioni degli scenari: ogni riga descrive una situazione che l'utente simulato tenta di eseguire.
- Il servizio usa un modello di simulatore per svolgere il ruolo dell'utente, interagendo con l'agente in base allo scenario.
- Ogni scenario genera una o più conversazioni complete.
- I valutatori a livello di conversazione valutano le conversazioni generate.
- Il progetto archivia sia le conversazioni che i risultati della valutazione.
Preparare i dati dello scenario
Suggerimento
Anziché creare gli scenari manualmente, generarli utilizzando il tipo di attività Seme di simulazione (multi-turn)។ Il set di dati generato contiene il campo obbligatorio test_case_description e può contenere idanche , categorye desired_num_turns. Usare l'ID del set di dati generato come scenarios_id nell'esecuzione della simulazione e ignorare il passaggio di caricamento. Vedere Generare un set di dati di inizializzazione della simulazione.
Creare un file JSONL in cui ogni riga descrive uno scenario per l'utente simulato. Ogni riga deve contenere test_case_description. I idcampi , categorye desired_num_turns sono facoltativi. Includere informazioni dettagliate sull'obiettivo, il contesto e i vincoli dell'utente. Per un esempio completo, consulta gli esempi di valutazione delle conversazioni nell’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}
Usare questi parametri per configurare la simulazione:
| Parametro | Obbligatorio | Descrizione |
|---|---|---|
num_conversations |
No | Numero di conversazioni da generare per scenario. Il valore predefinito è 5, limite lato server pari a 5. |
max_turns |
No | Numero massimo di turni (scambi) per conversazione. Il valore predefinito è 10, limite lato server pari a 50. |
model |
Yes | Distribuzione del modello da usare per simulare l'utente. Ad esempio: gpt-4.1. Il router del modello non è supportato come modello di simulatore; può essere usato solo come destinazione di valutazione. |
sampling_params |
No | Parametri di campionamento per il modello di simulatore, tra cui temperature, top_pe max_completion_tokens. |
data_mapping |
No | Esegue il mapping dei campi dallo scenario JSONL ai parametri di simulazione. Mappature comuni: test_case_description, id, desired_num_turns. |
Definire gli analizzatori
Seleziona i valutatori progettati per valutare conversazioni. Le conversazioni simulate vengono automaticamente associate ai valutatori.
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}}"},
),
]
Creare la valutazione ed eseguire
Scarica 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"},
)
Passaggi successivi
- Per eseguire il polling per il completamento e interpretare i risultati, vedere Ottenere i risultati della valutazione cloud.
- Per un esempio completo eseguibile, consulta sample_multiturn_conversation_simulation.py su GitHub.
- Per valutare le conversazioni archiviate, vedere Valutare i set di dati delle conversazioni.
- Per valutare le tracce di produzione, vedere Valutare le conversazioni tra modelli e agenti distribuiti.