Setelah membuat set data evaluasi, langkah berikutnya adalah menentukan metrik yang digunakan untuk mengukur performa model. Model AI generatif dapat membuat aplikasi untuk berbagai tugas, dan layanan evaluasi AI generatif menggunakan framework berbasis pengujian yang mengubah evaluasi dari rating subjektif menjadi hasil yang objektif dan dapat ditindaklanjuti.
Berikut adalah konsep inti terkait metrik evaluasi:
Rubrik: Kriteria untuk cara memberi rating respons model atau aplikasi LLM.
Metrik: Skor yang mengukur output model terhadap rubrik rating.
Layanan evaluasi AI generatif menawarkan kategori metrik berikut:
Metrik berbasis rubrik: Menggabungkan LLM ke dalam alur kerja evaluasi.
Rubrik adaptif (direkomendasikan): Rubrik dibuat secara dinamis untuk setiap perintah. Respons dievaluasi dengan umpan balik lulus atau gagal yang terperinci dan dapat dijelaskan, yang khusus untuk perintah.
Rubrik statis: Rubrik ditentukan secara eksplisit dan rubrik yang sama berlaku untuk semua perintah. Respons dievaluasi dengan kumpulan evaluator berbasis pemberian skor numerik yang sama. Satu skor numerik (seperti 1-5) per perintah. Jika evaluasi diperlukan pada dimensi yang sangat spesifik atau jika rubrik yang sama persis diperlukan di semua perintah.
Metrik berbasis komputasi: Mengevaluasi respons dengan algoritma deterministik, biasanya menggunakan kebenaran nyata. Skor numerik (seperti 0,0-1,0) per perintah. Jika kebenaran dasar tersedia dan dapat dicocokkan dengan metode deterministik.
Metrik fungsi kustom: Tentukan metrik Anda sendiri melalui fungsi Python.
Metrik berbasis rubrik
Metrik berbasis rubrik menggabungkan model bahasa besar dalam alur kerja untuk menilai kualitas respons model. Evaluasi berbasis rubrik cocok untuk berbagai tugas, terutama kualitas penulisan, keamanan, dan kepatuhan terhadap petunjuk, yang sering kali sulit dievaluasi dengan algoritma deterministik.
Rubrik adaptif
Rubrik adaptif berfungsi seperti pengujian unit untuk model Anda. Rubrik adaptif membuat serangkaian pengujian lulus atau gagal yang unik secara dinamis untuk setiap perintah dalam set data Anda. Rubrik menjaga evaluasi tetap relevan dengan tugas yang diminta dan bertujuan untuk memberikan hasil yang objektif, dapat dijelaskan, dan konsisten.
Contoh berikut menunjukkan cara rubrik adaptif dapat dibuat untuk serangkaian perintah:
Perintah | Rubrik adaptif |
---|---|
"Rangkum artikel berikut tentang manfaat energi surya dalam kurang dari 100 kata…" |
|
"Tulis email singkat dan ramah untuk mengundang karyawan ke piknik perusahaan tahunan." Sebutkan tanggal 15 September dan bahwa opsi vegetarian akan tersedia…" |
|
Anda dapat mengakses rubrik adaptif melalui SDK. Sebaiknya mulai dengan GENERAL_QUALITY
sebagai default.
Metrik kualitas umum
GENERAL_QUALITY
membuat serangkaian rubrik yang mencakup berbagai tugas seperti mengikuti petunjuk, pemformatan, nada bahasa, gaya, bergantung pada perintah input. Anda dapat menggabungkan pembuatan rubrik dengan validasi dalam baris kode berikut:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY,
],
)
Anda dapat membuat rubrik secara terpisah (untuk meninjau atau menggunakannya kembali di berbagai model dan agen) sebelum menggunakannya untuk mengevaluasi respons model:
from vertexai import types
# Use GENERAL_QUALITY recipe to generate rubrics, and store them
# as a rubric group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
src=eval_dataset_df,
rubric_group_name="general_quality_rubrics",
predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)
# Specify the group of rubrics to use for the evaluation.
eval_result = client.evals.evaluate(
dataset=data_with_rubrics,
metrics=[types.RubricMetric.GENERAL_QUALITY(
rubric_group_name="general_quality_rubrics",
)],
)
Anda juga dapat memandu GENERAL_QUALITY
dengan bahasa alami guidelines
untuk memfokuskan pembuatan rubrik pada kriteria yang paling penting bagi Anda. Layanan evaluasi AI generatif kemudian membuat rubrik yang mencakup tugas default dan pedoman yang Anda tentukan.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY(
metric_spec_parameters={
"guidelines": "The response must maintain a professional tone and must not provide financial advice."
}
)
],
)
Metrik kualitas yang ditargetkan
Jika perlu mengevaluasi aspek kualitas model yang lebih tertarget, Anda dapat menggunakan metrik yang menghasilkan rubrik yang berfokus pada area tertentu. Contoh:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
],
)
Layanan evaluasi AI generatif menawarkan jenis rubrik adaptif berikut:
INSTRUCTION_FOLLOWING
: Mengukur seberapa baik respons mematuhi batasan dan petunjuk tertentu dalam perintah.TEXT_QUALITY
: Berfokus secara khusus pada kualitas linguistik respons, menilai kefasihan, koherensi, dan tata bahasa.
Percakapan multi-giliran
multi_turn_general_quality
: Mengevaluasi kualitas percakapan secara keseluruhan dalam dialog multi-turn.multi_turn_text_quality
: Mengevaluasi kualitas teks respons dalam dialog multi-giliran.
Evaluasi agen
final_response_reference_free
: Mengevaluasi kualitas jawaban akhir agen tanpa memerlukan jawaban referensi.
Untuk mengetahui detail selengkapnya tentang rubrik adaptif yang ditargetkan, lihat Detail rubrik adaptif.
Rubrik statis
Rubrik statis menerapkan satu set pedoman pemberian skor tetap ke setiap contoh dalam set data Anda. Pendekatan berbasis skor ini berguna saat Anda perlu mengukur performa terhadap tolok ukur yang konsisten di semua perintah.
Misalnya, rubrik statis berikut menilai kualitas teks dalam skala 1-5:
5: (Very good). Exceptionally clear, coherent, fluent, and concise. Fully adheres to instructions and stays grounded.
4: (Good). Well-written, coherent, and fluent. Mostly adheres to instructions and stays grounded. Minor room for improvement.
3: (Ok). Adequate writing with decent coherence and fluency. Partially fulfills instructions and may contain minor ungrounded information. Could be more concise.
2: (Bad). Poorly written, lacking coherence and fluency. Struggles to adhere to instructions and may include ungrounded information. Issues with conciseness.
1: (Very bad). Very poorly written, incoherent, and non-fluent. Fails to follow instructions and contains substantial ungrounded information. Severely lacking in conciseness.
Layanan evaluasi AI generatif menyediakan metrik rubrik statis berikut:
GROUNDING
: Memeriksa faktualitas dan konsistensi terhadap teks sumber (kebenaran dasar) yang diberikan. Metrik ini sangat penting untuk sistem RAG.SAFETY
: Menilai respons model terkait pelanggaran kebijakan keamanan, seperti ujaran kebencian atau konten berbahaya.
Anda juga dapat menggunakan template perintah metrik seperti FLUENCY
.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.SAFETY,
types.RubricMetric.GROUNDING,
types.RubricMetric.FLUENCY,
],
)
Menyesuaikan rubrik statis
Untuk kebutuhan yang sangat terspesialisasi, Anda dapat membuat rubrik statis Anda sendiri. Metode ini menawarkan kontrol maksimum, tetapi mengharuskan Anda mendesain perintah evaluasi dengan cermat untuk memastikan hasil yang konsisten dan andal. Sebaiknya gunakan pedoman dengan GENERAL_QUALITY
sebelum menyesuaikan rubrik statis.
# Define a custom metric to evaluate language simplicity
simplicity_metric = types.LLMMetric(
name='language_simplicity',
prompt_template=types.MetricPromptBuilder(
instruction="Evaluate the story's simplicity for a 5-year-old.",
criteria={
"Vocabulary": "Uses simple words.",
"Sentences": "Uses short sentences.",
},
rating_scores={
"5": "Excellent: Very simple, ideal for a 5-year-old.",
"4": "Good: Mostly simple, with minor complex parts.",
"3": "Fair: Mix of simple and complex; may be challenging for a 5-year-old.",
"2": "Poor: Largely too complex, with difficult words/sentences.",
"1": "Very Poor: Very complex, unsuitable for a 5-year-old."
}
)
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
simplicity_metric
],
)
Metrik berbasis komputasi
Metrik berbasis komputasi menggunakan algoritma deterministik untuk memberi skor pada respons model dengan membandingkannya dengan jawaban referensi. Metrik ini memerlukan kebenaran nyata dalam set data Anda dan ideal untuk tugas yang "jawaban" yang benar sudah ditentukan dengan baik.
Recall-Oriented Understudy for Gisting Evaluation (rouge_l, rouge_1): Mengukur tumpang-tindih n-gram (urutan kata yang berdekatan) antara respons model dan teks referensi. Metrik ini biasanya digunakan untuk mengevaluasi ringkasan teks.
Bilingual Evaluation Understudy (bleu): Mengukur seberapa mirip respons dengan teks referensi berkualitas tinggi dengan menghitung n-gram yang cocok. Metrik ini adalah metrik standar untuk kualitas terjemahan, tetapi juga dapat digunakan untuk tugas pembuatan teks lainnya.
Pencocokan Persis (exact_match): Mengukur persentase respons yang identik dengan jawaban referensi. Hal ini berguna untuk menjawab pertanyaan berbasis fakta atau tugas yang hanya memiliki satu respons yang benar.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.Metric(name='bleu'),
types.Metric(name='rouge_l'),
types.Metric(name='exact_match')
],
)
Metrik fungsi kustom
Anda juga dapat menerapkan logika evaluasi kustom dengan meneruskan fungsi Python kustom ke parameter custom_function
. Layanan evaluasi AI generatif menjalankan fungsi ini untuk setiap baris set data Anda.
# Define a custom function to check for the presence of a keyword
def contains_keyword(instance: dict) -> dict:
keyword = "magic"
response_text = instance.get("response", "")
score = 1.0 if keyword in response_text.lower() else 0.0
return {"score": score}
keyword_metric = types.Metric(
name="keyword_check",
custom_function=contains_keyword
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[keyword_metric]
)