Menyiapkan set data evaluasi

Halaman ini menjelaskan cara menyiapkan set data untuk layanan evaluasi AI Generatif.

Ringkasan

Layanan evaluasi AI generatif secara otomatis mendeteksi dan menangani beberapa format data umum. Artinya, Anda sering kali dapat menggunakan data apa adanya tanpa perlu melakukan konversi manual.

Kolom yang perlu Anda berikan dalam set data bergantung pada sasaran Anda:

Sasaran Data yang diperlukan Alur kerja SDK
Membuat respons baru, lalu mengevaluasinya prompt run_inference()evaluate()
Mengevaluasi respons yang ada prompt dan response evaluate()

Saat menjalankan client.evals.evaluate(), layanan evaluasi AI generatif akan otomatis mencari kolom umum berikut dalam set data Anda:

  • prompt: (Wajib) Input ke model yang ingin Anda evaluasi. Untuk mendapatkan hasil terbaik, Anda harus memberikan contoh perintah yang mewakili jenis input yang diproses model Anda dalam produksi.

  • response: (Wajib) Output yang dihasilkan oleh model atau aplikasi yang sedang dievaluasi.

  • reference: (Opsional) Jawaban sebenarnya atau "emas" yang dapat Anda bandingkan dengan respons model. Kolom ini sering diperlukan untuk metrik berbasis komputasi seperti bleu dan rouge.

  • conversation_history: (Opsional) Daftar giliran sebelumnya dalam percakapan multi-giliran. Layanan evaluasi AI generatif akan otomatis mengekstrak kolom ini dari format yang didukung. Untuk mengetahui informasi selengkapnya, lihat Menangani percakapan multi-giliran.

Format data yang didukung

Layanan evaluasi AI generatif mendukung format berikut:

DataFrame Pandas

Untuk evaluasi yang sederhana, Anda dapat menggunakan pandas.DataFrame. Layanan evaluasi AI generatif mencari nama kolom umum seperti prompt, response, dan reference. Format ini sepenuhnya kompatibel dengan versi lama.

import pandas as pd

# Example DataFrame with prompts and ground truth references
prompts_df = pd.DataFrame({
    "prompt": [
        "What is the capital of France?",
        "Who wrote 'Hamlet'?",
    ],
    "reference": [
        "Paris",
        "William Shakespeare",
    ]
})

# You can use this DataFrame directly with run_inference or evaluate
eval_dataset = client.evals.run_inference(model="gemini-2.5-flash", src=prompts_df)
eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()

Format prediksi batch Gemini

Anda dapat langsung menggunakan output tugas prediksi batch Vertex AI, yang biasanya berupa file JSONL yang disimpan di Cloud Storage, dengan setiap baris berisi objek permintaan dan respons. Layanan evaluasi AI generatif mengurai struktur ini secara otomatis untuk menyediakan integrasi dengan layanan Vertex AI lainnya.

Berikut adalah contoh satu baris dalam file JSONl:

{"request": {"contents": [{"role": "user", "parts": [{"text": "Why is the sky blue?"}]}]}, "response": {"candidates": [{"content": {"role": "model", "parts": [{"text": "The sky appears blue to the human eye as a result of a phenomenon known as Rayleigh scattering."}]}}]}}

Kemudian, Anda dapat mengevaluasi respons yang telah dibuat sebelumnya dari tugas batch secara langsung:

# Cloud Storage path to your batch prediction output file
batch_job_output_uri = "gs://path/to/your/batch_output.jsonl"

# Evaluate the pre-generated responses directly
eval_result = client.evals.evaluate(
    dataset=batch_job_output_uri,
    metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()

Format Penyelesaian Chat OpenAI

Untuk mengevaluasi atau membandingkan dengan model pihak ketiga seperti OpenAI dan Anthropic, layanan evaluasi AI generatif mendukung format Penyelesaian Chat OpenAI. Anda dapat menyediakan set data dengan setiap baris berupa objek JSON yang disusun seperti permintaan OpenAI API. Layanan evaluasi AI generatif akan otomatis mendeteksi format ini.

Berikut adalah contoh satu baris dalam format ini:

{"request": {"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"}], "model": "gpt-4o"}}

Anda dapat menggunakan data ini untuk membuat respons dari model pihak ketiga dan mengevaluasi respons:

# Ensure your third-party API key is set
# e.g., os.environ['OPENAI_API_KEY'] = 'Your API Key'

openai_request_uri = "gs://path/to/your/openai_requests.jsonl"

# Generate responses using a LiteLLM-supported model string
openai_responses = client.evals.run_inference(
    model="gpt-4o",  # LiteLLM compatible model string
    src=openai_request_uri,
)

# The resulting openai_responses object can then be evaluated
eval_result = client.evals.evaluate(
    dataset=openai_responses,
    metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()

Menangani percakapan multi-giliran

Layanan evaluasi AI generatif secara otomatis mengurai data percakapan multi-giliran dari format yang didukung. Jika data input Anda menyertakan histori pertukaran (seperti dalam kolom request.contents dalam format Gemini, atau request.messages dalam format OpenAI), layanan evaluasi AI Generatif akan mengidentifikasi giliran sebelumnya dan memprosesnya sebagai conversation_history.

Artinya, Anda tidak perlu memisahkan perintah saat ini dari percakapan sebelumnya secara manual, karena metrik evaluasi dapat menggunakan histori percakapan untuk memahami konteks respons model.

Perhatikan contoh percakapan multi-giliran dalam format Gemini berikut:

{
  "request": {
    "contents": [
      {"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]},
      {"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]},
      {"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
    ]
  },
  "response": {
    "candidates": [
      {"content": {"role": "model", "parts": [{"text": "For spring in Paris, you should definitely visit the Eiffel Tower, the Louvre Museum, and wander through Montmartre."}]}}
    ]
  }
}

Percakapan bolak-balik diuraikan secara otomatis sebagai berikut:

  • prompt: Pesan pengguna terakhir diidentifikasi sebagai perintah saat ini ({"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}).

  • conversation_history: Pesan sebelumnya otomatis diekstrak dan tersedia sebagai histori percakapan ([{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]}, {"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]}]).

  • response: Balasan model diambil dari kolom response ({"role": "model", "parts": [{"text": "For spring in Paris..."}]}).

Langkah berikutnya