Gerar dados de avaliação sintética com o Microsoft Foundry SDK (pré-visualização)

Importante

Os itens assinalados com (pré-visualização) neste artigo estão atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para trabalhos em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos Suplementares de Utilização para Microsoft Azure Previews.

Gerar consultas individuais de teste, enviá-las para um modelo ou agente alvo e avaliar as respostas alvo.

Pré-requisitos

Os exemplos utilizam o cliente SDK configurado em Configurar o cliente SDK.

Gerar consultas sintéticas

Use o azure_ai_synthetic_data_gen_preview tipo de fonte de dados para gerar consultas de teste sintéticas, envie-as para um modelo implementado ou agente Foundry e avalie as respostas. Use este cenário quando não tiver um conjunto de dados de teste. O serviço gera consultas com base num prompt que fornece (e/ou nas instruções do agente), executa-as contra o seu alvo e avalia as respostas.

Importante

Antes de começar, complete a configuração do cliente.

Como funciona a avaliação de dados sintéticos

  1. O serviço gera consultas sintéticas baseadas no seu prompt e em ficheiros de dados iniciais opcionais.
  2. Cada consulta é enviada ao alvo especificado (modelo ou agente) para gerar uma resposta.
  3. Os avaliadores avaliam cada resposta usando a consulta e resposta geradas.
  4. As consultas geradas são armazenadas como um conjunto de dados no seu projeto para reutilização.

Parameters

Parâmetro Obrigatório Description
samples_count Sim Número máximo de consultas de teste sintéticas a gerar.
model_deployment_name Sim Implementação de modelos para gerar consultas sintéticas. Apenas modelos com capacidade Responses API são suportados. Para disponibilidade, consulte Disponibilidade de regiões da API de Respostas. O router modelo não é suportado aqui; só pode ser usado como alvo de avaliação.
prompt Não Instruções que descrevem o tipo de consultas a gerar. Opcional quando o agente alvo tem instruções configuradas.
output_dataset_name Não Nome para o conjunto de dados de saída onde as consultas geradas são armazenadas. Se não fornecer um nome, o serviço gera um automaticamente.
sources Não Ficheiros de dados iniciais (por ID de ficheiro) para melhorar a relevância das consultas geradas. Atualmente, apenas um ficheiro é suportado.

Configurar avaliadores e mapeamentos de dados

O gerador de dados sintéticos produz consultas no campo {{item.query}}. O alvo gera respostas disponíveis em {{sample.output_text}}. Mapeie estes campos para os seus avaliadores:

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

Criar avaliação e executar

Alvo do modelo

Gerar consultas sintéticas e avaliar um 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,
)

Pode, opcionalmente, adicionar um prompt do sistema para moldar o comportamento do modelo-alvo. Quando usar input_messages com geração de dados sintéticos, inclua apenas system mensagens de função – o serviço fornece automaticamente as consultas geradas como mensagens de utilizador.

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

Agente alvo

Gerar consultas sintéticas e avaliar um agente de 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 verificar periodicamente a conclusão e interpretar os resultados, consulte Obter os resultados da avaliação na nuvem. A resposta inclui uma output_dataset_id propriedade que contém o ID do conjunto de dados gerado, que pode usar para recuperar ou reutilizar os dados sintéticos.

Para exemplos completos executáveis, veja sample_synthetic_data_agent_evaluation.py e sample_synthetic_data_model_evaluation.py sobre GitHub.