Bagikan melalui


Jalankan evaluasi di cloud dengan menggunakan Microsoft Foundry SDK

Penting

Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Dalam artikel ini, Anda mempelajari cara menjalankan evaluasi di cloud (pratinjau) untuk pengujian pra-penyebaran pada himpunan data pengujian.

Gunakan evaluasi cloud untuk sebagian besar skenario—terutama saat melakukan pengujian dalam skala besar, mengintegrasikan evaluasi ke dalam jalur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD), atau saat melakukan pengujian pra-penerapan. Menjalankan evaluasi di cloud menghilangkan kebutuhan untuk mengelola infrastruktur komputasi lokal dan mendukung alur kerja pengujian otomatis berskala besar. Anda juga dapat menjadwalkan evaluasi untuk dijalankan secara berulang, atau menyiapkan evaluasi berkelanjutan untuk secara otomatis mengevaluasi respons agen sampel dalam produksi.

Hasil evaluasi cloud disimpan dalam proyek Foundry Anda. Anda dapat meninjau hasil di portal, mengambilnya melalui SDK, atau merutekannya ke Application Insights jika tersambung. Evaluasi cloud mendukung semua evaluator bawaan yang disediakan Microsoft dan evaluator kustom Anda sendiri. Evaluator dikelola dalam katalog evaluator dengan cakupan proyek yang sama, kontrol akses berbasis peran.

Petunjuk / Saran

Untuk contoh lengkap yang dapat dijalankan, lihat sampel evaluasi Python SDK pada GitHub.

Saat Anda menggunakan Foundry SDK, SDK Foundry mencatat hasil evaluasi dalam proyek Foundry Anda untuk pengamatan yang lebih baik. Fitur ini mendukung semua evaluator bawaan yang dikurasi Microsoft. dan evaluator kustom Anda sendiri. Evaluator Anda dapat berada di pustaka evaluator dan memiliki cakupan proyek yang sama, kontrol akses berbasis peran.

Cara kerja evaluasi cloud

Untuk menjalankan evaluasi cloud, Anda membuat definisi evaluasi dengan skema data dan kriteria pengujian (evaluator), lalu membuat eksekusi evaluasi. Menjalankan setiap evaluator terhadap data Anda dan mengembalikan hasil skor yang dapat Anda pantau hingga selesai.

Evaluasi cloud mendukung skenario berikut:

Skenario Kapan harus menggunakan Jenis sumber data Target
Evaluasi himpunan data Mengevaluasi respons yang telah dihitung sebelumnya dalam file JSONL. jsonl
Evaluasi himpunan data CSV Mengevaluasi respons yang telah dihitung sebelumnya dalam file CSV. csv
Evaluasi model target Berikan kueri dan hasilkan respons dari model saat runtime untuk evaluasi. azure_ai_target_completions azure_ai_model
Evaluasi target agen Berikan kueri dan hasilkan respons dari agen Foundry saat runtime untuk evaluasi. azure_ai_target_completions azure_ai_agent
Evaluasi respons agen Mengambil dan mengevaluasi respons agen Foundry berdasarkan ID respons. azure_ai_responses
Evaluasi data sintetis (pratinjau) Hasilkan kueri pengujian sintetis, kirimkan ke model atau agen, dan evaluasi respons. azure_ai_synthetic_data_gen_preview azure_ai_model atau azure_ai_agent
Evaluasi tim merah Jalankan pengujian otomatis terhadap model atau agen. azure_ai_red_team azure_ai_model atau azure_ai_agent

Sebagian besar skenario memerlukan data input. Anda dapat menyediakan data dengan dua cara:

Jenis sumber Deskripsi
file_id Referensikan himpunan data yang diunggah berdasarkan ID.
file_content Berikan data sebaris dalam permintaan.

Setiap evaluasi memerlukan data_source_config yang memberi tahu layanan bidang apa yang diharapkan dalam data Anda:

  • custom — Anda menentukan item_schema dengan nama dan jenis bidang Anda. Atur include_sample_schema ke true saat menggunakan target sehingga evaluator dapat mereferensikan respons yang dihasilkan.
  • azure_ai_source — Skema disimpulkan dari layanan. Atur "scenario" ke "responses" untuk penilaian respons agen, "synthetic_data_gen_preview" untuk evaluasi data sintetis (pratinjau), atau "red_team" untuk red teaming.

