Generación de datos de evaluación sintética con Microsoft SDK de Foundry (versión preliminar)

Importante

Los elementos marcados (versión preliminar) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Términos de uso complementarios para las versiones preliminares de Microsoft Azure.

Genere consultas de prueba individuales, envíelas a un modelo o agente objetivo y evalúe las respuestas del objetivo.

Prerequisites

En los ejemplos se usa el cliente del SDK configurado en Configuración del cliente del SDK.

Generación de consultas sintéticas

Use el azure_ai_synthetic_data_gen_preview tipo de origen de datos para generar consultas de prueba sintéticas, enviarlas a un modelo implementado o agente foundry y evaluar las respuestas. Use este escenario cuando no tenga un conjunto de datos de prueba. El servicio genera consultas a partir de una indicación proporcionada por usted (y/o a partir de las instrucciones del agente), las ejecuta en su objetivo y evalúa las respuestas.

Importante

Antes de comenzar, complete la configuración del cliente.

Funcionamiento de la evaluación de datos sintéticos

  1. El servicio genera consultas sintéticas basadas en tu prompt y en archivos de datos semilla opcionales.
  2. Cada consulta se envía al destino especificado (modelo o agente) para generar una respuesta.
  3. Los evaluadores puntúan cada respuesta mediante la consulta y la respuesta generadas.
  4. Las consultas generadas se almacenan como un conjunto de datos en el proyecto para su reutilización.

Parameters

Parámetro Obligatorio Description
samples_count Número máximo de consultas de prueba sintéticas que se van a generar.
model_deployment_name Despliegue de modelos para usar en la generación de consultas sintéticas. Solo se admiten modelos con la funcionalidad de la API de respuestas. Para obtener disponibilidad, consulte Disponibilidad de la región de la API de respuestas. El enrutador de modelos no se admite aquí; solo se puede usar como destino de evaluación.
prompt No Instrucciones que describen el tipo de consultas que se van a generar. Opcional cuando el agente de destino tiene instrucciones configuradas.
output_dataset_name No Nombre del conjunto de datos de salida donde se almacenan las consultas generadas. Si no proporciona un nombre, el servicio genera uno automáticamente.
sources No Archivos de datos de inicialización (por identificador de archivo) para mejorar la relevancia de las consultas generadas. Actualmente solo se admite un archivo.

Configurar evaluadores y mapeos de datos

El generador de datos sintéticos genera consultas en el {{item.query}} campo . El objetivo genera respuestas que están disponibles en {{sample.output_text}}. Correlacione estos campos con sus evaluadores:

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}}",
        },
    ),
]

Crear evaluación y ejecutar

Objetivo del modelo

Genere consultas sintéticas y evalúe un modelo:

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,
)

Puede agregar opcionalmente una instrucción del sistema para configurar el comportamiento del modelo de destino. Cuando se usa input_messages con la generación de datos sintéticos, incluya solo system mensajes de rol: el servicio proporciona las consultas generadas como mensajes de usuario automáticamente.

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."
                }
            }
        ]
    },
}

Objetivo del agente

Genere consultas sintéticas y evalúe un agente 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,
)

Para sondear la finalización e interpretar los resultados, consulte Obtención de resultados de evaluación en la nube. La respuesta incluye una output_dataset_id propiedad que contiene el identificador del conjunto de datos generado, que puede usar para recuperar o reutilizar los datos sintéticos.

Para ver ejemplos completos ejecutables, consulte sample_synthetic_data_agent_evaluation.py y sample_synthetic_data_model_evaluation.py en GitHub.