API layanan evaluasi AI Generatif

Panduan ini menunjukkan cara menggunakan API layanan evaluasi AI generatif untuk mengevaluasi model bahasa besar (LLM) Anda. Panduan ini mencakup topik berikut:

  • Jenis metrik: Pahami berbagai kategori metrik evaluasi yang tersedia.
  • Sintaks contoh: Lihat contoh curl dan permintaan Python ke Evaluation API.
  • Detail parameter: Pelajari parameter spesifik untuk setiap metrik evaluasi.
  • Contoh: Lihat contoh kode lengkap untuk tugas evaluasi umum.

Anda dapat menggunakan layanan evaluasi AI generatif untuk mengevaluasi model bahasa besar (LLM) di berbagai metrik dengan kriteria Anda sendiri. Anda memberikan input waktu inferensi, respons LLM, dan parameter tambahan, lalu layanan evaluasi AI Generatif akan menampilkan metrik khusus untuk tugas evaluasi.

Metrik mencakup metrik berbasis model, seperti PointwiseMetric dan PairwiseMetric, serta metrik yang dihitung dalam memori, seperti rouge, bleu, dan metrik panggilan fungsi alat. PointwiseMetric dan PairwiseMetric adalah metrik berbasis model generik yang dapat Anda sesuaikan dengan kriteria Anda sendiri. Layanan ini menerima hasil prediksi langsung dari model, yang memungkinkan Anda melakukan inferensi dan evaluasi pada model apa pun yang didukung oleh Vertex AI.

Untuk mengetahui informasi selengkapnya tentang cara mengevaluasi model, lihat Ringkasan layanan evaluasi AI generatif.

Batasan

Layanan evaluasi memiliki batasan berikut:

  • Layanan evaluasi mungkin mengalami penundaan propagasi pada panggilan pertama Anda.
  • Sebagian besar metrik berbasis model menggunakan kuota gemini-2.0-flash karena layanan evaluasi AI Generatif menggunakan gemini-2.0-flash sebagai model penilai pokok untuk menghitungnya.
  • Beberapa metrik berbasis model, seperti MetricX dan COMET, menggunakan model machine learning yang berbeda dan tidak menggunakan kuota gemini-2.0-flash.

Jenis metrik

API layanan evaluasi AI Generatif menyediakan beberapa kategori metrik untuk mengevaluasi berbagai aspek performa model Anda. Tabel berikut memberikan ringkasan umum untuk membantu Anda memilih metrik yang tepat untuk kasus penggunaan Anda.

Kategori Metrik Deskripsi Kasus Penggunaan
Metrik Leksikal
(misalnya, bleu, rouge, exact_match)
Metrik ini menghitung skor berdasarkan tumpang-tindih tekstual antara prediksi model dan teks referensi (kebenaran dasar). Prosesnya cepat dan objektif. Ideal untuk tugas dengan jawaban "benar" yang jelas, seperti terjemahan atau penjawaban pertanyaan berbasis fakta, di mana kemiripan dengan referensi adalah proksi yang baik untuk kualitas.
Metrik Pointwise Berbasis Model
(misalnya, fluency, safety, groundedness, summarization_quality)
Metrik ini menggunakan model penilaian untuk menilai kualitas respons model tunggal berdasarkan kriteria tertentu (seperti kelancaran atau keamanan) tanpa memerlukan jawaban referensi. Paling cocok untuk mengevaluasi kualitas subjektif teks generatif yang tidak memiliki satu jawaban yang benar, seperti kreativitas, koherensi, atau keamanan respons.
Metrik Berpasangan Berbasis Model
(misalnya, pairwise_summarization_quality)
Metrik ini menggunakan model hakim untuk membandingkan dua respons model (misalnya, dari model dasar dan model kandidat) dan menentukan mana yang lebih baik. Berguna untuk pengujian A/B dan membandingkan secara langsung performa dua model yang berbeda atau dua versi dari model yang sama pada tugas yang sama.
Metrik Penggunaan Alat
(misalnya, tool_call_valid, tool_name_match)
Metrik ini mengevaluasi kemampuan model untuk menggunakan alat (panggilan fungsi) dengan benar dengan memeriksa sintaks yang valid, nama alat yang benar, dan parameter yang akurat. Penting untuk mengevaluasi model yang dirancang untuk berinteraksi dengan API atau sistem eksternal melalui panggilan alat.
Metrik Kustom
(pointwise_metric, pairwise_metric)
Hal ini memberikan framework yang fleksibel untuk menentukan kriteria evaluasi Anda sendiri menggunakan template perintah. Kemudian, layanan menggunakan model penilai untuk mengevaluasi respons berdasarkan petunjuk kustom Anda. Untuk tugas evaluasi khusus yang metrik yang telah ditentukan sebelumnya tidak memadai dan Anda perlu menilai performa berdasarkan persyaratan unik khusus domain.
Metrik Khusus
(comet, metricx)
Metrik yang sangat khusus yang dirancang untuk tugas tertentu, terutama kualitas terjemahan mesin. Digunakan untuk evaluasi bernuansa untuk tugas terjemahan mesin yang melampaui pencocokan leksikal sederhana.

Contoh sintaksis

Contoh berikut menunjukkan sintaksis untuk mengirim permintaan evaluasi.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "pointwise_metric_input" : {
    "metric_spec" : {
      ...
    },
    "instance": {
      ...
    },
  }
}'

Python

import json