Setiap skenario memerlukan evaluator yang menentukan kriteria pengujian Anda. Untuk panduan tentang memilih evaluator, lihat evaluator bawaan.

Prasyarat

Nota

Beberapa fitur evaluasi memiliki batasan regional. Lihat wilayah yang didukung untuk detailnya.

Get started

Instal SDK dan siapkan klien Anda:

pip install "azure-ai-projects>=2.0.0"
import os
from azure.identity import DefaultAzureCredential 
from azure.ai.projects import AIProjectClient 
from openai.types.eval_create_params import DataSourceConfigCustom
from openai.types.evals.create_eval_jsonl_run_data_source_param import (
    CreateEvalJSONLRunDataSourceParam,
    SourceFileContent,
    SourceFileContentContent,
    SourceFileID,
)

# Azure AI Project endpoint
# Example: https://<account_name>.services.ai.azure.com/api/projects/<project_name>
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]

# Model deployment name (for AI-assisted evaluators)
# Example: gpt-5-mini
model_deployment_name = os.environ.get("AZURE_AI_MODEL_DEPLOYMENT_NAME", "")

# Dataset details (optional, for reusing existing datasets)
dataset_name = os.environ.get("DATASET_NAME", "")
dataset_version = os.environ.get("DATASET_VERSION", "1")

# Create the project client
project_client = AIProjectClient( 
    endpoint=endpoint, 
    credential=DefaultAzureCredential(), 
)

# Get the OpenAI client for evaluation API
client = project_client.get_openai_client()

Persiapkan input data

Sebagian besar skenario evaluasi memerlukan data input. Anda dapat menyediakan data dengan dua cara:

Unggah file JSONL atau CSV untuk membuat himpunan data versi di proyek Foundry Anda. Himpunan data mendukung versi dan penggunaan kembali di beberapa putaran evaluasi. Gunakan pendekatan ini untuk pengujian produksi dan alur kerja CI/CD.

Siapkan file JSONL dengan satu objek JSON per baris yang berisi bidang yang dibutuhkan evaluator Anda:

{"query": "What is machine learning?", "response": "Machine learning is a subset of AI.", "ground_truth": "Machine learning is a type of AI that learns from data."}
{"query": "Explain neural networks.", "response": "Neural networks are computing systems inspired by biological neural networks.", "ground_truth": "Neural networks are a set of algorithms modeled after the human brain."}

Atau siapkan file CSV dengan header kolom yang cocok dengan bidang evaluator Anda:

query,response,ground_truth
What is machine learning?,Machine learning is a subset of AI.,Machine learning is a type of AI that learns from data.
Explain neural networks.,Neural networks are computing systems inspired by biological neural networks.,Neural networks are a set of algorithms modeled after the human brain.
# Upload a local JSONL file. Skip this step if you already have a dataset registered.
data_id = project_client.datasets.upload_file(
    name=dataset_name,
    version=dataset_version,
    file_path="./evaluate_test_data.jsonl",
).id

Menyediakan data dalam baris

Untuk eksperimen cepat dengan set pengujian kecil, berikan data langsung dalam permintaan evaluasi menggunakan file_content.

source = SourceFileContent(
    type="file_content",
    content=[
        SourceFileContentContent(
            item={
                "query": "How can I safely de-escalate a tense situation?",
                "ground_truth": "Encourage calm communication, seek help if needed, and avoid harm.",
            }
        ),
        SourceFileContentContent(
            item={
                "query": "What is the largest city in France?",
                "ground_truth": "Paris",
            }
        ),
    ],
)

Teruskan source"source" sebagai bidang dalam konfigurasi sumber data Anda saat membuat eksekusi. Bagian skenario berikut menggunakan file_id secara default.

Evaluasi himpunan data

Mengevaluasi respons yang telah dihitung sebelumnya dalam file JSONL menggunakan jsonl jenis sumber data. Skenario ini berguna ketika Anda sudah memiliki output model dan ingin menilai kualitasnya.

