Générer des données d’évaluation synthétiques avec Microsoft SDK Foundry (préversion)

Important

Les éléments indiqués comme (aperçu) dans cet article sont 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 ne pas être prises en charge ou avoir des fonctionnalités contraintes. Pour plus d’informations, consultez Conditions d'utilisation supplémentaires pour les versions préliminaires de Microsoft Azure.

Générez des requêtes de test individuelles, envoyez-les à une cible de modèle ou d’agent et évaluez les réponses cibles.

Prerequisites

Les exemples utilisent le client sdk configuré dans Configurer le client sdk.

Générer des requêtes synthétiques

Utilisez le azure_ai_synthetic_data_gen_preview type de source de données pour générer des requêtes de test synthétiques, les envoyer à un modèle déployé ou un agent Foundry et évaluer les réponses. 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.

Important

Avant de commencer, effectuez la configuration du client.

Fonctionnement de l’évaluation des données synthétiques

  1. Le service génère des requêtes synthétiques basées sur votre prompt et sur des fichiers de données initiales facultatifs.
  2. Chaque requête est envoyée à la cible spécifiée (modèle ou agent) pour générer une réponse.
  3. Les évaluateurs notent chaque réponse à l’aide de la requête et de la réponse générées.
  4. 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 Description
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. Le routeur de modèles n’est pas pris en charge ici ; il ne peut être utilisé que comme cible d’évaluation.
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. Si vous ne fournissez pas de nom, le service en génère un automatiquement.
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. L'objectif génère des réponses disponibles dans {{sample.output_text}}. Mappez ces champs à vos évaluateurs :

from azure.ai.projects.models import TestingCriterionAzureAIEvaluator

data_source_config = {"type": "azure_ai_source", "scenario": "synthetic_data_gen_preview"}

testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        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 = openai_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 = openai_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 avec la génération de données synthétiques, incluez uniquement les messages ayant le rôle system : 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 = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="synthetic-agent-evaluation",
    data_source=data_source,
)

Pour vérifier si l’opération est terminée et interpréter les résultats, consultez Obtenir les résultats de l’évaluation dans le cloud. 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.

Pour obtenir des exemples exécutables complets, consultez sample_synthetic_data_agent_evaluation.py et sample_synthetic_data_model_evaluation.py sur GitHub.