from google import auth
from google.api_core import exceptions
from google.auth.transport import requests as google_auth_requests

creds, _ = auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

data = {
  ...
}

uri = f'https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances'
result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data)

print(json.dumps(result.json(), indent=2))

Detail parameter

Bagian ini menjelaskan objek permintaan dan respons untuk setiap metrik evaluasi.

Isi permintaan

Isi permintaan tingkat teratas berisi salah satu objek input metrik berikut.

Parameter

exact_match_input

Opsional: ExactMatchInput

Mengevaluasi apakah prediksi sama persis dengan referensi.

bleu_input

Opsional: BleuInput

Menghitung skor BLEU dengan membandingkan prediksi dengan referensi.

rouge_input

Opsional: RougeInput

Menghitung skor ROUGE dengan membandingkan prediksi dengan referensi. Parameter rouge_type memungkinkan Anda menentukan berbagai jenis ROUGE.

fluency_input

Opsional: FluencyInput

Menilai kefasihan bahasa dari satu respons.

coherence_input

Opsional: CoherenceInput

Menilai koherensi satu respons.

safety_input

Opsional: SafetyInput

Menilai tingkat keamanan satu respons.

groundedness_input

Opsional: GroundednessInput

Menilai apakah suatu respons didasarkan pada konteks yang diberikan.

fulfillment_input

Opsional: FulfillmentInput

Menilai seberapa baik respons memenuhi petunjuk yang diberikan.

summarization_quality_input

Opsional: SummarizationQualityInput

Menilai kualitas ringkasan keseluruhan dari respons.

pairwise_summarization_quality_input

Opsional: PairwiseSummarizationQualityInput

Membandingkan kualitas ringkasan dari dua respons.

summarization_helpfulness_input

Opsional: SummarizationHelpfulnessInput

Menilai apakah ringkasan bermanfaat dan berisi detail yang diperlukan dari teks asli.

summarization_verbosity_input

Opsional: SummarizationVerbosityInput

Menilai kejelasan ringkasan.

question_answering_quality_input

Opsional: QuestionAnsweringQualityInput

Menilai kualitas keseluruhan jawaban atas pertanyaan, berdasarkan konteks yang diberikan.

pairwise_question_answering_quality_input

Opsional: PairwiseQuestionAnsweringQualityInput

Membandingkan kualitas dua jawaban atas suatu pertanyaan, berdasarkan konteks yang diberikan.

question_answering_relevance_input

Opsional: QuestionAnsweringRelevanceInput

Menilai relevansi jawaban terhadap pertanyaan.

question_answering_helpfulness_input

Opsional: QuestionAnsweringHelpfulnessInput

Menilai kegunaan jawaban dengan memeriksa detail penting.

question_answering_correctness_input

Opsional: QuestionAnsweringCorrectnessInput

Menilai kebenaran jawaban atas suatu pertanyaan.

pointwise_metric_input

Opsional: PointwiseMetricInput

Input untuk evaluasi pointwise kustom.

pairwise_metric_input

Opsional: PairwiseMetricInput

Input untuk evaluasi berpasangan kustom.

tool_call_valid_input

Opsional: ToolCallValidInput

Menilai apakah respons memprediksi panggilan alat yang valid.

tool_name_match_input

Opsional: ToolNameMatchInput

Menilai apakah respons memprediksi nama alat yang benar dalam panggilan alat.

tool_parameter_key_match_input

Opsional: ToolParameterKeyMatchInput

Menilai apakah respons memprediksi nama parameter yang benar dalam panggilan alat.

tool_parameter_kv_match_input

Opsional: ToolParameterKvMatchInput

Menilai apakah respons memprediksi nama dan nilai parameter yang benar dalam panggilan alat.

comet_input

Opsional: CometInput

Input untuk dievaluasi menggunakan COMET.

metricx_input

Opsional: MetricxInput

Input untuk dievaluasi menggunakan MetricX.

Pencocokan Persis (exact_match_input)

Input (ExactMatchInput)

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}

Parameter

metric_spec

Opsional: ExactMatchSpec.

Menentukan perilaku metrik.

instances

Opsional: ExactMatchInstance[]

Satu atau beberapa instance evaluasi, yang masing-masing berisi respons LLM dan referensi.

instances.prediction

Opsional: string

Respons LLM.

instances.reference

Opsional: string

Respons kebenaran dasar atau referensi.

Output (ExactMatchResults)

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

exact_match_metric_values

ExactMatchMetricValue[]

Array hasil evaluasi, satu untuk setiap instance input.

exact_match_metric_values.score

float

Salah satu dari berikut ini:

  • 0: Instance tidak sama persis.
  • 1: Instance adalah pencocokan persis.

BLEU (bleu_input)

Input (BleuInput)

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}

Parameter

metric_spec

Opsional: BleuSpec

Menentukan perilaku metrik.

metric_spec.use_effective_order

Opsional: bool

Menentukan apakah akan mempertimbangkan urutan n-gram yang tidak memiliki kecocokan.

instances

Opsional: BleuInstance[]

Satu atau beberapa instance evaluasi, yang masing-masing berisi respons LLM dan referensi.

instances.prediction

Opsional: string

Respons LLM.

instances.reference

Opsional: string

Respons kebenaran dasar atau referensi.

Output (BleuResults)

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

bleu_metric_values

BleuMetricValue[]

Array hasil evaluasi, satu untuk setiap instance input.

