Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.
Generieren Sie simulierte Unterhaltungen aus Szenariobeschreibungen, und bewerten Sie sie auf Unterhaltungsebene. Verwenden Sie dieses Szenario, um das Verhalten Ihres Agents in kontrollierten Situationen vor der Bereitstellung zu testen. Der Dienst generiert realistische Unterhaltungen basierend auf Ihren Szenariobeschreibungen und wertet sie dann aus.
Voraussetzungen
- Führen Sie die Voraussetzungen für die Cloudbewertung und die Clienteinrichtung durch.
- Eine Modellbereitstellung zur Simulation von Benutzern.
- Ein Agentziel, das ausgewertet werden soll.
- Szenariodaten, die die zu simulierenden Interaktionen beschreiben.
In den Beispielen wird der in SDK-Client einrichten konfigurierte SDK-Client verwendet.
Gesprächssimulation verstehen
Dieser Ansatz ist nützlich für:
- Tests vor der Bereitstellung: Überprüfen des Agentverhaltens in verschiedenen Szenarien ohne echten Benutzerdatenverkehr.
- Abdeckung von Grenzfällen: Testszenarien, die in der Praxis nur selten auftreten, jedoch gut gehandhabt werden müssen.
- Regressionstests: Stellen Sie sicher, dass Agentupdates die Leistung in bekannten Szenarien nicht beeinträchtigen.
- Tests im großen Maßstab: Generieren Sie schnell viele Konversationen, um die Fähigkeiten des Agenten einem Belastungstest zu unterziehen.
Die Unterhaltungssimulation führt die folgenden Schritte aus:
- Sie stellen ein Dataset mit Szenariobeschreibungen bereit. Jede Zeile beschreibt eine Situation, die der simulierte Benutzer zu erreichen versucht.
- Der Dienst verwendet ein Simulatormodell, um die Rolle des Benutzers zu spielen und basierend auf dem Szenario mit Ihrem Agent zu interagieren.
- Jedes Szenario generiert eine oder mehrere vollständige Unterhaltungen.
- Bewerter auf der Ebene ganzer Konversationen bewerten die generierten Konversationen.
- Ihr Projekt speichert sowohl die Unterhaltungen als auch die Auswertungsergebnisse.
Vorbereiten von Szenariodaten
Tip
Statt Szenarien manuell zu erstellen, generieren Sie sie mithilfe des Simulations-Seed -Vorgangstyps (Multi-Turn). Der generierte Datensatz enthält das erforderliche test_case_description-Feld und kann auch id, category und desired_num_turns enthalten. Verwenden Sie die ID des generierten Datasets wie scenarios_id im Simulationslauf, und überspringen Sie den Uploadschritt. Siehe Ein Seed-Dataset für eine Simulation generieren.
Erstellen Sie eine JSONL-Datei, in der jede Zeile ein Szenario für den simulierten Benutzer beschreibt. Jede Zeile muss enthalten test_case_description. Die Felder id, desired_num_turns und category sind optional. Fügen Sie Details zu Ziel, Kontext und Einschränkungen des Benutzers hinzu. Ein vollständiges Beispiel finden Sie in den Beispielen zur konversationsauswertung im 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}
Verwenden Sie diese Parameter, um die Simulation zu konfigurieren:
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
num_conversations |
No | Anzahl der Unterhaltungen, die pro Szenario generiert werden sollen. Standardmäßig 5, serverseitige Obergrenze von 5. |
max_turns |
No | Maximale Anzahl von Wendungen (Austausch) pro Unterhaltung. Standardmäßig 10, serverseitige Obergrenze 50. |
model |
Ja | Modellbereitstellung zur Simulation des Benutzers. Beispiel: gpt-4.1 Der Modellrouter wird nicht als Simulatormodell unterstützt. sie kann nur als Auswertungsziel verwendet werden. |
sampling_params |
No | Samplingparameter für das Simulatormodell, einschließlich temperature, top_pund max_completion_tokens. |
data_mapping |
No | Ordnet Felder aus Ihrem Szenario JSONL zu Simulationsparametern zu. Allgemeine Zuordnungen: test_case_description, id, desired_num_turns. |
Bewerter definieren
Wählen Sie Evaluatoren aus, die für Bewertungen auf Konversationsebene entwickelt wurden. Die simulierten Unterhaltungen werden automatisch den Bewertern zugeordnet.
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}}"},
),
]
Erstellen der Auswertung und Ausführung
Laden Sie sample_data_simulation_scenarios.jsonl herunter.
# 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ächste Schritte
- Um den Abschlussstatus abzufragen und die Ergebnisse zu interpretieren, siehe Cloudauswertungsergebnisse abrufen.
- Ein vollständiges, ausführbares Beispiel finden Sie auf GitHub unter sample_multiturn_conversation_simulation.py.
- Informationen zum Auswerten gespeicherter Unterhaltungen finden Sie unter "Auswerten von Unterhaltungsdatensätzen".
- Informationen zum Auswerten von Produktionsablaufverfolgungen finden Sie unter Auswerten von bereitgestellten Modell- und Agentunterhaltungen.