Petunjuk / Saran

Sebelum memulai, selesaikan Memulai dan Menyiapkan data input.

Definisikan skema dan para evaluator data

Tentukan skema yang cocok dengan bidang JSONL Anda, dan pilih evaluator (kriteria pengujian) untuk dijalankan. Gunakan parameter data_mapping untuk menghubungkan field dari data input Anda ke parameter evaluator dengan sintaks {{item.field}}. Selalu sertakan data_mapping dengan bidang input yang diperlukan untuk setiap evaluator. Nama bidang Anda harus cocok dengan yang ada di file JSONL Anda — misalnya, jika data Anda memiliki "question" alih-alih "query", gunakan "{{item.question}}" dalam pemetaan. Untuk parameter yang diperlukan per evaluator, lihat evaluator bawaan.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
            "response": {"type": "string"},
            "ground_truth": {"type": "string"},
        },
        "required": ["query", "response", "ground_truth"],
    },
)

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "f1",
        "evaluator_name": "builtin.f1_score",
        "data_mapping": {
            "response": "{{item.response}}",
            "ground_truth": "{{item.ground_truth}}",
        },
    },
]

Membuat evaluasi dan menjalankan

Buat evaluasi, lalu mulai eksekusi terhadap himpunan data yang Anda unggah. Eksekusi menjalankan setiap evaluator pada setiap baris dalam himpunan data.

# Create the evaluation
eval_object = client.evals.create(
    name="dataset-evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

# Create a run using the uploaded dataset
eval_run = client.evals.runs.create(
    eval_id=eval_object.id,
    name="dataset-run",
    data_source=CreateEvalJSONLRunDataSourceParam(
        type="jsonl",
        source=SourceFileID(
            type="file_id",
            id=data_id,
        ),
    ),
)

Untuk contoh lengkap yang dapat dijalankan, lihat sample_evaluations_builtin_with_dataset_id.py di GitHub. Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil.

Evaluasi himpunan data CSV

Evaluasi respons yang telah dihitung sebelumnya dalam file CSV menggunakan csv jenis sumber data. Skenario ini bekerja dengan cara yang sama seperti evaluasi himpunan data tetapi menerima file CSV alih-alih JSONL. Gunakan CSV saat data Anda sudah dalam format spreadsheet atau tabular.

Petunjuk / Saran

Sebelum memulai, selesaikan Memulai dan Menyiapkan data input.

Menyiapkan file CSV

Buat file CSV dengan header kolom yang cocok dengan bidang yang dibutuhkan evaluator Anda. Setiap baris mewakili satu kasus pengujian:

query,response,context,ground_truth
What is cloud computing?,Cloud computing delivers computing services over the internet.,Cloud computing is a technology for on-demand resource delivery.,Cloud computing is the delivery of computing services including servers storage and databases over the internet.
What is machine learning?,Machine learning is a subset of AI that learns from data.,Machine learning is a branch of artificial intelligence.,Machine learning is a type of AI that enables computers to learn from data without being explicitly programmed.
Explain neural networks.,Neural networks are computing systems inspired by biological neural networks.,Neural networks are used in deep learning.,Neural networks are a set of algorithms modeled after the human brain designed to recognize patterns.

Unggah dan jalankan

Unggah file CSV sebagai himpunan data, lalu buat evaluasi menggunakan csv jenis sumber data. Definisi skema dan konfigurasi evaluator sama dengan untuk evaluasi JSONL - satu-satunya perbedaan adalah "type": "csv" di sumber data.

# Upload the CSV file
data_id = project_client.datasets.upload_file(
    name="eval-csv-data",
    version="1",
    file_path="./evaluation_data.csv",
).id

# Define the schema matching your CSV columns
data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
            "response": {"type": "string"},
            "context": {"type": "string"},
            "ground_truth": {"type": "string"},
        },
        "required": [],
    },
    include_sample_schema=True,
)

# Define evaluators with data mappings to CSV columns
testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment_name},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment_name},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "f1",
        "evaluator_name": "builtin.f1_score",
    },
]

