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.
Utvärdera fullständiga konversationer från datauppsättningar på tur- eller konversationsnivå.
Förutsättningar
- Slutför kraven för molnutvärderingen och klientkonfigurationen.
- Konversationsdata med en
messagesmatris. - Utvärderare som stöder den valda utvärderingsnivån, till exempel enhetlighet och grund.
I exemplen används SDK-klienten som konfigurerats i Konfigurera SDK-klienten.
Utvärdera konversationsdatauppsättningar
Utvärdera fullständiga konversationer för att utvärdera agentkvaliteten i hela användarinteraktioner – inte bara enskilda svar. Använd utvärdering på samtalsnivå för att identifiera kvalitetsproblem som ofullständig uppgiftslösning, användarfrustration och regressioner i verktygsanrop som utvärdering på turnivå missar.
Tänk dig till exempel en supportagent där användaren blir frustrerad över flera svängar:
Tur 1 – Användare: "Jag måste återställa mitt lösenord." Agent: "Jag hittade ditt konto. Jag skickar en återställningslänk."
Omgång 2 — Användare: "Jag fick inte mejlet." Agent: "Jag har skickat länken igen. Kontrollera skräppost."
Tur 3 — Användare: "Fortfarande inget. Kan du bara återställa den direkt?" Agent: "Jag har skickat en annan återställningslänk."
En utvärderare på turnivå bedömer endast det sista svaret – som är artigt och agerar – så det får ett högt betyg. En utvärderare på konversationsnivå som bedömer kundnöjdhet genom hela konversationen flaggar att agenten upprepade samma misslyckade åtgärd tre gånger utan att försöka med något alternativt tillvägagångssätt, vilket lämnade användarens problem olöst.
Utvärdering på konversationsnivå skiljer sig från utvärdering på turnivå på flera sätt:
| Aspect | på turordningsnivå | Konversationsnivå |
|---|---|---|
| Scope | Enskilda frågesvarspar | Slutför konversationer med flera utbyten |
| Metrics | Kvalitet och säkerhet per svar | Utfall på konversationsnivå och användarnöjdhet |
| Dataformat | JSONL med query och response fält |
JSONL med messages matris som innehåller hela konversationen |
| Användningsfall | Testa enskilda modellsvar | Testning av agentupplevelser från början till slut |
Välj det konversationsarbetsflöde som matchar din datakälla:
| Workflow | När det bör användas | Typ av datakälla |
|---|---|---|
| Från datauppsättning eller infogad direkt | Du har lokala konversationsspårningar eller testdata |
jsonl med file_id eller file_content |
| Distribuerade konversationer | Du vill utvärdera specifika konversationer eller exempel på produktionstrafik från Application Insights |
azure_ai_trace_data_source_preview med trace_source |
| Simulerade konversationer | Du vill generera syntetiska testkonversationer |
azure_ai_target_completions med conversation_gen_preview |
Välj en utvärderingsnivå
Parametern evaluation_level för körningen avgör om utvärderarna ska bedöma enskilda turer eller hela konversationer:
| Value | Behavior |
|---|---|
"turn" |
Utvärderare bedömer varje tur oberoende av varandra. |
"conversation" |
Utvärderare bedömer hela konversationen som helhet. |
| (utelämnas) | Standardinställningen är "turn". |
Important
Utvärderarkompatibilitet: Varje utvärderare stöder specifika utvärderingsnivåer. Kontrollera utvärderarens fält i supported_evaluation_levels.
-
Turn-only-utvärderare (till exempel
fluency,relevance) kan inte användas medevaluation_level="conversation". - För närvarande stöder alla utvärderare på konversationsnivå både
"turn"och"conversation"nivåer.
Vanliga fel
| Error | Orsak | Lösning |
|---|---|---|
| Inkompatibel utvärderingsnivå | Använda evaluation_level="conversation" med en turn-only-utvärderare |
Ta bort turn-only-utvärderaren eller ändra till evaluation_level="turn" |
Förbereda konversationsdata
Skapa en JSONL-fil där varje rad innehåller en fullständig konversation i fältet messages . Varje meddelande ska innehålla en role (användare, assistent eller system) och content. Ett fullständigt exempel finns i utvärderingsexemplen conversation i SDK.
{"messages": [{"role": "user", "content": "What's my account balance?"}, {"role": "assistant", "content": "Your current balance is $1,234.56."}, {"role": "user", "content": "Thanks!"}, {"role": "assistant", "content": "You're welcome! Is there anything else?"}]}
Du kan också inkludera verktygsdefinitioner och verktygsanrop om din agent använder verktyg:
{"messages": [{"role": "user", "content": "What is the capital/major city of France?"}, {"role": "assistant", "content": "Paris"}]}
{"messages": [{"role": "user", "content": "How do I reverse a string in Python?"}, {"role": "assistant", "content": "You can reverse a string in Python by using slicing: string[::-1]"}]}
{"messages": [{"role": "user", "content": "What are the main causes of climate change?"}, {"role": "assistant", "content": "The main causes of climate change are the increase in greenhouse gases in the atmosphere, primarily due to human activities such as burning fossil fuels and deforestation."}]}
{"messages": [{"role": "user", "content": "What's my account balance?"}, {"role": "assistant", "content": null, "tool_calls": [{"id": "call_abc123", "type": "function", "function": {"name": "get_account_balance", "arguments": "{\"account_id\": \"ACCT-7890\"}"}}]}, {"role": "tool", "tool_call_id": "call_abc123", "content": "{ \"balance\": 1234.56, \"currency\": \"USD\" }"}, {"role": "assistant", "content": "Your current balance is 1,234.56."}, {"role": "user", "content": "Thanks!"}, {"role": "assistant", "content": "You're welcome! Is there anything else?"}], "tool_definitions": [{"name": "get_account_balance", "description": "Retrieves the current balance for a customer account", "parameters": {"type": "object", "properties": {"account_id": {"type": "string"}}, "required": ["account_id"]}}]}
{"messages": [{"role": "user", "content": "Explain the theory of relativity in simple terms."}, {"role": "assistant", "content": "Einstein's theory of relativity shows that space and time are interconnected and relative to the observer's frame of reference."}]}
{"messages": [{"role": "user", "content": "What's the weather in Seattle?"}, {"role": "assistant", "content": null, "tool_calls": [{"id": "call_002", "type": "function", "function": {"name": "get_weather", "arguments": "{\"location\": \"Seattle, WA\"}"}}]}, {"role": "tool", "tool_call_id": "call_002", "content": "{ \"temperature\": 55, \"condition\": \"Cloudy\" }"}, {"role": "assistant", "content": "It's currently 55F and cloudy in Seattle."}], "tool_definitions": [{"name": "get_weather", "description": "Get the current weather for a location", "parameters": {"type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"]}}]}
{"messages": [{"role": "user", "content": "What is the tallest mountain in the world?"}, {"role": "assistant", "content": "Mount Everest is the tallest mountain in the world."}]}
{"messages": [{"role": "user", "content": "Is 4 x 2 = 16?"}, {"role": "assistant", "content": "No, 4 x 2 = 8."}]}
{"messages": [{"role": "user", "content": "What is the best Italian desert?"}, {"role": "assistant", "content": "Tiramisu is a popular Italian dessert."}]}
{"messages": [{"role": "user", "content": "What is the chemical formula for water?"}, {"role": "assistant", "content": "The chemical formula for water is H2O."}]}
Definiera dataschemat och utvärderarna
Ange schemat för konversationsdata, "meddelanden" och välj utvärderare som är utformade för utvärdering på konversationsnivå. Utvärderare på konversationsnivå utvärderar hela interaktionen snarare än enskilda svängar.
pip install "azure-ai-projects>=2.2.0"
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
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
project_client.get_openai_client() as openai_client,
):
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"messages": {"type": "array"},
"tool_definitions": {"type": "array"},
},
"required": ["messages"],
},
include_sample_schema=False,
)
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}}"},
),
]
Skapa utvärdering och kör
Förberedelse: ladda ned sample_data_multiturn_conversations.jsonl
from openai.types.evals.create_eval_jsonl_run_data_source_param import (
CreateEvalJSONLRunDataSourceParam,
SourceFileID,
)
# Upload conversation data
data_id = project_client.datasets.upload_file(
name="multiturn-conversation-data",
version="1",
file_path="./sample_data_multiturn_conversations.jsonl",
).id
# Create the evaluation
eval_object = openai_client.evals.create(
name="Multi-turn Conversation Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Create a run with evaluation_level set to "conversation"
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="multiturn-conversation-run",
data_source=CreateEvalJSONLRunDataSourceParam(
type="jsonl",
source=SourceFileID(
type="file_id",
id=data_id,
),
),
extra_body={"evaluation_level": "conversation"},
)
Om du vill kontrollera om processen är slutförd och tolka resultaten, se Hämta resultat för molnutvärdering.
För ett fullständigt körbart exempel, se sample_multiturn_conversation_evaluation.py på GitHub.
Nästa steg
- Om du vill kontrollera om processen är slutförd och tolka resultaten, se Hämta resultat för molnutvärdering.
- Information om hur du utvärderar produktionsspårningar finns i Utvärdera distribuerad modell och agentkonversationer.
- Information om hur du genererar syntetiska konversationer finns i Simulera agentkonversationer.