Generare dati di valutazione sintetica con Microsoft Foundry SDK

Genera singole query di test, inviale a un modello o agente target e valuta le risposte del target.

Prerequisiti

Gli esempi usano il client SDK configurato in Configurare il client SDK.

Generare query sintetiche

Usare il azure_ai_synthetic_data_gen_preview tipo di origine dati per generare query di test sintetiche, inviarle a un modello distribuito o a un agente Foundry e valutare le risposte. Usare questo scenario quando non si ha un set di dati di test. Il servizio genera query in base a un prompt che fornisci (e/o in base alle istruzioni dell'agente), le esegue sul target e ne valuta le risposte.

Importante

Prima di iniziare, completare la configurazione del client.

Funzionamento della valutazione dei dati sintetici

  1. Il servizio genera query sintetiche basate su prompt e si file di dati iniziali facoltativi.
  2. Ogni query viene inviata alla destinazione specificata (modello o agente) per generare una risposta.
  3. I valutatori valutano ciascuna risposta utilizzando la query generata e la risposta.
  4. Le query generate vengono archiviate come set di dati nel progetto per il riutilizzo.

Parametri

Parametro Obbligatorio Description
samples_count Yes Numero di query sintetiche di test da generare. Specificare un valore compreso tra 15 e 1.000 inclusi.
model_deployment_name Yes Implementazione del modello da utilizzare per la generazione di query sintetiche. Sono supportati solo i modelli con funzionalità API Risposte. Per la disponibilità, vedere Disponibilità dell'area dell'API Risposte. Il model router non è supportato qui; può essere usato solo come target di valutazione.
prompt No Istruzioni che descrivono il tipo di query da generare. Facoltativo quando l'obiettivo dell'agente ha le istruzioni configurate.
output_dataset_name No Nome del set di dati di output in cui vengono archiviate le query generate. Se non si specifica un nome, il servizio ne genera uno automaticamente.
sources No Eseguire il seeding dei file di dati (in base all'ID file) per migliorare la pertinenza delle query generate. Attualmente è supportato un solo file.

Configurare valutatori e mappature dei dati

Per le valutazioni target, mappare esplicitamente ogni input richiesto del valutatore. In questo esempio di dati sintetici, le query generate sono disponibili come {{item.query}}e le risposte di destinazione sono disponibili come {{sample.output_text}}.

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

Creare una valutazione ed eseguire

Destinazione del modello

Generare query sintetiche e valutare un modello:

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": 15,
        "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,
)

Facoltativamente, è possibile aggiungere un prompt di sistema per modellare il comportamento del modello di destinazione. Quando usi input_messages con la generazione di dati sintetici, includi solo i messaggi con ruolo system: il servizio fornisce automaticamente le query generate come messaggi dell'utente.

data_source = {
    "type": "azure_ai_synthetic_data_gen_preview",
    "item_generation_params": {
        "type": "synthetic_data_gen_preview",
        "samples_count": 15,
        "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."
                }
            }
        ]
    },
}

Destinazione dell'agente

Creare interrogazioni sintetiche e valutare un agente di Foundry.

data_source = {
    "type": "azure_ai_synthetic_data_gen_preview",
    "item_generation_params": {
        "type": "synthetic_data_gen_preview",
        "samples_count": 15,
        "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,
)

Passaggi successivi