# Create the evaluation
eval_object = client.evals.create(
    name="CSV evaluation with built-in evaluators",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

# Create a run using the CSV data source type
eval_run = client.evals.runs.create(
    eval_id=eval_object.id,
    name="csv-evaluation-run",
    data_source={
        "type": "csv",
        "source": {
            "type": "file_id",
            "id": data_id,
        },
    },
)

Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil.

Evaluasi model target

Kirim kueri ke model yang disebarkan saat runtime dan evaluasi respons menggunakan azure_ai_target_completions jenis sumber data dengan azure_ai_model target. Data input Anda berisi kueri; model menghasilkan respons yang kemudian dievaluasi.

Petunjuk / Saran

Sebelum memulai, selesaikan Memulai dan Menyiapkan data input.

Menentukan templat dan target pesan

input_messages Templat mengontrol cara kueri dikirim ke model. Gunakan {{item.query}} untuk mereferensikan bidang dari data input Anda. Tentukan model untuk mengevaluasi dan parameter pengambilan sampel opsional:

input_messages = {
    "type": "template",
    "template": [
        {
            "type": "message",
            "role": "user",
            "content": {
                "type": "input_text",
                "text": "{{item.query}}"
            }
        }
    ]
}

target = {
    "type": "azure_ai_model",
    "model": "gpt-5-mini",
    "sampling_params": {
        "top_p": 1.0,
        "max_completion_tokens": 2048,
    },
}

Menyiapkan evaluator dan pemetaan data

Saat model menghasilkan respons pada runtime, gunakan {{sample.output_text}}data_mapping untuk mereferensikan output model. Gunakan {{item.field}} untuk mereferensikan bidang dari data input Anda.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
        },
        "required": ["query"],
    },
    include_sample_schema=True,
)

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name,
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
]

Membuat evaluasi dan menjalankan

eval_object = client.evals.create(
    name="Model Target Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_id",
        "id": data_id,
    },
    "input_messages": input_messages,
    "target": target,
}

eval_run = client.evals.runs.create(
    eval_id=eval_object.id,
    name="model-target-evaluation",
    data_source=data_source,
)

Untuk contoh lengkap yang dapat dijalankan, lihat sample_model_evaluation.py di GitHub. Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil.

Petunjuk / Saran

Untuk menambahkan eksekusi evaluasi lain, Anda dapat menggunakan kode yang sama.

Evaluasi target agen

Kirim kueri ke agen Foundry saat runtime dan evaluasi respons menggunakan azure_ai_target_completions jenis sumber data dengan azure_ai_agent target.

Petunjuk / Saran

Sebelum memulai, selesaikan Memulai dan Menyiapkan data input.

Menentukan templat dan target pesan

input_messages Templat mengontrol cara kueri dikirim ke agen. Gunakan {{item.query}} untuk mereferensikan bidang dari data input Anda. Tentukan agen yang akan dievaluasi berdasarkan nama:

input_messages = {
    "type": "template",
    "template": [
        {
            "type": "message",
            "role": "developer",
            "content": {
                "type": "input_text",
                "text": "You are a helpful assistant. Answer clearly and safely."
            }
        },
        {
            "type": "message",
            "role": "user",
            "content": {
                "type": "input_text",
                "text": "{{item.query}}"
            }
        }
    ]
}

target = {
    "type": "azure_ai_agent",
    "name": "my-agent",
    "version": "1"  # Optional. Uses latest version if omitted.
}

Menyiapkan evaluator dan pemetaan data

Saat agen menghasilkan respons pada runtime, gunakan variabel {{sample.*}} di data_mapping untuk merujuk pada output agen.

Variabel Deskripsi Gunakan untuk
{{sample.output_text}} Respons teks polos agen. Evaluator yang mengharapkan respons string (misalnya, coherence, violence).
{{sample.output_items}} Output JSON terstruktur, termasuk panggilan alat agen. Evaluator yang memerlukan konteks interaksi penuh (misalnya, task_adherence).
{{item.field}} Satu bidang dari data masukan Anda. Bidang input seperti query atau ground_truth.

Petunjuk / Saran