bleu_metric_values.score

float: Nilai dalam rentang [0, 1]. Skor yang lebih tinggi berarti prediksi lebih mirip dengan referensi.

ROUGE (rouge_input)

Input (RougeInput)

{
  "rouge_input": {
    "metric_spec": {
      "rouge_type": string,
      "use_stemmer": bool,
      "split_summaries": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}

Parameter

metric_spec

Opsional: RougeSpec

Menentukan perilaku metrik.

metric_spec.rouge_type

Opsional: string

Nilai yang didukung:

  • rougen[1-9]: Menghitung skor ROUGE berdasarkan tumpang-tindih n-gram antara prediksi dan referensi.
  • rougeL: Menghitung skor ROUGE berdasarkan Subsequence Umum Terpanjang (LCS) antara prediksi dan referensi.
  • rougeLsum: Memisahkan prediksi dan referensi menjadi kalimat, lalu menghitung LCS untuk setiap tuple. Skor rougeLsum akhir adalah rata-rata dari setiap skor LCS ini.

metric_spec.use_stemmer

Opsional: bool

Menentukan apakah akan menggunakan stemmer Porter untuk menghapus sufiks kata agar pencocokan lebih baik.

metric_spec.split_summaries

Opsional: bool

Menentukan apakah akan menambahkan baris baru antar-kalimat untuk rougeLsum.

instances

Opsional: RougeInstance[]

Satu atau beberapa instance evaluasi, yang masing-masing berisi respons LLM dan referensi.

instances.prediction

Opsional: string

Respons LLM.

instances.reference

Opsional: string

Respons kebenaran dasar atau referensi.

Output (RougeResults)

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

rouge_metric_values

RougeValue[]

Array hasil evaluasi, satu untuk setiap instance input.

rouge_metric_values.score

float: Nilai dalam rentang [0, 1]. Skor yang lebih tinggi berarti prediksi lebih mirip dengan referensi.

Kefasihan (Fluency) (fluency_input)

Input (FluencyInput)

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}

Parameter

metric_spec

Opsional: FluencySpec

Menentukan perilaku metrik.

instance

Opsional: FluencyInstance

Input evaluasi, yang terdiri dari respons LLM.

instance.prediction

Opsional: string

Respons LLM.

Output (FluencyResult)

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak jelas
  • 2: Agak Tidak Jelas (Somewhat Inarticulate)
  • 3: Netral
  • 4: Agak lancar
  • 5: Lancar

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Koherensi (Coherence) (coherence_input)

Input (CoherenceInput)

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}

Parameter

metric_spec

Opsional: CoherenceSpec

Menentukan perilaku metrik.

instance

Opsional: CoherenceInstance

Input evaluasi, yang terdiri dari respons LLM.

instance.prediction

Opsional: string

Respons LLM.

Output (CoherenceResult)

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak Koheren (Incoherent)
  • 2: Agak tidak koheren
  • 3: Netral
  • 4: Agak koheren
  • 5: Koheren (Coherent)

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Keamanan (safety_input)

Input (SafetyInput)

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}

Parameter

metric_spec

Opsional: SafetySpec

Menentukan perilaku metrik.

instance

Opsional: SafetyInstance

Input evaluasi, yang terdiri dari respons LLM.

instance.prediction

Opsional: string

Respons LLM.

Output (SafetyResult)

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 0: Tidak aman
  • 1: Aman

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Dasar (Groundedness) (groundedness_input)

Input (GroundednessInput)

{
  "groundedness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "context": string
    }
  }
}

Parameter Deskripsi

metric_spec

Opsional: GroundednessSpec

Menentukan perilaku metrik.

instance

Opsional: GroundednessInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (GroundednessResult)

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 0: Tidak beralasan
  • 1: Dilarang terbang

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Pemenuhan (fulfillment_input)

Input (FulfillmentInput)

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}

Parameter

metric_spec

Opsional: FulfillmentSpec

Menentukan perilaku metrik.

instance

Opsional: FulfillmentInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

Output (FulfillmentResult)

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak ada pemenuhan
  • 2: Pemenuhan buruk
  • 3: Beberapa pemenuhan pesanan
  • 4: Fulfillment baik
  • 5: Penyelesaian pemenuhan

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kualitas Ringkasan (summarization_quality_input)

Input (SummarizationQualityInput)

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}

Parameter

metric_spec

Opsional: SummarizationQualitySpec

Menentukan perilaku metrik.

instance

Opsional: SummarizationQualityInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (SummarizationQualityResult)

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Sangat buruk
  • 2: Buruk
  • 3: Oke
  • 4: Baik
  • 5: Sangat baik

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kualitas Ringkasan Berpasangan (Pairwise Summarization Quality) (pairwise_summarization_quality_input)

Input (PairwiseSummarizationQualityInput)

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}

Parameter

metric_spec

Opsional: PairwiseSummarizationQualitySpec

Menentukan perilaku metrik.

instance

Opsional: PairwiseSummarizationQualityInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.baseline_prediction

Opsional: string

Respons LLM model dasar.

instance.prediction

Opsional: string

Respons LLM model kandidat.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (PairwiseSummarizationQualityResult)

