Generare dati di valutazione sintetica con Microsoft Foundry SDK (anteprima)

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.

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 massimo di query di test sintetiche da generare.
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

Il generatore di dati sintetici produce query nel {{item.query}} campo . L'obiettivo produce risposte che sono disponibili in {{sample.output_text}}. Mappare questi campi ai tuoi valutatori:

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

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

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

Per eseguire il polling per il completamento e interpretare i risultati, vedere Ottenere i risultati della valutazione cloud. La risposta include una output_dataset_id proprietà che contiene l'ID del set di dati generato, che è possibile usare per recuperare o riutilizzare i dati sintetici.

Per esempi eseguibili completi, vedere sample_synthetic_data_agent_evaluation.py e sample_synthetic_data_model_evaluation.py su GitHub.