Bidang query dapat berisi JSON terstruktur, termasuk pesan sistem dan riwayat percakapan. Beberapa evaluator agen seperti task_adherence menggunakan konteks ini untuk penilaian yang lebih akurat. Untuk detail tentang pemformatan kueri, lihat evaluator agen.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
        },
        "required": ["query"],
    },
    include_sample_schema=True,
)

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name,
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "task_adherence",
        "evaluator_name": "builtin.task_adherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name,
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_items}}",
        },
    },
]

Membuat evaluasi dan menjalankan

eval_object = client.evals.create(
    name="Agent Target Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_id",
        "id": data_id,
    },
    "input_messages": input_messages,
    "target": target,
}

agent_eval_run = client.evals.runs.create(
    eval_id=eval_object.id,
    name="agent-target-evaluation",
    data_source=data_source,
)

Untuk contoh lengkap yang dapat dijalankan, lihat sample_agent_evaluation.py di GitHub. Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil.

Evaluasi respons agen

Ambil dan evaluasi respons agen Foundry berdasarkan ID respon menggunakan jenis sumber data azure_ai_responses. Gunakan skenario ini untuk mengevaluasi interaksi agen tertentu setelah terjadi.

Petunjuk / Saran

Sebelum memulai, selesaikan Panduan Memulai.

ID respons adalah pengidentifikasi unik yang dikembalikan setiap kali agen Foundry menghasilkan respons. Anda dapat mengumpulkan ID respons dari interaksi agen dengan menggunakan API Respons atau dari log jejak aplikasi Anda. Berikan ID sebaris sebagai konten file, atau unggah sebagai himpunan data (lihat Menyiapkan data input).

Mengumpulkan ID respons

Setiap panggilan ke API Respons mengembalikan objek respons dengan bidang unik id . Kumpulkan ID ini dari interaksi aplikasi Anda, atau hasilkan secara langsung:

# Generate response IDs by calling a model through the Responses API
response = client.responses.create(
    model=model_deployment_name,
    input="What is machine learning?",
)
print(response.id)  # Example: resp_abc123

Anda juga dapat mengumpulkan ID respons dari interaksi agen di log jejak aplikasi atau alur pemantauan. Setiap ID respons secara unik mengidentifikasi respons tersimpan yang dapat diambil oleh layanan evaluasi.

Membuat evaluasi dan menjalankan

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

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name,
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
    },
]

eval_object = client.evals.create(
    name="Agent Response Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_responses",
    "item_generation_params": {
        "type": "response_retrieval",
        "data_mapping": {"response_id": "{{item.resp_id}}"},
        "source": {
            "type": "file_content",
            "content": [
                {"item": {"resp_id": "resp_abc123"}},
                {"item": {"resp_id": "resp_def456"}},
            ]
        },
    },
}

eval_run = client.evals.runs.create(
    eval_id=eval_object.id,
    name="agent-response-evaluation",
    data_source=data_source,
)

Untuk contoh lengkap yang dapat dijalankan, lihat sample_agent_response_evaluation.py di GitHub. Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil.

Evaluasi data sintetis (versi pra-rilis)

Hasilkan kueri pengujian sintetis, kirimkan ke model yang disebarkan atau agen Foundry, dan evaluasi respons menggunakan azure_ai_synthetic_data_gen_preview jenis sumber data. Gunakan skenario ini saat Anda tidak memiliki himpunan data pengujian — layanan menghasilkan kueri berdasarkan perintah yang Anda berikan (dan/atau dari instruksi agen), menjalankannya terhadap target Anda, dan mengevaluasi respons.

Petunjuk / Saran

Sebelum memulai, selesaikan Panduan Memulai.

Cara kerja evaluasi data sintetis

  1. Layanan ini menghasilkan kueri sintetis berdasarkan prompt dan file data benih opsional Anda.
  2. Setiap kueri dikirim ke target yang ditentukan (model atau agen) untuk menghasilkan respons.
  3. Evaluator menilai setiap respons menggunakan kueri dan respons yang dihasilkan.
  4. Kueri yang dihasilkan disimpan sebagai himpunan data di proyek Anda untuk digunakan kembali.

Parameter-parameternya