{
  "pairwise_summarization_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}

Output

pairwise_choice

PairwiseChoice: Enum dengan salah satu nilai berikut:

  • BASELINE: Prediksi dasar lebih baik.
  • CANDIDATE: Prediksi kandidat lebih baik.
  • TIE: Prediksi dasar dan kandidat memiliki kualitas yang sama.

explanation

string: Alasan untuk pairwise_choice yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kegunaan Ringkasan (summarization_helpfulness_input)

Input (SummarizationHelpfulnessInput)

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}

Parameter

metric_spec

Opsional: SummarizationHelpfulnessSpec

Menentukan perilaku metrik.

instance

Opsional: SummarizationHelpfulnessInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (SummarizationHelpfulnessResult)

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak membantu
  • 2: Agak tidak membantu
  • 3: Netral
  • 4: Cukup membantu
  • 5: Bermanfaat

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Panjang Ringkasan (summarization_verbosity_input)

Input (SummarizationVerbosityInput)

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}

Parameter

metric_spec

Opsional: SummarizationVerbositySpec

Menentukan perilaku metrik.

instance

Opsional: SummarizationVerbosityInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (SummarizationVerbosityResult)

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float. Salah satu dari berikut ini:

  • -2: Singkat
  • -1: Agak singkat
  • 0: Optimal
  • 1: Agak panjang
  • 2: Verbose

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kualitas Jawab Pertanyaan (Question Answering Quality) (question_answering_quality_input)

Input (QuestionAnsweringQualityInput)

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}

Parameter

metric_spec

Opsional: QuestionAnsweringQualitySpec

Menentukan perilaku metrik.

instance

Opsional: QuestionAnsweringQualityInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (QuestionAnsweringQualityResult)

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Sangat buruk
  • 2: Buruk
  • 3: Oke
  • 4: Baik
  • 5: Sangat baik

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kualitas Jawaban Pertanyaan Berpasangan (Pairwise Question Answering Quality) (pairwise_question_answering_quality_input)

Input (PairwiseQuestionAnsweringQualityInput)

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}

Parameter

metric_spec

Opsional: QuestionAnsweringQualitySpec

Spesifikasi metrik, yang menentukan perilaku metrik.

instance

Opsional: QuestionAnsweringQualityInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.baseline_prediction

Opsional: string

Respons LLM model dasar.

instance.prediction

Opsional: string

Respons LLM model kandidat.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (PairwiseQuestionAnsweringQualityResult)

{
  "pairwise_question_answering_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}

Output

pairwise_choice

PairwiseChoice: Enum dengan salah satu nilai berikut:

  • BASELINE: Prediksi dasar lebih baik.
  • CANDIDATE: Prediksi kandidat lebih baik.
  • TIE: Prediksi dasar dan kandidat memiliki kualitas yang sama.

explanation

string: Alasan untuk pairwise_choice yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Relevansi Penjawaban Pertanyaan (question_answering_relevance_input)

Input (QuestionAnsweringRelevanceInput)

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}

Parameter

metric_spec

Opsional: QuestionAnsweringRelevanceSpec

Menentukan perilaku metrik.

instance

Opsional: QuestionAnsweringRelevanceInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (QuestionAnsweringRelevanceResult)

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak relevan
  • 2: Kurang relevan
  • 3: Netral
  • 4: Agak relevan
  • 5: Relevan

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kegunaan Penjawaban Pertanyaan (question_answering_helpfulness_input)

Input (QuestionAnsweringHelpfulnessInput)

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}

Parameter

metric_spec

Opsional: QuestionAnsweringHelpfulnessSpec

Menentukan perilaku metrik.

instance

Opsional: QuestionAnsweringHelpfulnessInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (QuestionAnsweringHelpfulnessResult)

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 1: Tidak membantu
  • 2: Agak tidak membantu
  • 3: Netral
  • 4: Cukup membantu
  • 5: Bermanfaat

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Kebenaran Penjawaban Pertanyaan (question_answering_correctness_input)

Input (QuestionAnsweringCorrectnessInput)

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}

Parameter

metric_spec

Opsional: QuestionAnsweringCorrectnessSpec

Menentukan perilaku metrik.

metric_spec.use_reference

Opsional: bool

Menentukan apakah referensi digunakan dalam evaluasi.

instance

Opsional: QuestionAnsweringCorrectnessInstance

Input evaluasi, yang terdiri dari input inferensi dan respons yang sesuai.

instance.prediction

Opsional: string

Respons LLM.

instance.reference

Opsional: string

Respons kebenaran dasar atau referensi.

instance.instruction

Opsional: string

Petunjuk yang diberikan pada waktu inferensi.

instance.context

Opsional: string

Konteks yang diberikan pada waktu inferensi yang dapat digunakan oleh respons LLM.

Output (QuestionAnsweringCorrectnessResult)

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}

Output

score

float: Salah satu dari berikut ini:

  • 0: Salah
  • 1: Benar

explanation

string: Alasan untuk skor yang ditetapkan.

confidence

float: Skor keyakinan untuk hasil dalam rentang [0, 1].

Pointwise Kustom (pointwise_metric_input)

Input (PointwiseMetricInput)

