Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d'utilisation supplémentaires pour les aperçus Microsoft Azure.
Dans cet article, vous allez apprendre à exécuter des évaluations dans le cloud (préversion) pour les tests de prédéploiement sur un jeu de données de test.
Utilisez des évaluations par lots pour la plupart des scénarios, en particulier lors de tests à grande échelle, en intégrant des évaluations dans des pipelines d’intégration continue et de livraison continue (CI/CD) ou en effectuant des tests de prédéploiement. L’exécution d’évaluations dans le cloud élimine la nécessité de gérer l’infrastructure de calcul locale et prend en charge les workflows de test automatisés à grande échelle. Vous pouvez également planifier des évaluations à exécuter périodiquement, ou configurer l’évaluation continue pour évaluer automatiquement les réponses de l’agent échantillonné en production.
Les résultats de l’évaluation par lots sont stockés dans votre projet Foundry. Vous pouvez passer en revue les résultats dans le portail, les récupérer via le Kit de développement logiciel (SDK) ou les router vers Application Insights en cas de connexion. L’évaluation Batch prend en charge tous les évaluateurs intégrés organisés par Microsoft et vos propres évaluateurs personnalisés. Les évaluateurs sont gérés dans le catalogue d’évaluateurs avec le même contrôle d’accès en fonction du rôle.
Conseil / Astuce
Pour obtenir des exemples exécutables complets, consultez les exemples d’évaluation Python sdk sur GitHub.
Lorsque vous utilisez le Kit de développement logiciel (SDK) Foundry, il journalise les résultats d’évaluation dans votre projet Foundry pour améliorer l’observabilité. Cette fonctionnalité prend en charge tous les évaluateurs intégrés organisés par Microsoft et vos propres évaluateurs personnalisés. Vos évaluateurs peuvent se trouver dans la bibliothèque de l’évaluateur et avoir le même contrôle d’accès en fonction du rôle.
Fonctionnement de l’évaluation par lots
Pour exécuter une évaluation par lots, vous créez une définition d’évaluation avec votre schéma de données et vos critères de test (évaluateurs), puis créez une exécution d’évaluation. L'exécution lance chaque évaluateur sur vos données et retourne des résultats notés dont vous pouvez interroger l'état d'avancement jusqu'à la fin du processus.
L’évaluation batch prend en charge les scénarios suivants :
| Scénario | Quand utiliser | Type de source de données | Cible |
|---|---|---|---|
| Évaluation du jeu de données | Évaluez les réponses pré-calculées dans un fichier JSONL. | jsonl |
— |
| Évaluation cible du modèle | Fournissez des requêtes et générez des réponses à partir d’un modèle au moment de l’exécution pour l’évaluation. | azure_ai_target_completions |
azure_ai_model |
| Évaluation de la cible de l’agent | Fournissez des requêtes et générez des réponses à partir d’un agent Foundry au moment de l’exécution pour l’évaluation. | azure_ai_target_completions |
azure_ai_agent |
| Évaluation de la réponse de l’agent | Récupérez et évaluez les réponses de l’agent Foundry par ID de réponse. | azure_ai_responses |
— |
| Évaluation des données synthétiques (préversion) | Générez des requêtes de test synthétiques, envoyez-les à un modèle ou à un agent et évaluez les réponses. | azure_ai_synthetic_data_gen_preview |
azure_ai_model ou azure_ai_agent |
| Évaluation de l’équipe rouge | Exécutez des tests contradictoires automatisés sur un modèle ou un agent. | azure_ai_red_team |
azure_ai_model ou azure_ai_agent |
La plupart des scénarios nécessitent des données d’entrée. Vous pouvez fournir des données de deux façons :
| Type de source | Descriptif |
|---|---|
file_id |
Référencez un jeu de données chargé par ID. |
file_content |
Fournissez des données en ligne à l'intérieur de la requête. |
Chaque évaluation nécessite un data_source_config qui indique au service les champs à attendre dans vos données :
-
custom— Vous définissez unitem_schemachamp avec vos noms et types de champs. Définissezinclude_sample_schemaàtruelorsque vous utilisez une cible pour que les évaluateurs puissent référencer des réponses générées. -
azure_ai_source— Le schéma est déduit du service. Définissez"scenario"à"responses"pour l’évaluation de la réponse de l’agent, à"synthetic_data_gen_preview"pour l’évaluation des données synthétiques (préversion) ou à pour le red teaming.
Chaque scénario nécessite des évaluateurs qui définissent vos critères de test. Pour obtenir des conseils sur la sélection d’évaluateurs, consultez les évaluateurs intégrés.
Prerequisites
- Un projet Foundry.
- Déploiement OpenAI Azure avec un modèle GPT qui prend en charge l’achèvement des conversations (par exemple,
gpt-5-mini). - rôle utilisateur Azure AI sur le projet Foundry.
- Si vous le souhaitez, vous pouvez utiliser votre propre compte de stockage pour exécuter des évaluations.
Note
Certaines fonctionnalités d’évaluation ont des restrictions régionales. Pour plus d’informations, consultez les régions prises en charge .
Get started
Installez le Kit de développement logiciel (SDK) et configurez votre client :
pip install "azure-ai-projects>=2.0.0"
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from openai.types.eval_create_params import DataSourceConfigCustom
from openai.types.evals.create_eval_jsonl_run_data_source_param import (
CreateEvalJSONLRunDataSourceParam,
SourceFileContent,
SourceFileContentContent,
SourceFileID,
)
# Azure AI Project endpoint
# Example: https://<account_name>.services.ai.azure.com/api/projects/<project_name>
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
# Model deployment name (for AI-assisted evaluators)
# Example: gpt-5-mini
model_deployment_name = os.environ.get("AZURE_AI_MODEL_DEPLOYMENT_NAME", "")
# Dataset details (optional, for reusing existing datasets)
dataset_name = os.environ.get("DATASET_NAME", "")
dataset_version = os.environ.get("DATASET_VERSION", "1")
# Create the project client
project_client = AIProjectClient(
endpoint=endpoint,
credential=DefaultAzureCredential(),
)
# Get the OpenAI client for evaluation API
client = project_client.get_openai_client()
Préparer les données d’entrée
La plupart des scénarios d’évaluation nécessitent des données d’entrée. Vous pouvez fournir des données de deux façons :
Charger un jeu de données (recommandé)
Chargez un fichier JSONL pour créer un jeu de données avec version dans votre projet Foundry. Les jeux de données prennent en charge le contrôle de version et la réutilisation entre plusieurs exécutions d’évaluation. Utilisez cette approche pour les tests de production et les flux de travail CI/CD.
Préparez un fichier JSONL avec un objet JSON par ligne contenant les champs dont vos évaluateurs ont besoin :
{"query": "What is machine learning?", "response": "Machine learning is a subset of AI.", "ground_truth": "Machine learning is a type of AI that learns from data."}
{"query": "Explain neural networks.", "response": "Neural networks are computing systems inspired by biological neural networks.", "ground_truth": "Neural networks are a set of algorithms modeled after the human brain."}
# Upload a local JSONL file. Skip this step if you already have a dataset registered.
data_id = project_client.datasets.upload_file(
name=dataset_name,
version=dataset_version,
file_path="./evaluate_test_data.jsonl",
).id
Fournissez les données en ligne
Pour une expérimentation rapide avec de petits jeux de test, fournissez des données directement dans la demande d’évaluation à l’aide de file_content.
source = SourceFileContent(
type="file_content",
content=[
SourceFileContentContent(
item={
"query": "How can I safely de-escalate a tense situation?",
"ground_truth": "Encourage calm communication, seek help if needed, and avoid harm.",
}
),
SourceFileContentContent(
item={
"query": "What is the largest city in France?",
"ground_truth": "Paris",
}
),
],
)
Utilisez source en tant que champ "source" dans votre configuration de source de données lors de la création d'un run. Les sections de scénario suivantes utilisent file_id par défaut.
Évaluation du jeu de données
Évaluez les réponses pré-calculées dans un fichier JSONL à l’aide du jsonl type de source de données. Ce scénario est utile lorsque vous avez déjà des sorties de modèle et que vous souhaitez évaluer leur qualité.
Conseil / Astuce
Avant de commencer, effectuez la prise en main et préparez les données d’entrée.
Définir le schéma de données et les évaluateurs
Spécifiez le schéma qui correspond à vos champs JSONL, puis sélectionnez les évaluateurs (critères de test) à exécuter. Utilisez le paramètre data_mapping pour connecter les champs de vos données d'entrée aux paramètres évaluateur à l'aide de la syntaxe {{item.field}}. Incluez toujours data_mapping les champs d’entrée requis pour chaque évaluateur. Vos noms de champs doivent correspondre à ceux de votre fichier JSONL — par exemple, si vos données ont "question" au lieu de "query", utilisez "{{item.question}}" dans le mappage. Pour connaître les paramètres requis par évaluateur, consultez les évaluateurs intégrés.
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"query": {"type": "string"},
"response": {"type": "string"},
"ground_truth": {"type": "string"},
},
"required": ["query", "response", "ground_truth"],
},
)
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "coherence",
"evaluator_name": "builtin.coherence",
"initialization_parameters": {
"deployment_name": model_deployment_name
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{item.response}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "violence",
"evaluator_name": "builtin.violence",
"initialization_parameters": {
"deployment_name": model_deployment_name
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{item.response}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "f1",
"evaluator_name": "builtin.f1_score",
"data_mapping": {
"response": "{{item.response}}",
"ground_truth": "{{item.ground_truth}}",
},
},
]
Créer une évaluation et exécuter
Créez l’évaluation, puis démarrez une exécution sur votre jeu de données chargé. L’exécution exécute chaque évaluateur sur chaque ligne du jeu de données.
# Create the evaluation
eval_object = client.evals.create(
name="dataset-evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
# Create a run using the uploaded dataset
eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="dataset-run",
data_source=CreateEvalJSONLRunDataSourceParam(
type="jsonl",
source=SourceFileID(
type="file_id",
id=data_id,
),
),
)
Pour obtenir un exemple exécutable complet, consultez sample_evaluations_builtin_with_dataset_id.py sur GitHub. Pour vérifier l'état de complétion et interpréter les résultats, consultez Obtenir les résultats.
Évaluation cible du modèle
Envoyez des requêtes à un modèle déployé au moment de l’exécution et évaluez les réponses à l’aide du azure_ai_target_completions type de source de données avec une azure_ai_model cible. Vos données d’entrée contiennent des requêtes ; le modèle génère des réponses qui sont ensuite évaluées.
Conseil / Astuce
Avant de commencer, effectuez la prise en main et préparez les données d’entrée.
Définir le modèle de message et la cible
Le input_messages modèle contrôle la façon dont les requêtes sont envoyées au modèle. Permet {{item.query}} de référencer des champs à partir de vos données d’entrée. Spécifiez le modèle à évaluer et les paramètres d'échantillonnage facultatifs.
input_messages = {
"type": "template",
"template": [
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.query}}"
}
}
]
}
target = {
"type": "azure_ai_model",
"model": "gpt-5-mini",
"sampling_params": {
"top_p": 1.0,
"max_completion_tokens": 2048,
},
}
Configurer des évaluateurs et des mappages de données
Lorsque le modèle génère des réponses au moment de l’exécution, utilisez-le {{sample.output_text}}data_mapping pour référencer la sortie du modèle. Permet {{item.field}} de référencer des champs à partir de vos données d’entrée.
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"query": {"type": "string"},
},
"required": ["query"],
},
include_sample_schema=True,
)
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "coherence",
"evaluator_name": "builtin.coherence",
"initialization_parameters": {
"deployment_name": model_deployment_name,
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "violence",
"evaluator_name": "builtin.violence",
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
]
Créer une évaluation et exécuter
eval_object = client.evals.create(
name="Model Target Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": data_id,
},
"input_messages": input_messages,
"target": target,
}
eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="model-target-evaluation",
data_source=data_source,
)
Pour obtenir un exemple d’exécution complet, consultez sample_model_evaluation.py sur GitHub. Pour vérifier l'état de complétion et interpréter les résultats, consultez Obtenir les résultats.
Conseil / Astuce
Pour ajouter une autre exécution d’évaluation, réexécutez la même évaluation à l’aide du même groupe d’évaluation. Chaque exécution crée une nouvelle exécution sous le même groupe, ce qui vous permet de comparer >les résultats entre les exécutions après avoir modifié des éléments tels que le modèle, l’invite ou le jeu de données, sans créer d’évaluation ou utiliser une AUTRE API.
Consultez l’exemple qui réutilise le même groupe d’évaluation pour créer plusieurs exécutions à des fins de comparaison.
Évaluation de la cible de l’agent
Envoyez des requêtes à un agent Foundry au moment de l’exécution et évaluez les réponses à l’aide du azure_ai_target_completions type de source de données avec une azure_ai_agent cible.
Conseil / Astuce
Avant de commencer, effectuez la prise en main et préparez les données d’entrée.
Définir le modèle de message et la cible
Le input_messages modèle contrôle la façon dont les requêtes sont envoyées à l’agent. Permet {{item.query}} de référencer des champs à partir de vos données d’entrée. Spécifiez l’agent à évaluer par nom :
input_messages = {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "You are a helpful assistant. Answer clearly and safely."
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.query}}"
}
}
]
}
target = {
"type": "azure_ai_agent",
"name": "my-agent",
"version": "1" # Optional. Uses latest version if omitted.
}
Configurer des évaluateurs et des mappages de données
Lorsque l’agent génère des réponses au moment de l’exécution, utilisez les variables {{sample.*}} dans data_mapping afin de référencer la sortie de l’agent :
| Variable | Descriptif | Utilisée pour |
|---|---|---|
{{sample.output_text}} |
Réponse de texte brut de l’agent. | Évaluateurs qui attendent une réponse de chaîne (par exemple, coherence, violence). |
{{sample.output_items}} |
Sortie JSON structurée de l’agent, y compris les appels d’outils. | Évaluateurs qui ont besoin d’un contexte d’interaction complet (par exemple, task_adherence). |
{{item.field}} |
Champ de vos données d’entrée. | Champs d’entrée tels que query ou ground_truth. |
Conseil / Astuce
Le query champ peut contenir un JSON structuré, y compris les messages système et l’historique des conversations. Certains évaluateurs d’agent tels que task_adherence utilisent ce contexte pour une évaluation plus précise. Pour plus d’informations sur la mise en forme des requêtes, consultez les évaluateurs d’agent.
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"query": {"type": "string"},
},
"required": ["query"],
},
include_sample_schema=True,
)
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "coherence",
"evaluator_name": "builtin.coherence",
"initialization_parameters": {
"deployment_name": model_deployment_name,
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "violence",
"evaluator_name": "builtin.violence",
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "task_adherence",
"evaluator_name": "builtin.task_adherence",
"initialization_parameters": {
"deployment_name": model_deployment_name,
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_items}}",
},
},
]
Créer une évaluation et exécuter
eval_object = client.evals.create(
name="Agent Target Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": data_id,
},
"input_messages": input_messages,
"target": target,
}
agent_eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="agent-target-evaluation",
data_source=data_source,
)
Pour obtenir un exemple exécutable complet, consultez sample_agent_evaluation.py sur GitHub. Pour vérifier l'état de complétion et interpréter les résultats, consultez Obtenir les résultats.
Conseil / Astuce
Pour ajouter une autre exécution d’évaluation, réexécutez la même évaluation à l’aide du même groupe d’évaluation. Chaque exécution crée une nouvelle exécution sous le même groupe, ce qui vous permet de comparer >les résultats entre les exécutions après avoir modifié des éléments tels que le modèle, l’invite ou le jeu de données, sans créer d’évaluation ou utiliser une AUTRE API.
Consultez l’exemple qui réutilise le même groupe d’évaluation pour créer plusieurs exécutions à des fins de comparaison.
Évaluation de la réponse de l’agent
Récupérez et évaluez les réponses de l’agent Foundry par ID de réponse à l’aide du azure_ai_responses type de source de données. Utilisez ce scénario pour évaluer des interactions d’agent spécifiques après qu’ils se produisent.
Conseil / Astuce
Avant de commencer, complétez la configuration initiale.
Un ID de réponse est un identificateur unique retourné chaque fois qu’un agent Foundry génère une réponse. Vous pouvez collecter des ID de réponse à partir d’interactions de l’agent à l’aide de l’API Réponses ou des journaux de trace de votre application. Fournissez les ID inline en tant que contenu de fichier ou chargez-les en tant que jeu de données (consultez Préparer les données d’entrée).
Collecter les ID de réponse
Chaque appel à l’API Réponses retourne un objet de réponse avec un champ unique id . Collectez ces ID à partir des interactions de votre application ou générez-les directement :
# Generate response IDs by calling a model through the Responses API
response = client.responses.create(
model=model_deployment_name,
input="What is machine learning?",
)
print(response.id) # Example: resp_abc123
Vous pouvez aussi récupérer les ID de réponse issus des interactions avec l'agent via les journaux d’activité de suivi ou le pipeline de surveillance de votre application. Chaque ID de réponse identifie de manière unique une réponse stockée que le service d’évaluation peut récupérer.
Créer une évaluation et exécuter
data_source_config = {"type": "azure_ai_source", "scenario": "responses"}
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "coherence",
"evaluator_name": "builtin.coherence",
"initialization_parameters": {
"deployment_name": model_deployment_name,
},
},
{
"type": "azure_ai_evaluator",
"name": "violence",
"evaluator_name": "builtin.violence",
},
]
eval_object = client.evals.create(
name="Agent Response Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_responses",
"item_generation_params": {
"type": "response_retrieval",
"data_mapping": {"response_id": "{{item.resp_id}}"},
"source": {
"type": "file_content",
"content": [
{"item": {"resp_id": "resp_abc123"}},
{"item": {"resp_id": "resp_def456"}},
]
},
},
}
eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="agent-response-evaluation",
data_source=data_source,
)
Pour obtenir un exemple exécutable complet, consultez sample_agent_response_evaluation.py sur GitHub. Pour vérifier l'état de complétion et interpréter les résultats, consultez Obtenir les résultats.
Conseil / Astuce
Pour ajouter une autre exécution d’évaluation, réexécutez la même évaluation à l’aide du même groupe d’évaluation. Chaque exécution crée une nouvelle exécution sous le même groupe, ce qui vous permet de comparer >les résultats entre les exécutions après avoir modifié des éléments tels que le modèle, l’invite ou le jeu de données, sans créer d’évaluation ou utiliser une AUTRE API.
Consultez l’exemple qui réutilise le même groupe d’évaluation pour créer plusieurs exécutions à des fins de comparaison.
Évaluation des données synthétiques (aperçu)
Générez des requêtes de test synthétiques, envoyez-les à un modèle déployé ou à un agent Foundry et évaluez les réponses à l’aide du azure_ai_synthetic_data_gen_preview type de source de données. Utilisez ce scénario lorsque vous n’avez pas de jeu de données de test : le service génère des requêtes en fonction d’une invite que vous fournissez (et/ou à partir des instructions de l’agent), les exécute sur votre cible et évalue les réponses.
Conseil / Astuce
Avant de commencer, complétez la configuration initiale.
Fonctionnement de l’évaluation des données synthétiques
- Le service génère des requêtes synthétiques basées sur vos fichiers de données de départ et sur des données facultatives
prompt. - Chaque requête est envoyée à la cible spécifiée (modèle ou agent) pour générer une réponse.
- Les évaluateurs notent chaque réponse à l’aide de la requête et de la réponse générées.
- Les requêtes générées sont stockées en tant que jeu de données dans votre projet pour réutilisation.
Paramètres
| Paramètre | Obligatoire | Descriptif |
|---|---|---|
samples_count |
Oui | Nombre maximal de requêtes de test synthétique à générer. |
model_deployment_name |
Oui | Déploiement de modèle à utiliser pour générer des requêtes synthétiques. Seuls les modèles avec la fonctionnalité d’API Réponses sont pris en charge. Pour plus d’informations sur la disponibilité, consultez la disponibilité de la région de l’API Réponses. |
prompt |
Non | Instructions décrivant le type de requêtes à générer. Facultatif lorsque la cible de l’agent a des instructions configurées. |
output_dataset_name |
Non | Nom du jeu de données de sortie où les requêtes générées sont stockées. S’il n’est pas fourni, le service génère automatiquement un nom. |
sources |
Non | Fichiers de données de départ (par ID de fichier) pour améliorer la pertinence des requêtes générées. Actuellement, un seul fichier est pris en charge. |
Configurer des évaluateurs et des mappages de données
Le générateur de données synthétiques génère des requêtes dans le {{item.query}} champ. La cible génère des réponses disponibles dans {{sample.output_text}}. Mappez ces champs à vos évaluateurs :
data_source_config = {"type": "azure_ai_source", "scenario": "synthetic_data_gen_preview"}
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "coherence",
"evaluator_name": "builtin.coherence",
"initialization_parameters": {
"deployment_name": model_deployment_name,
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "violence",
"evaluator_name": "builtin.violence",
"data_mapping": {
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
},
]
Créer une évaluation et exécuter
Cible du modèle
Générez des requêtes synthétiques et évaluez un modèle :
eval_object = client.evals.create(
name="Synthetic Data Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_synthetic_data_gen_preview",
"item_generation_params": {
"type": "synthetic_data_gen_preview",
"samples_count": 5,
"prompt": "Generate customer service questions about returning defective products",
"model_deployment_name": model_deployment_name,
"output_dataset_name": "my-synthetic-dataset",
},
"target": {
"type": "azure_ai_model",
"model": model_deployment_name,
},
}
eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="synthetic-data-evaluation",
data_source=data_source,
)
Vous pouvez optionnellement ajouter une commande système pour orienter le comportement du modèle cible. Lorsque vous utilisez input_messages la génération de données synthétiques, incluez uniquement system les messages de rôle : le service fournit automatiquement les requêtes générées en tant que messages utilisateur.
data_source = {
"type": "azure_ai_synthetic_data_gen_preview",
"item_generation_params": {
"type": "synthetic_data_gen_preview",
"samples_count": 5,
"prompt": "Generate customer service questions about returning defective products",
"model_deployment_name": model_deployment_name,
},
"target": {
"type": "azure_ai_model",
"model": model_deployment_name,
},
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "system",
"content": {
"type": "input_text",
"text": "You are a helpful customer service agent. Be empathetic and solution-oriented."
}
}
]
},
}
Cible de l’agent
Générez des requêtes synthétiques et évaluez un agent Foundry :
data_source = {
"type": "azure_ai_synthetic_data_gen_preview",
"item_generation_params": {
"type": "synthetic_data_gen_preview",
"samples_count": 5,
"prompt": "Generate questions about returning defective products",
"model_deployment_name": model_deployment_name,
},
"target": {
"type": "azure_ai_agent",
"name": agent_name,
"version": agent_version,
},
}
eval_run = client.evals.runs.create(
eval_id=eval_object.id,
name="synthetic-agent-evaluation",
data_source=data_source,
)
Pour vérifier l'état de complétion et interpréter les résultats, consultez Obtenir les résultats. La réponse inclut une output_dataset_id propriété qui contient l’ID du jeu de données généré, que vous pouvez utiliser pour récupérer ou réutiliser les données synthétiques.
Obtenir les résultats
Une fois l’exécution d’évaluation terminée, récupérez les résultats évalués et passez-les en revue dans le portail ou par programmation.
Interroger pour obtenir les résultats
Les processus d’évaluation sont asynchrones. Interrogez l’état d’avancement de l’exécution jusqu’à la fin du processus, puis récupérez les résultats :
import time
from pprint import pprint
while True:
run = client.evals.runs.retrieve(
run_id=eval_run.id, eval_id=eval_object.id
)
if run.status in ("completed", "failed"):
break
time.sleep(5)
print("Waiting for eval run to complete...")
if run.status == "failed":
print(f"Evaluation run failed: {run.error}")
else:
# Retrieve results
output_items = list(
client.evals.runs.output_items.list(
run_id=run.id, eval_id=eval_object.id
)
)
pprint(output_items)
print(f"Report URL: {run.report_url}")
Interpréter les résultats
Pour un exemple de données unique, tous les évaluateurs génèrent le schéma suivant :
- Étiquette : étiquette binaire « pass » ou « fail », similaire à la sortie d’un test unitaire. Utilisez ce résultat pour faciliter les comparaisons entre les évaluateurs.
- Score : score de l’échelle naturelle de chaque évaluateur. Certains évaluateurs utilisent une grille affinée, un scoring sur une échelle de 5 points (évaluateurs de qualité) ou une échelle de 7 points (évaluateurs de sécurité du contenu). D’autres, comme les évaluateurs de similarité textuelle, utilisent des scores F1, qui sont flottants entre 0 et 1. Tout « score » non binaire est binarisé pour « passer » ou « échouer » dans le champ « étiquette » en fonction du « seuil ».
- Seuil : tous les scores non binaires sont binarisés pour « passer » ou « échouer » en fonction d’un seuil par défaut, que l’utilisateur peut remplacer dans l’expérience du Kit de développement logiciel (SDK).
- Motif : Pour améliorer l’intelligibilité, tous les évaluateurs LLM-juge génèrent également un champ de raisonnement pour expliquer pourquoi un certain score est donné.
- Détails : (facultatif) Pour certains évaluateurs, tels que tool_call_accuracy, il peut y avoir un champ ou des indicateurs « détails » qui contiennent des informations supplémentaires pour aider les utilisateurs à déboguer leurs applications.
Exemple de sortie (élément unique)
{
"type": "azure_ai_evaluator",
"name": "Coherence",
"metric": "coherence",
"score": 4.0,
"label": "pass",
"reason": "The response is well-structured and logically organized, presenting information in a clear and coherent manner.",
"threshold": 3,
"passed": true
}
Exemple de sortie (agrégat)
Pour obtenir des résultats agrégés sur plusieurs exemples de données (un jeu de données), le taux moyen des exemples avec un « réussi » forme le taux de réussite pour ce jeu de données.
{
"eval_id": "eval_abc123",
"run_id": "run_xyz789",
"status": "completed",
"result_counts": {
"passed": 85,
"failed": 15,
"total": 100
},
"per_testing_criteria_results": [
{
"name": "coherence",
"passed": 92,
"failed": 8,
"pass_rate": 0.92
},
{
"name": "relevance",
"passed": 78,
"failed": 22,
"pass_rate": 0.78
}
]
}
Résolution des problèmes
Tâche en cours depuis longtemps.
Votre travail d’évaluation peut rester dans l’état En cours d’exécution pendant une période prolongée. Cela se produit généralement lorsque le déploiement de modèle OpenAI Azure n'a pas suffisamment de capacité, ce qui entraîne la nouvelle tentative de demandes du service.
Résolution :
- Annulez le travail d’évaluation actuel à l’aide de
client.evals.runs.cancel(run_id, eval_id=eval_id). - Augmentez la capacité du modèle dans le portail Azure.
- Réexécutez l’évaluation.
Erreurs d’authentification
Si vous recevez une erreur 401 Unauthorized ou 403 Forbidden, vérifiez que :
- Votre
DefaultAzureCredentialest configuré correctement (exécutezaz loginsi vous utilisez Azure CLI). - Votre compte a le rôle utilisateur Azure AI sur le projet Foundry.
- L’URL du point de terminaison de projet est correcte et inclut les noms de compte et de projet.
Erreurs de format de données
Si l’évaluation échoue avec une erreur de schéma ou de mappage de données :
- Vérifiez que votre fichier JSONL a un objet JSON valide par ligne.
- Vérifiez que les noms de champs dans
data_mappingcorrespondent exactement aux noms de champs de votre fichier JSONL (respectant la casse). - Vérifiez que
item_schemales propriétés correspondent aux champs de votre jeu de données.
Erreurs de limite de débit
Les créations d’exécutions d’évaluation font l'objet d’une limitation du débit au niveau du locataire, de l'abonnement et du projet. Si vous recevez une 429 Too Many Requests réponse :
- Vérifiez l’en-tête
retry-afterdans la réponse pour connaître le temps d’attente recommandé. - Passez en revue le corps de la réponse pour connaître les détails de la limite de débit.
- Utilisez un recalcul exponentiel lors de la nouvelle tentative de demandes échouées.
Si un travail d’évaluation échoue avec une 429 erreur pendant l’exécution :
- Réduisez la taille de votre jeu de données d’évaluation ou fractionnez-le en lots plus petits.
- Augmentez le quota de jetons par minute (TPM) de votre déploiement de modèle dans le portail Azure.
Erreurs de l’outil évaluateur d’agent
Si un évaluateur d’agent retourne une erreur pour les outils non pris en charge :
- Vérifiez les outils pris en charge pour les évaluateurs d’agent.
- Pour contourner ce problème, encapsulez les outils non pris en charge en tant qu’outils de fonction définis par l’utilisateur afin que l’évaluateur puisse les évaluer.