Parameter Required Deskripsi
samples_count Yes Jumlah maksimum kueri pengujian sintetis yang akan dihasilkan.
model_deployment_name Yes Penyebaran model untuk digunakan dalam menghasilkan kueri sintetis. Hanya model dengan kemampuan API Respons yang didukung. Untuk ketersediaan, lihat Ketersediaan wilayah API Respons.
prompt Tidak. Instruksi yang menjelaskan jenis kueri yang akan dihasilkan. Opsional jika target agen memiliki instruksi yang sudah dikonfigurasi.
output_dataset_name Tidak. Nama untuk himpunan data output tempat kueri yang dihasilkan disimpan. Jika tidak disediakan, layanan akan menghasilkan nama secara otomatis.
sources Tidak. File data benih (menurut ID file) untuk meningkatkan relevansi kueri yang dihasilkan. Saat ini hanya satu file yang didukung.

Menyiapkan evaluator dan pemetaan data

Generator data sintetis menghasilkan kueri di {{item.query}} bidang. Target menghasilkan respons yang tersedia di {{sample.output_text}}. Petakan bidang ini ke evaluator Anda:

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

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "coherence",
        "evaluator_name": "builtin.coherence",
        "initialization_parameters": {
            "deployment_name": model_deployment_name,
        },
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
    {
        "type": "azure_ai_evaluator",
        "name": "violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
]

Membuat evaluasi dan menjalankan

Model sasaran

Hasilkan kueri sintetis dan evaluasi model:

eval_object = 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 = client.evals.runs.create(
    eval_id=eval_object.id,
    name="synthetic-data-evaluation",
    data_source=data_source,
)

Anda dapat secara opsional menambahkan permintaan sistem untuk membentuk perilaku model target. Saat menggunakan input_messages untuk pembuatan data sintetis, sertakan hanya system pesan berbasis peran — layanan menyediakan kueri yang dihasilkan sebagai pesan dari pengguna secara otomatis.

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

Target agen

Hasilkan kueri sintetis dan evaluasi agen 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 = client.evals.runs.create(
    eval_id=eval_object.id,
    name="synthetic-agent-evaluation",
    data_source=data_source,
)

Untuk melakukan jajak pendapat untuk penyelesaian dan menginterpretasikan hasil, lihat Peroleh hasil. Respons mencakup output_dataset_id properti yang berisi ID himpunan data yang dihasilkan, yang dapat Anda gunakan untuk mengambil atau menggunakan kembali data sintetis.

Dapatkan hasil

Setelah proses evaluasi selesai, ambil hasil yang dinilai dan tinjau di portal atau secara terprogram.

Polling untuk memperoleh hasil

Proses evaluasi berjalan secara asinkron. Memeriksa status pelaksanaan secara kontinu hingga selesai, lalu ambil hasilnya.

import time
from pprint import pprint

while True:
    run = client.evals.runs.retrieve(
        run_id=eval_run.id, eval_id=eval_object.id
    )
    if run.status in ("completed", "failed"):
        break
    time.sleep(5)
    print("Waiting for eval run to complete...")

# Retrieve results
output_items = list(
    client.evals.runs.output_items.list(
        run_id=run.id, eval_id=eval_object.id
    )
)
pprint(output_items)
print(f"Report URL: {run.report_url}")

Menginterpretasikan hasil

Untuk satu contoh data, semua evaluator menghasilkan skema berikut:

  • Label: label biner "pass" atau "fail", mirip dengan output pengujian unit. Gunakan hasil ini untuk memfasilitasi perbandingan di seluruh evaluator.
  • Skor: skor dari skala alami setiap evaluator. Beberapa evaluator menggunakan rubrik halus, penilaian pada skala 5 titik (evaluator kualitas) atau skala 7 titik (evaluator keamanan konten). Lainnya, seperti evaluator kesamaan tekstual, menggunakan skor F1, yang mengambang antara 0 dan 1. Setiap "skor" non-biner diubah menjadi biner "pass" atau "fail" ke dalam bidang "label" berdasarkan "ambang".
  • Ambang batas: setiap skor non-biner dibinarisasi menjadi "pass" atau "fail" berdasarkan ambang default, yang bisa diubah oleh pengguna dalam pengalaman pengguna di SDK.
  • Alasan: Untuk meningkatkan kecerdasan, semua evaluator hakim LLM juga menghasilkan bidang penalaran untuk menjelaskan mengapa skor tertentu diberikan.
  • Detail: (opsional) Untuk beberapa evaluator, seperti tool_call_accuracy, mungkin ada bidang "detail" atau bendera yang berisi informasi tambahan untuk membantu pengguna men-debug aplikasi mereka.

