Setelah mengembangkan agen, Anda dapat menggunakan layanan evaluasi Gen AI untuk mengevaluasi kemampuan agen dalam menyelesaikan tugas dan sasaran untuk kasus penggunaan tertentu.
Menentukan metrik evaluasi
Mulai dengan daftar metrik kosong (yaitu metrics = []
) dan tambahkan metrik
yang relevan ke dalamnya. Untuk menyertakan metrik tambahan:
Respons akhir
Evaluasi respons akhir mengikuti proses yang sama dengan evaluasi berbasis model. Untuk mengetahui detailnya, lihat Menentukan metrik evaluasi.
Pencocokan persis
metrics.append("trajectory_exact_match")
Jika lintasan yang diprediksi identik dengan lintasan referensi, dengan
panggilan alat yang sama persis dalam urutan yang sama persis, metrik trajectory_exact_match
akan menampilkan skor 1
, jika tidak, 0
.
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Pencocokan dalam urutan
metrics.append("trajectory_in_order_match")
Jika lintasan yang diprediksi berisi semua panggilan alat dari lintasan
referensi dalam urutan yang sama, dan mungkin juga memiliki panggilan alat tambahan, metrik
trajectory_in_order_match
akan menampilkan skor 1
, jika tidak, 0
.
Parameter input:
predicted_trajectory
: Prediksi lintasan yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Prediksi lintasan yang diharapkan untuk agen agar memenuhi kueri.
Pencocokan urutan apa pun
metrics.append("trajectory_any_order_match")
Jika lintasan yang diprediksi berisi semua panggilan alat dari lintasan
referensi, tetapi urutannya tidak penting dan dapat berisi panggilan alat tambahan,
metrik trajectory_any_order_match
akan menampilkan skor 1
, jika tidak, 0
.
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Presisi
metrics.append("trajectory_precision")
Metrik trajectory_precision
mengukur jumlah panggilan alat dalam
jalur yang diprediksi yang benar-benar relevan atau benar sesuai dengan
jalur referensi. Ini adalah nilai float
dalam rentang [0, 1]
: makin tinggi skor, makin akurat lintasan yang diprediksi.
Presisi dihitung sebagai berikut: Hitung jumlah tindakan dalam lintasan yang diprediksi yang juga muncul dalam lintasan referensi. Bagi jumlah tersebut dengan jumlah total tindakan dalam lintasan yang diprediksi.
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Recall
metrics.append("trajectory_recall")
Metrik trajectory_recall
mengukur jumlah panggilan alat penting
dari lintasan referensi yang benar-benar diambil dalam lintasan
yang diprediksi. Ini adalah nilai float
dalam rentang [0, 1]
: makin tinggi
skor, makin baik recall lintasan yang diprediksi.
Recall dihitung sebagai berikut: Hitung jumlah tindakan dalam lintasan referensi yang juga muncul dalam lintasan yang diprediksi. Bagi jumlah tersebut dengan jumlah total tindakan dalam lintasan referensi.
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Penggunaan satu alat
from vertexai.preview.evaluation import metrics
metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))
Metrik trajectory_single_tool_use
memeriksa apakah alat tertentu yang ditentukan dalam spesifikasi metrik digunakan dalam lintasan yang diprediksi. Fungsi ini tidak
memeriksa urutan panggilan alat atau frekuensi penggunaan alat, hanya apakah
alat tersebut ada atau tidak. Nilainya adalah 0
jika alat tidak ada, 1
jika ada.
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.
Kustom
Anda dapat menentukan metrik kustom sebagai berikut:
from vertexai.preview.evaluation import metrics
def word_count(instance):
response = instance["response"]
score = len(response.split(" "))
return {"word_count": score}
metrics.append(
metrics.CustomMetric(name="word_count", metric_function=word_count)
)
Dua metrik performa berikut selalu disertakan dalam hasil. Anda
tidak perlu menentukannya di EvalTask
:
latency
(float
): Waktu yang diperlukan (dalam detik) oleh agen untuk merespons.failure
(bool
):0
jika pemanggilan agen berhasil,1
jika tidak.
Menyiapkan set data evaluasi
Untuk menyiapkan set data Anda untuk evaluasi respons atau lintasan akhir:
Respons akhir
Skema data untuk evaluasi respons akhir mirip dengan skema data untuk evaluasi respons model.
Pencocokan persis
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Pencocokan dalam urutan
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Prediksi lintasan yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Prediksi lintasan yang diharapkan untuk agen agar memenuhi kueri.
Pencocokan urutan apa pun
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Presisi
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Recall
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.reference_trajectory
: Penggunaan alat yang diharapkan agar agen dapat memenuhi kueri.
Penggunaan satu alat
Set data evaluasi harus memberikan input berikut:
Parameter input:
predicted_trajectory
: Daftar panggilan alat yang digunakan oleh agen untuk mencapai respons akhir.
Untuk tujuan ilustrasi, berikut adalah contoh set data evaluasi.
import pandas as pd
eval_dataset = pd.DataFrame({
"predicted_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_z"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
]
],
"reference_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_y"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
],
],
})
Contoh set data
Kami telah menyediakan contoh set data berikut untuk menunjukkan cara mengevaluasi agen:
"on-device"
: Set data evaluasi untuk Asisten Rumah di Perangkat. Agen ini membantu dengan kueri seperti "Jadwalkan AC di kamar tidur agar aktif antara pukul 23.00 dan 08.00, dan nonaktif di waktu lainnya"."customer-support"
: Set data evaluasi untuk Agen Dukungan Pelanggan. Agen akan membantu menjawab kueri seperti "Dapatkah Anda membatalkan pesanan yang tertunda dan mengeskalasikan tiket dukungan yang terbuka?""content-creation"
: Set data evaluasi untuk Agen Pembuatan Konten Pemasaran. Agen ini membantu menjawab kueri seperti "Jadwalkan ulang kampanye X menjadi kampanye satu kali di situs media sosial Y dengan pengurangan anggaran sebesar 50%, hanya pada 25 Desember 2024".
Untuk mengimpor contoh set data:
Instal dan lakukan inisialisasi
gcloud
CLI.Download set data evaluasi.
Di Perangkat
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .
Dukungan Pelanggan
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .
Pembuatan Konten
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
Memuat contoh set data
import json eval_dataset = json.loads(open('eval_dataset.json').read())
Membuat hasil evaluasi
Untuk menghasilkan hasil evaluasi, jalankan kode berikut:
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)
Melihat dan menafsirkan hasil
Hasil evaluasi ditampilkan sebagai berikut:
Hasil evaluasi berisi informasi berikut:
Metrik respons akhir
Metrik per baris:
response
: Respons akhir yang dihasilkan oleh agen.latency_in_seconds
: Waktu yang diperlukan (dalam detik) untuk membuat respons.failure
: Menunjukkan apakah respons yang valid dihasilkan atau tidak.score
: Skor yang dihitung untuk respons yang ditentukan dalam spesifikasi metrik.explanation
: Penjelasan untuk skor yang ditentukan dalam spesifikasi metrik.
Metrik ringkasan:
mean
: Skor rata-rata untuk semua instance.standard deviation
: Standar deviasi untuk semua skor.
Metrik lintasan
Metrik per baris:
predicted_trajectory
: Urutan panggilan alat yang diikuti oleh agen untuk mencapai respons akhir.reference_trajectory
: Urutan panggilan alat yang diharapkan.score
: Skor yang dihitung untuk lintasan prediksi dan lintasan referensi yang ditentukan dalam spesifikasi metrik.latency_in_seconds
: Waktu yang diperlukan (dalam detik) untuk membuat respons.failure
: Menunjukkan apakah respons yang valid dihasilkan atau tidak.
Metrik ringkasan:
mean
: Skor rata-rata untuk semua instance.standard deviation
: Standar deviasi untuk semua skor.
Langkah berikutnya
Coba notebook berikut: