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.
Werten Sie vollständige Unterhaltungen aus der Produktionsumgebung aus, die in Application Insights erfasst wurden, um bestimmte Interaktionen zu untersuchen oder den Datenverkehr des bereitgestellten Agents stichprobenartig zu analysieren.
Voraussetzungen
- Führen Sie die Voraussetzungen für die Cloudbewertung und die Clienteinrichtung durch.
- Produktionskonversationen in Application Insights nachverfolgen.
- Auswerter auf der Konversationsebene, die die ausgewählte Bewertungsebene unterstützen.
In den Beispielen wird der in SDK-Client einrichten konfigurierte SDK-Client verwendet.
Konversationen anhand der ID aus Ablaufverfolgungen auswerten
Bewerten Sie bestimmte Unterhaltungen aus Application Insights, indem Sie ihre Unterhaltungs-IDs bereitstellen. Verwenden Sie diese Option, um Ursachen von Problemen zu ermitteln oder Fehlerbehebungen bei bestimmten Interaktionen zu überprüfen. Sie können z. B. eine Unterhaltung untersuchen, die durch eine Warnung gekennzeichnet ist, oder eine Lösung für ein bekanntes Problem überprüfen.
Wo Sie Konversations-IDs finden
Finden Sie Konversations-IDs in:
-
Benutzeroberfläche der Application Insights-Trace-Protokolle: Wechseln Sie zu relevanten Traces, und suchen Sie das Feld
conversation_idin den Trace-Details. -
Die Protokollierungsausgabe Ihrer Anwendung – Wenn Sie beim Erstellen von Agentantworten explizit festlegen
conversation_id, rufen Sie sie aus Ihren Protokollen ab. -
OpenTelemetry-Trace-Kontext — Das
conversation_idkann auch aus dem traceparent-Header abgeleitet werden, wenn Ihr Agent die standardmäßige Weitergabe des Trace-Kontexts verwendet.
Hinweis
Tooldefinitionen werden automatisch aus den Traces abgerufen oder aus der Agent-Registrierung abgefragt. Sie müssen sie nicht in der Anforderung angeben.
Parameter für die Suche nach Konversations-ID
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
conversation_ids |
Ja | Array von Konversations-IDs zur Auswertung. |
lookback_hours |
No | Stunden, die ab end_time nach hinten durchsucht werden sollen. Der Standardwert ist sieben Tage (168 Stunden). |
end_time |
No | Ende des Suchfensters (ISO 8601-Format). Standardmäßig ist die aktuelle Uhrzeit eingestellt. |
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import TestingCriterionAzureAIEvaluator
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
# Provide conversation IDs or trace IDs from App Insights
conversation_ids = ["conversation_1234", "conversation_5678"]
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
# Eval group for trace-based evaluations
data_source_config = {
"type": "azure_ai_source",
"scenario": "traces",
}
testing_criteria = [
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="conversation_coherence",
evaluator_name="builtin.coherence",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="groundedness",
evaluator_name="builtin.groundedness",
initialization_parameters={"model": model_deployment_name},
data_mapping={"messages": "{{item.messages}}"},
),
]
# Create evaluation with traces scenario
eval_object = openai_client.evals.create(
name="Multi-turn Trace Evaluation (by ID)",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Run evaluation on specific conversation IDs
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="multiturn-trace-by-id-run",
data_source={
"type": "azure_ai_trace_data_source_preview",
"trace_source": {
"type": "conversation_id_source",
"conversation_ids": conversation_ids,
},
},
extra_body={"evaluation_level": "conversation"},
)
Hinweis
- Die Datenerfassung in Application Insights kann zu einer Verzögerung zwischen dem Generieren von Traces und ihrer Verfügbarkeit für die Bewertung führen. Wenn die Abfrage keine Traces findet, warten Sie einige Minuten und versuchen Sie es erneut.
- Der maximale Lookback beträgt 7 Tage (168 Stunden). Um auf ältere Ablaufverfolgungen zuzugreifen, verwenden Sie
start_timeundend_timeinnerhalb Ihrer App Insights-Aufbewahrungsgrenzen.
Ein vollständig lauffähiges Beispiel finden Sie auf GitHub unter sample_multiturn_trace_evaluation_by_id.py.
Stichprobenartig ausgewählte Gespräche nach Agentenfilter auswerten
Bewerten Sie eine stichprobenbasierte Gruppe von Unterhaltungen aus Application Insights, indem Sie nach Agentnamen filtern. Verwenden Sie diese Option, um die Gesamtqualität des Agents über den gesamten Produktionsdatenverkehr hinweg zu bewerten. Führen Sie z. B. regelmäßige Qualitätsbewertungen aus, oder überwachen Sie qualitätsbeeinträchtigungen in der Produktion.
Der Agent, den Sie zum Filtern angeben, kann Teil einer Konversation mit mehreren Agenten sein. Der Filter entspricht jeder Unterhaltung, an der dieser Agent teilgenommen hat.
Hinweis
Tooldefinitionen werden automatisch aus den Traces abgerufen oder aus der Agent-Registrierung abgefragt. Sie müssen sie nicht in der Anforderung angeben.
Agent-Identitätsfelder
Geben Sie den zu filternden Agent mithilfe eines der folgenden Formate an:
| Format | Example | Beschreibung |
|---|---|---|
agent_name + agent_version |
"agent_name": "my-agent", "agent_version": "1" |
Zwei separate Felder. Wenn agent_version weggelassen wird, verwenden Sie die neueste Version. |
agent_id |
"agent_id": "my-agent:1" |
Einzelne Zeichenfolge im "name:version" Format. |
Filterstrategien
| Strategy | Beschreibung |
|---|---|
random_sampling |
(Standard) Gleichverteilte Zufallsstichprobe von bis zu max_traces Konversationen. |
smart_filtering |
Dienstverwaltete Heuristik, die interessante Traces bevorzugt – also Konversationen mit potenziellen Problemen, Randfällen oder Anomalien. |
Parameters
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
agent_name |
Ja | Der Name des Agenten, nach dem Ablaufverfolgungen gefiltert werden sollen. |
agent_version |
No | Die Agent-Version. Wenn sie weggelassen wird, wird die neueste Version verwendet. |
agent_id |
No | Alternative zu agent_name + agent_version. Einzelne Zeichenfolge im Format "name:version". |
start_time |
Ja | Beginn des Zeitfensters (Unix-Epochenzeit in Sekunden, UTC). |
end_time |
Ja | Ende des Zeitfensters (Sekunden seit der Unix-Epoche, UTC). Um +600 Sekunden auffüllen, um Verzögerungen bei der Datenaufnahme zu vermeiden. |
max_traces |
No | Maximale Anzahl an Konversationen zur Auswahl. Der Standardwert ist 1.000. |
filter_strategy |
No |
"random_sampling" (Standard) oder "smart_filtering" (vom Dienst verwaltete Heuristik, die interessante Traces bevorzugt). |
Important
Das Zeitfenster (end_time - start_time) muss mindestens 15 Minuten (900 Sekunden) betragen. Diese Anforderung ist vorhanden, da Abfragen auf Unterhaltungsebene einen 5-minütigen Inaktivitätspuffer auf jedem Rand anwenden, um partielle Unterhaltungen zu vermeiden.
import os
import time
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import TestingCriterionAzureAIEvaluator
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
agent_name = os.environ["FOUNDRY_AGENT_NAME"]
agent_version = os.environ.get("FOUNDRY_AGENT_VERSION", "")
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
# Eval group for trace-based evaluations
data_source_config = {
"type": "azure_ai_source",
"scenario": "traces",
}
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}}"},
),
]
eval_object = openai_client.evals.create(
name="Multi-turn Trace Evaluation (Agent Filter)",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Compute time window in unix seconds
# Pad end_time by +600s (10 min) to avoid ingestion-delay edge exclusion
now_unix = int(time.time())
end_time = now_unix + 600
start_time = now_unix - (24 * 3600) # 24 hours lookback
# Build trace_source with agent filter
trace_source = {
"type": "agent_filter",
"agent_name": agent_name,
"start_time": start_time,
"end_time": end_time,
"max_traces": 5,
}
if agent_version:
trace_source["agent_version"] = agent_version
# Run evaluation on sampled agent conversations
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="multiturn-agent-filter-run",
data_source={
"type": "azure_ai_trace_data_source_preview",
"trace_source": trace_source,
},
extra_body={"evaluation_level": "conversation"},
)
Hinweis
Der Zeitbereich der App Insights-Abfrage ist derzeit auf maximal 7 Tage (168 Stunden) beschränkt. Sie können nicht auf Ablaufverfolgungen zugreifen, die älter als 7 Tage sind, ohne start_time und end_time innerhalb der Aufbewahrungsgrenzen von App Insights explizit anzugeben.
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_trace_evaluation_agent_filter.py.
- Informationen zum Auswerten gespeicherter Unterhaltungen finden Sie unter "Auswerten von Unterhaltungsdatensätzen".
- Informationen zum Generieren synthetischer Unterhaltungen finden Sie unter "Simulieren von Agent-Unterhaltungen".