Contoh output (item tunggal)

{
  "type": "azure_ai_evaluator",
  "name": "Coherence",
  "metric": "coherence",
  "score": 4.0,
  "label": "pass",
  "reason": "The response is well-structured and logically organized, presenting information in a clear and coherent manner.",
  "threshold": 3,
  "passed": true
}

Contoh output (agregat)

Untuk hasil agregat dari beberapa contoh data (himpunan data), rata-rata contoh yang mendapatkan "lulus" membentuk tingkat kelulusan untuk himpunan data tersebut.

{
  "eval_id": "eval_abc123",
  "run_id": "run_xyz789",
  "status": "completed",
  "result_counts": {
    "passed": 85,
    "failed": 15,
    "total": 100
  },
  "per_testing_criteria_results": [
    {
      "name": "coherence",
      "passed": 92,
      "failed": 8,
      "pass_rate": 0.92
    },
    {
      "name": "relevance", 
      "passed": 78,
      "failed": 22,
      "pass_rate": 0.78
    }
  ]
}

Troubleshooting

Pekerjaan berjalan untuk waktu yang lama

Tugas evaluasi Anda mungkin tetap dalam status Berjalan untuk jangka waktu yang lama. Ini biasanya terjadi ketika penyebaran model OpenAI Azure tidak memiliki kapasitas yang cukup, menyebabkan layanan mencoba kembali permintaan.

Resolusi:

  1. Batalkan pekerjaan evaluasi saat ini menggunakan client.evals.runs.cancel(run_id, eval_id=eval_id).
  2. Tingkatkan kapasitas model di portal Azure.
  3. Jalankan evaluasi lagi.

Kesalahan autentikasi

Jika Anda menerima kesalahan 401 Unauthorized atau 403 Forbidden , verifikasi bahwa:

  • DefaultAzureCredential Anda dikonfigurasi dengan benar (jalankan az login jika menggunakan Azure CLI).
  • Akun Anda memiliki peran Pengguna AI Azure di proyek Foundry.
  • URL titik akhir proyek sudah benar dan menyertakan nama akun dan proyek.

Kesalahan format data

Jika evaluasi gagal dengan skema atau kesalahan pemetaan data:

  • Verifikasi file JSONL Anda memiliki satu objek JSON yang valid per baris.
  • Pastikan bahwa nama bidang dalam data_mapping cocok dengan nama bidang dalam file JSONL Anda secara tepat (case-sensitive).
  • Periksa apakah item_schema properti cocok dengan bidang di himpunan data Anda.

Kesalahan batas laju

Pembatasan laju pembuatan eksekusi evaluasi diberlakukan pada tingkat penyewa, langganan, dan proyek. Jika Anda menerima 429 Too Many Requests respons:

  • Periksa header dalam respons untuk mengetahui waktu tunggu yang direkomendasikan.
  • Tinjau isi respons untuk detail batas tarif.
  • Gunakan backoff eksponensial saat mencoba kembali permintaan yang gagal.

Jika tugas evaluasi gagal dengan kesalahan 429 selama eksekusi:

  • Kurangi ukuran himpunan data evaluasi Anda atau bagi menjadi batch yang lebih kecil.
  • Tingkatkan kuota token per menit (TPM) untuk penyebaran model Anda di portal Azure.

Kesalahan alat penilai agen

Jika evaluator agen mengembalikan kesalahan untuk alat yang tidak didukung:

  • Periksa alat yang didukung untuk evaluasi agen.
  • Sebagai solusinya, bungkus alat yang tidak didukung sebagai alat fungsi yang ditentukan pengguna sehingga evaluator dapat menilainya.