{
  "pointwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}

Parameter

metric_spec

Wajib: PointwiseMetricSpec

Menentukan perilaku metrik.

metric_spec.metric_prompt_template

Wajib: string

Template perintah yang menentukan metrik. Template dirender menggunakan key-value pair di instance.json_instance.

instance

Wajib: PointwiseMetricInstance

Input evaluasi, yang terdiri dari json_instance.

instance.json_instance

Opsional: string

String JSON dari key-value pair (misalnya, {"key_1": "value_1", "key_2": "value_2"}) yang digunakan untuk merender metric_spec.metric_prompt_template.

Output (PointwiseMetricResult)

{
  "pointwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}

Output

score

float: Skor untuk hasil evaluasi metrik pointwise.

explanation

string: Alasan untuk skor yang ditetapkan.

Pairwise Kustom (pairwise_metric_input)

Input (PairwiseMetricInput)

{
  "pairwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}

Parameter

metric_spec

Wajib: PairwiseMetricSpec

Menentukan perilaku metrik.

metric_spec.metric_prompt_template

Wajib: string

Template perintah yang menentukan metrik. Template dirender menggunakan key-value pair di instance.json_instance.

instance

Wajib: PairwiseMetricInstance

Input evaluasi, yang terdiri dari json_instance.

instance.json_instance

Opsional: string

String JSON dari key-value pair (misalnya, {"key_1": "value_1", "key_2": "value_2"}) yang digunakan untuk merender metric_spec.metric_prompt_template.

Output (PairwiseMetricResult)

{
  "pairwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}

Output

score

float: Skor untuk hasil evaluasi metrik berpasangan.

explanation

string: Alasan untuk skor yang ditetapkan.

Panggilan Alat Valid (tool_call_valid_input)

Input (ToolCallValidInput)

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}

Parameter

metric_spec

Opsional: ToolCallValidSpec

Menentukan perilaku metrik.

instance

Opsional: ToolCallValidInstance

Input evaluasi, yang terdiri dari respons LLM dan referensi.

instance.prediction

Opsional: string

Respons model kandidat. Ini harus berupa string yang diserialisasi JSON yang berisi kunci content dan tool_calls. Nilai content adalah output teks dari model. Nilai tool_calls adalah string yang diserialisasi JSON dari daftar panggilan alat. Contoh:

{
  "content": "",
  "tool_calls": [
    {
      "name": "book_tickets",
      "arguments": {
        "movie": "Mission Impossible Dead Reckoning Part 1",
        "theater": "Regal Edwards 14",
        "location": "Mountain View CA",
        "showtime": "7:30",
        "date": "2024-03-30",
        "num_tix": "2"
      }
    }
  ]
}

instance.reference

Opsional: string

Respons kebenaran dasar atau referensi, dalam format yang sama dengan prediction.

Output (ToolCallValidResults)

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

tool_call_valid_metric_values

ToolCallValidMetricValue[]: Array hasil evaluasi, satu untuk setiap instance input.

tool_call_valid_metric_values.score

float: Salah satu dari berikut ini:

  • 0: Panggilan alat tidak valid
  • 1: Panggilan alat yang valid

Pencocokan Nama Alat (tool_name_match_input)

Input (ToolNameMatchInput)

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}

Parameter

metric_spec

Opsional: ToolNameMatchSpec

Menentukan perilaku metrik.

instance

Opsional: ToolNameMatchInstance

Input evaluasi, yang terdiri dari respons LLM dan referensi.

instance.prediction

Opsional: string

Respons model kandidat. Ini harus berupa string yang diserialisasi JSON yang berisi kunci content dan tool_calls. Nilai content adalah output teks dari model. Nilai tool_calls adalah string yang diserialisasi JSON dari daftar panggilan alat.

instance.reference

Opsional: string

Respons kebenaran dasar atau referensi, dalam format yang sama dengan prediction.

Output (ToolNameMatchResults)

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

tool_name_match_metric_values

ToolNameMatchMetricValue[]: Array hasil evaluasi, satu untuk setiap instance input.

tool_name_match_metric_values.score

float: Salah satu dari berikut ini:

  • 0: Nama panggilan alat tidak cocok dengan referensi.
  • 1: Nama panggilan alat cocok dengan referensi.

Pencocokan Kunci Parameter Alat (tool_parameter_key_match_input)

Input (ToolParameterKeyMatchInput)

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}

Parameter

metric_spec

Opsional: ToolParameterKeyMatchSpec

Menentukan perilaku metrik.

instance

Opsional: ToolParameterKeyMatchInstance

Input evaluasi, yang terdiri dari respons LLM dan referensi.

instance.prediction

Opsional: string

Respons model kandidat. Ini harus berupa string yang diserialisasi JSON yang berisi kunci content dan tool_calls. Nilai content adalah output teks dari model. Nilai tool_calls adalah string yang diserialisasi JSON dari daftar panggilan alat.

instance.reference

Opsional: string

Respons kebenaran dasar atau referensi, dalam format yang sama dengan prediction.

Output (ToolParameterKeyMatchResults)

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

tool_parameter_key_match_metric_values

ToolParameterKeyMatchMetricValue[]: Array hasil evaluasi, satu untuk setiap instance input.

tool_parameter_key_match_metric_values.score

float: Nilai dalam rentang [0, 1]. Skor yang lebih tinggi berarti lebih banyak parameter yang cocok dengan nama parameter rujukan.

Pencocokan KV Parameter Alat (tool_parameter_kv_match_input)

Input (ToolParameterKVMatchInput)

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}

Parameter

metric_spec

Opsional: ToolParameterKVMatchSpec

Menentukan perilaku metrik.

instance

Opsional: ToolParameterKVMatchInstance

Input evaluasi, yang terdiri dari respons LLM dan referensi.

instance.prediction

Opsional: string

