Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Generera simulerade konversationer från scenariobeskrivningar och utvärdera dem på konversationsnivå. Använd det här scenariot för att testa agentens beteende i kontrollerade situationer före distributionen. Tjänsten genererar realistiska konversationer baserat på dina scenariobeskrivningar och utvärderar dem sedan.
Förutsättningar
- Slutför kraven för molnutvärderingen och klientkonfigurationen.
- En driftsättning av en modell för att simulera användare.
- Ett mål för en agent som ska utvärderas.
- Scenariodata som beskriver interaktionerna som ska simuleras.
I exemplen används SDK-klienten som konfigurerats i Konfigurera SDK-klienten.
Förstå konversationssimulering
Den här metoden är användbar för:
- Testning före distribution: Verifiera agentbeteendet i olika scenarier utan verklig användartrafik.
- Täckning av gränsfall: Testscenarier som sällan uppstår naturligt men är viktiga att hantera väl.
- Regressionstestning: Se till att agentuppdateringar inte försämrar prestanda i kända scenarier.
- Skaltestning: Generera många konversationer snabbt för att belastningstesta agentens kapacitet.
Konversationssimulering följer dessa steg:
- Du anger en datauppsättning med scenariobeskrivningar – varje rad beskriver en situation som den simulerade användaren försöker utföra.
- Tjänsten använder en simulatormodell för att spela rollen som användare och interagerar med din agent baserat på scenariot.
- Varje scenario genererar en eller flera fullständiga konversationer.
- Utvärderare på konversationsnivå utvärderar de genererade konversationerna.
- Projektet lagrar både konversationer och utvärderingsresultat.
Förbereda scenariodata
Tips/Råd
I stället för att skapa scenarier för hand, generera dem med hjälp av uppgiftstypen Simulation seed (multi-turn). Den genererade datamängden innehåller det obligatoriska test_case_description fältet och kan även innehålla id, categoryoch desired_num_turns. Använd den genererade datamängdens ID som scenarios_id i simuleringskörningen och hoppa över uppladdningssteget. Se Generera en startdatauppsättning för simulering.
Skapa en JSONL-fil där varje rad beskriver ett scenario för den simulerade användaren. Varje rad måste innehålla test_case_description. Fälten id, categoryoch desired_num_turns är valfria. Inkludera information om användarens mål, kontext och begränsningar. Ett fullständigt exempel finns i utvärderingsexemplen conversation i 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}
Använd dessa parametrar för att konfigurera simuleringen:
| Parameter | Obligatoriskt | Beskrivning |
|---|---|---|
num_conversations |
No | Antal konversationer som ska genereras per scenario. Standardvärdet är 5, med en serversidesgräns på 5. |
max_turns |
No | Maximalt antal svängar (utbyten) per konversation. Standardvärdet är 10, och maxgränsen på serversidan är 50. |
model |
Yes | Modelldriftsättning för användarsimulering. Till exempel gpt-4.1.
Modellroutern stöds inte som simulatormodell. Det kan bara användas som utvärderingsmål. |
sampling_params |
No | Samplingsparametrar för simulatormodellen, inklusive temperature, top_poch max_completion_tokens. |
data_mapping |
No | Mappar fält från scenariots JSONL till simuleringsparametrar. Vanliga mappningar: test_case_description, id, desired_num_turns. |
Definiera utvärderare
Välj utvärderare som är utformade för utvärdering på konversationsnivå. De simulerade konversationerna mappas automatiskt till utvärderarna.
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}}"},
),
]
Skapa utvärderingen och kör
Ladda ned 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"},
)
Nästa steg
- Om du vill kontrollera om processen är slutförd och tolka resultaten, se Hämta resultat för molnutvärdering.
- För ett komplett körbart exempel, se sample_multiturn_conversation_simulation.py på GitHub.
- Information om hur du utvärderar lagrade konversationer finns i Utvärdera konversationsdatauppsättningar.
- Information om hur du utvärderar produktionsspårningar finns i Utvärdera distribuerad modell och agentkonversationer.