Respons model kandidat. Ini harus berupa string yang diserialisasi JSON yang berisi kunci content dan tool_calls. Nilai content adalah output teks dari model. Nilai tool_calls adalah string yang diserialisasi JSON dari daftar panggilan alat.

instance.reference

Opsional: string

Respons kebenaran dasar atau referensi, dalam format yang sama dengan prediction.

Output (ToolParameterKVMatchResults)

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}

Output

tool_parameter_kv_match_metric_values

ToolParameterKVMatchMetricValue[]: Array hasil evaluasi, satu untuk setiap instance input.

tool_parameter_kv_match_metric_values.score

float: Nilai dalam rentang [0, 1]. Skor yang lebih tinggi berarti lebih banyak parameter yang cocok dengan nama dan nilai parameter referensi.

COMET (comet_input)

Input (CometInput)

{
  "comet_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}

Parameter

metric_spec

Opsional: CometSpec

Menentukan perilaku metrik.

metric_spec.version

Opsional: string

COMET_22_SRC_REF: COMET 22 untuk terjemahan, sumber, dan referensi. Model ini mengevaluasi terjemahan (prediksi) menggunakan ketiga input.

metric_spec.source_language

Opsional: string

Bahasa sumber dalam format BCP-47. Misalnya, "es".

metric_spec.target_language

Opsional: string

Bahasa target dalam format BCP-47. Misalnya, "es".

instance

Opsional: CometInstance

Input evaluasi. Kolom persis yang digunakan untuk evaluasi bergantung pada versi COMET.

instance.prediction

Opsional: string

Respons model kandidat, yang merupakan teks terjemahan yang akan dievaluasi.

instance.source

Opsional: string

Teks sumber dalam bahasa asli, sebelum terjemahan.

instance.reference

Opsional: string

Terjemahan rujukan atau kebenaran dasar, dalam bahasa yang sama dengan prediction.

Output (CometResult)

{
  "comet_result" : {
    "score": float
  }
}

Output

score

float: Nilai dalam rentang [0, 1], dengan 1 mewakili terjemahan yang sempurna.

MetricX (metricx_input)

Input (MetricxInput)

{
  "metricx_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}

Parameter

metric_spec

Opsional: MetricxSpec

Menentukan perilaku metrik.

metric_spec.version

Opsional:

string

Salah satu dari berikut ini:

  • METRICX_24_REF: MetricX 24 untuk terjemahan dan referensi. Model ini mengevaluasi prediksi (terjemahan) dengan membandingkannya dengan input teks rujukan yang diberikan.
  • METRICX_24_SRC: MetricX 24 untuk terjemahan dan sumber. Model ini mengevaluasi terjemahan (prediksi) menggunakan Estimasi Kualitas (QE), tanpa input teks referensi.
  • METRICX_24_SRC_REF: MetricX 24 untuk terjemahan, sumber, dan referensi. Model ini mengevaluasi terjemahan (prediksi) menggunakan ketiga input.

metric_spec.source_language

Opsional: string

Bahasa sumber dalam format BCP-47. Misalnya, "es".

metric_spec.target_language

Opsional: string

Bahasa target dalam format BCP-47. Misalnya, "es".

instance

Opsional: MetricxInstance

Input evaluasi. Kolom persis yang digunakan untuk evaluasi bergantung pada versi MetricX.

instance.prediction

Opsional: string

Respons model kandidat, yang merupakan teks terjemahan yang akan dievaluasi.

instance.source

Opsional: string

Teks sumber dalam bahasa asli yang digunakan untuk menerjemahkan prediksi.

instance.reference

Opsional: string

Kebenaran dasar yang digunakan untuk membandingkan dengan prediksi. Bahasa yang digunakan sama dengan bahasa prediksi.

Output (MetricxResult)

{
  "metricx_result" : {
    "score": float
  }
}

Output

score

float: Nilai dalam rentang [0, 25], dengan 0 mewakili terjemahan yang sempurna.

Contoh

Mengevaluasi beberapa metrik dalam satu panggilan

Contoh berikut menunjukkan cara memanggil API layanan evaluasi AI Generatif untuk mengevaluasi output LLM menggunakan berbagai metrik evaluasi, termasuk summarization_quality, groundedness, fulfillment, summarization_helpfulness, dan summarization_verbosity.

Python

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask, MetricPromptTemplateExamples

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

eval_dataset = pd.DataFrame(
    {
        "instruction": [
            "Summarize the text in one sentence.",
            "Summarize the text such that a five-year-old can understand.",
        ],
        "context": [
            """As part of a comprehensive initiative to tackle urban congestion and foster
            sustainable urban living, a major city has revealed ambitious plans for an
            extensive overhaul of its public transportation system. The project aims not
            only to improve the efficiency and reliability of public transit but also to
            reduce the city\'s carbon footprint and promote eco-friendly commuting options.
            City officials anticipate that this strategic investment will enhance
            accessibility for residents and visitors alike, ushering in a new era of
            efficient, environmentally conscious urban transportation.""",
            """A team of archaeologists has unearthed ancient artifacts shedding light on a
            previously unknown civilization. The findings challenge existing historical
            narratives and provide valuable insights into human history.""",
        ],
        "response": [
            "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
            "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
        ],
    }
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        MetricPromptTemplateExamples.Pointwise.SUMMARIZATION_QUALITY,
        MetricPromptTemplateExamples.Pointwise.GROUNDEDNESS,
        MetricPromptTemplateExamples.Pointwise.VERBOSITY,
        MetricPromptTemplateExamples.Pointwise.INSTRUCTION_FOLLOWING,
    ],
)

prompt_template = (
    "Instruction: {instruction}. Article: {context}. Summary: {response}"
)
result = eval_task.evaluate(prompt_template=prompt_template)

print("Summary Metrics:\n")

for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
# Summary Metrics:
# row_count:      2
# summarization_quality/mean:     3.5
# summarization_quality/std:      2.1213203435596424
# ...

Go

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// evaluateModelResponse evaluates the output of an LLM for groundedness, i.e., how well
// the model response connects with verifiable sources of information
func evaluateModelResponse(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	// evaluate the pre-generated model response against the reference (ground truth)
	responseToEvaluate := `
The city is undertaking a major project to revamp its public transportation system.
This initiative is designed to improve efficiency, reduce carbon emissions, and promote
eco-friendly commuting. The city expects that this investment will enhance accessibility
and usher in a new era of sustainable urban transportation.
`
	reference := `
As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		// Check the API reference for a full list of supported metric inputs:
		// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#evaluateinstancesrequest
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_GroundednessInput{
			GroundednessInput: &aiplatformpb.GroundednessInput{
				MetricSpec: &aiplatformpb.GroundednessSpec{},
				Instance: &aiplatformpb.GroundednessInstance{
					Context:    &reference,
					Prediction: &responseToEvaluate,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetGroundednessResult()
	fmt.Fprintf(w, "score: %.2f\n", results.GetScore())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// score: 1.00
	// confidence: 1.00
	// explanation:
	// STEP 1: All aspects of the response are found in the context.
	// The response accurately summarizes the city's plan to overhaul its public transportation system, highlighting the goals of ...
	// STEP 2: According to the rubric, the response is scored 1 because all aspects of the response are attributable to the context.

	return nil
}

Mengevaluasi kualitas ringkasan berpasangan

Contoh berikut menunjukkan cara memanggil Gen AI Evaluation Service API untuk mengevaluasi output LLM menggunakan perbandingan kualitas ringkasan berpasangan.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: .
  • LOCATION: Region untuk memproses permintaan.
  • PREDICTION: Respons LLM.
  • BASELINE_PREDICTION: Respons LLM model dasar.
  • INSTRUCTION: Petunjuk yang digunakan pada waktu inferensi.
  • CONTEXT: Teks waktu inferensi yang berisi semua informasi yang relevan, yang dapat digunakan dalam respons LLM.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \

Isi JSON permintaan:

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": "PREDICTION",
      "baseline_prediction": "BASELINE_PREDICTION",
      "instruction": "INSTRUCTION",
      "context": "CONTEXT",
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python.

import pandas as pd

import vertexai
from vertexai.generative_models import GenerativeModel
from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    MetricPromptTemplateExamples,
)

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

prompt = """
Summarize the text such that a five-year-old can understand.

# Text

As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
"""

eval_dataset = pd.DataFrame({"prompt": [prompt]})

# Baseline model for pairwise comparison
baseline_model = GenerativeModel("gemini-2.0-flash-lite-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-2.0-flash-001", generation_config={"temperature": 0.4}
)

prompt_template = MetricPromptTemplateExamples.get_prompt_template(
    "pairwise_summarization_quality"
)

summarization_quality_metric = PairwiseMetric(
    metric="pairwise_summarization_quality",
    metric_prompt_template=prompt_template,
    baseline_model=baseline_model,
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[summarization_quality_metric],
    experiment="pairwise-experiment",
)
result = eval_task.evaluate(model=candidate_model)

baseline_model_response = result.metrics_table["baseline_model_response"].iloc[0]
candidate_model_response = result.metrics_table["response"].iloc[0]
winner_model = result.metrics_table[
    "pairwise_summarization_quality/pairwise_choice"
].iloc[0]
explanation = result.metrics_table[
    "pairwise_summarization_quality/explanation"
].iloc[0]

print(f"Baseline's story:\n{baseline_model_response}")
print(f"Candidate's story:\n{candidate_model_response}")
print(f"Winner: {winner_model}")
print(f"Explanation: {explanation}")
# Example response:
# Baseline's story:
# A big city wants to make it easier for people to get around without using cars! They're going to make buses and trains ...
#
# Candidate's story:
# A big city wants to make it easier for people to get around without using cars! ... This will help keep the air clean ...
#
# Winner: CANDIDATE
# Explanation: Both responses adhere to the prompt's constraints, are grounded in the provided text, and ... However, Response B ...

Go

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Go Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// pairwiseEvaluation lets the judge model to compare the responses of two models and pick the better one
func pairwiseEvaluation(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	context := `
As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
`
	instruction := "Summarize the text such that a five-year-old can understand."
	baselineResponse := `
The city wants to make it easier for people to get around without using cars.
They're going to make the buses and trains better and faster, so people will want to
use them more. This will help the air be cleaner and make the city a better place to live.
`
	candidateResponse := `
The city is making big changes to how people get around. They want to make the buses and
trains work better and be easier for everyone to use. This will also help the environment
by getting people to use less gas. The city thinks these changes will make it easier for
everyone to get where they need to go.
`

	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_PairwiseSummarizationQualityInput{
			PairwiseSummarizationQualityInput: &aiplatformpb.PairwiseSummarizationQualityInput{
				MetricSpec: &aiplatformpb.PairwiseSummarizationQualitySpec{},
				Instance: &aiplatformpb.PairwiseSummarizationQualityInstance{
					Context:            &context,
					Instruction:        &instruction,
					Prediction:         &candidateResponse,
					BaselinePrediction: &baselineResponse,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetPairwiseSummarizationQualityResult()
	fmt.Fprintf(w, "choice: %s\n", results.GetPairwiseChoice())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// choice: BASELINE
	// confidence: 0.50
	// explanation:
	// BASELINE response is easier to understand. For example, the phrase "..." is easier to understand than "...". Thus, BASELINE response is ...

	return nil
}

Mengevaluasi skor ROUGE

Contoh berikut menunjukkan cara memanggil API layanan evaluasi AI Generatif untuk mendapatkan skor ROUGE untuk prediksi. Permintaan menggunakan metric_spec untuk mengonfigurasi perilaku metrik.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: .
  • LOCATION: Region untuk memproses permintaan.
  • PREDICTION: Respons LLM.
  • REFERENCE: Respons LLM Golden sebagai referensi.
  • ROUGE_TYPE: Perhitungan yang digunakan untuk menentukan skor nakal. Lihat metric_spec.rouge_type untuk mengetahui nilai yang dapat diterima.
  • USE_STEMMER: Menentukan apakah stemmer Porter digunakan untuk menghilangkan sufiks kata guna meningkatkan pencocokan. Untuk mengetahui nilai yang dapat diterima, lihat metric_spec.use_stemmer.
  • SPLIT_SUMMARIES: Menentukan apakah baris baru ditambahkan di antara kalimat rougeLsum. Untuk mengetahui nilai yang dapat diterima, lihat metric_spec.split_summaries .

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \

Isi JSON permintaan:

{
  "rouge_input": {
    "instances": {
      "prediction": "PREDICTION",
      "reference": "REFERENCE.",
    },
    "metric_spec": {
      "rouge_type": "ROUGE_TYPE",
      "use_stemmer": USE_STEMMER,
      "split_summaries": SPLIT_SUMMARIES,
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python.

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

reference_summarization = """
The Great Barrier Reef, the world's largest coral reef system, is
located off the coast of Queensland, Australia. It's a vast
ecosystem spanning over 2,300 kilometers with thousands of reefs
and islands. While it harbors an incredible diversity of marine
life, including endangered species, it faces serious threats from
climate change, ocean acidification, and coral bleaching."""

# Compare pre-generated model responses against the reference (ground truth).
eval_dataset = pd.DataFrame(
    {
        "response": [
            """The Great Barrier Reef, the world's largest coral reef system located
        in Australia, is a vast and diverse ecosystem. However, it faces serious
        threats from climate change, ocean acidification, and coral bleaching,
        endangering its rich marine life.""",
            """The Great Barrier Reef, a vast coral reef system off the coast of
        Queensland, Australia, is the world's largest. It's a complex ecosystem
        supporting diverse marine life, including endangered species. However,
        climate change, ocean acidification, and coral bleaching are serious
        threats to its survival.""",
            """The Great Barrier Reef, the world's largest coral reef system off the
        coast of Australia, is a vast and diverse ecosystem with thousands of
        reefs and islands. It is home to a multitude of marine life, including
        endangered species, but faces serious threats from climate change, ocean
        acidification, and coral bleaching.""",
        ],
        "reference": [reference_summarization] * 3,
    }
)
eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        "rouge_1",
        "rouge_2",
        "rouge_l",
        "rouge_l_sum",
    ],
)
result = eval_task.evaluate()

print("Summary Metrics:\n")
for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
#
# Summary Metrics:
#
# row_count:      3
# rouge_1/mean:   0.7191161666666667
# rouge_1/std:    0.06765143922270488
# rouge_2/mean:   0.5441118566666666
# ...
# Metrics Table:
#
#                                        response                         reference  ...  rouge_l/score  rouge_l_sum/score
# 0  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.577320           0.639175
# 1  The Great Barrier Reef, a vast coral...  \n    The Great Barrier Reef, the ...  ...       0.552381           0.666667
# 2  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.774775           0.774775

Go

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Go Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	"context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// getROUGEScore evaluates a model response against a reference (ground truth) using the ROUGE metric
func getROUGEScore(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	modelResponse := `
The Great Barrier Reef, the world's largest coral reef system located in Australia,
is a vast and diverse ecosystem. However, it faces serious threats from climate change,
ocean acidification, and coral bleaching, endangering its rich marine life.
`
	reference := `
The Great Barrier Reef, the world's largest coral reef system, is
located off the coast of Queensland, Australia. It's a vast
ecosystem spanning over 2,300 kilometers with thousands of reefs
and islands. While it harbors an incredible diversity of marine
life, including endangered species, it faces serious threats from
climate change, ocean acidification, and coral bleaching.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_RougeInput{
			RougeInput: &aiplatformpb.RougeInput{
				// Check the API reference for the list of supported ROUGE metric types:
				// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#rougespec
				MetricSpec: &aiplatformpb.RougeSpec{
					RougeType: "rouge1",
				},
				Instances: []*aiplatformpb.RougeInstance{
					{
						Prediction: &modelResponse,
						Reference:  &reference,
					},
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	fmt.Fprintln(w, "evaluation results:")
	fmt.Fprintln(w, resp.GetRougeResults().GetRougeMetricValues())
	// Example response:
	// [score:0.6597938]

	return nil
}

Langkah berikutnya