Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Databricks merekomendasikan penggunaan MLflow 3 untuk mengevaluasi dan memantau aplikasi GenAI. Halaman ini menjelaskan Evaluasi Agen MLflow 2.
- Untuk pengenalan evaluasi dan pemantauan pada MLflow 3, lihat Mengevaluasi dan memantau agen AI.
- Untuk informasi tentang migrasi ke MLflow 3, lihat Migrasi ke MLflow 3 dari Evaluasi Agen.
- Untuk informasi MLflow 3 tentang topik ini, lihat Membangun himpunan data evaluasi MLflow.
Artikel ini menjelaskan skema input yang diperlukan oleh Evaluasi Agen untuk menilai kualitas, biaya, dan latensi aplikasi Anda.
- Selama pengembangan, evaluasi berlangsung offline, dan set data evaluasi adalah input yang diperlukan untuk Evaluasi Agen.
- Saat aplikasi dalam produksi, semua input ke Evaluasi Agen berasal dari tabel inferensi atau log produksi Anda.
Skema input identik untuk evaluasi online dan offline.
Untuk informasi umum tentang set evaluasi, lihat Set evaluasi (MLflow 2).
Skema input evaluasi
Tabel berikut menunjukkan skema input dari "Agent Evaluation". Dua kolom terakhir tabel mengacu pada cara input diberikan ke panggilan mlflow.evaluate(). Lihat Memberikan masukan ke proses evaluasi untuk detailnya.
| Kolom | Jenis data | Deskripsi | Aplikasi diberikan sebagai argumen input | Output yang sudah dihasilkan sebelumnya |
|---|---|---|---|---|
| ID permintaan | string | Pengidentifikasi unik dari permintaan. | Opsional | Opsional |
| permintaan | Lihat Skema untuk permintaan. | Masukan ke aplikasi untuk dievaluasi, pertanyaan atau pertanyaan pengguna. Misalnya, {'messages': [{"role": "user", "content": "What is RAG"}]} atau "Apa itu RAG?". Ketika request disediakan sebagai string, string akan diubah menjadi messages sebelum diteruskan ke agen Anda. |
Wajib | Wajib |
| respons | Lihat Skema untuk respons. | Respons yang dihasilkan oleh aplikasi yang sedang dievaluasi. | Dihasilkan oleh Evaluasi Agen | Opsional. Jika tidak disediakan, maka berasal dari Jejak. Baik response atau trace diperlukan. |
| fakta yang diharapkan | array string | Daftar fakta yang diharapkan dalam output model. Lihat expected_facts panduan. |
Opsional | Opsional |
| respon yang diharapkan | string | Jawaban kebenaran dasar (benar) untuk permintaan input. Lihat expected_response panduan. |
Opsional | Opsional |
| Panduan |
guidelines Pedoman |
Kamus bernama atau daftar pedoman yang diharapkan dipatuhi oleh output model. Lihat guidelines panduan. |
Opsional | Opsional |
| konteks_diperoleh_diharapkan | array | Array objek yang berisi konteks yang diambil yang diharapkan untuk permintaan (jika aplikasi menyertakan langkah pengambilan). Skema array | Opsional | Opsional |
| konteks_diperoleh | array | Hasil pengambilan yang dihasilkan oleh retriever dalam aplikasi yang sedang dievaluasi. Jika beberapa langkah pengambilan ada dalam aplikasi, ini adalah hasil pengambilan dari langkah terakhir (secara kronologis dalam jejak). Skema array | Dihasilkan oleh Evaluasi Agen | Opsional. Jika tidak disediakan, maka berasal dari jejak yang disediakan. |
| jejak | String JSON dari Penelusuran MLflow | MLflow Trace dari eksekusi aplikasi pada permintaan yang bersangkutan. | Dihasilkan oleh Evaluasi Agen | Opsional. Baik response atau trace diperlukan. |
expected_facts Pedoman
Bidang expected_facts menentukan daftar fakta yang diharapkan muncul dalam respons model yang benar untuk permintaan input tertentu. Artinya, respons model dianggap benar jika berisi fakta-fakta ini, terlepas dari bagaimana respons diungkapkan.
Termasuk hanya fakta yang diperlukan, dan meninggalkan fakta yang tidak benar-benar diperlukan dalam jawaban, memungkinkan Evaluasi Agen untuk memberikan sinyal yang lebih kuat pada kualitas output.
Anda dapat menentukan paling banyak salah satu dari expected_facts dan expected_response. Jika Anda menentukan keduanya, kesalahan akan dilaporkan. Databricks merekomendasikan penggunaan expected_facts, karena ini adalah pedoman yang lebih spesifik yang membantu Evaluasi Agen menilai kualitas respons yang dihasilkan secara lebih efektif.
guidelines Pedoman
Bidang guidelines menentukan panduan yang ditetapkan yang harus dipatuhi respons model yang benar.
guidelines dapat diekspresikan dalam dua format:
- Daftar pedoman (
List[str]) menyediakan satu set pedoman. - Pedoman bernama (
Dict[str, List[str]]) menyediakan pemetaan dari nama pedoman tertentu ke sebuah array pedoman yang sesuai dengan nama tersebut. Pedoman bernama memerlukandatabricks-agents >= 0.16.0.
Panduan dapat merujuk ke berbagai sifat respons, termasuk elemen gaya atau terkait konten. Untuk sinyal yang paling kuat tentang kepatuhan pedoman, Databricks merekomendasikan penggunaan bahasa berikut:
- "Respons harus ..."
- "Respons tidak boleh ..."
- "Respons dapat secara opsional ..."
Secara khusus, Anda harus merujuk ke permintaan dan respons secara langsung dan meninggalkan ambiguitas sesedikit mungkin dalam pedoman. Untuk panduan yang berlaku untuk seluruh set evaluasi Anda, seperti memastikan respons memiliki nada profesional atau selalu dalam bahasa Inggris, gunakan parameter global_guidelines dalam konfigurasi evaluator sebagai berikut:
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
# Note: You can also just pass an array to `guidelines`.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
# Note: You can also just pass an array to `guidelines`.
"global_guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
}
)
expected_response Pedoman
Bidang expected_response berisi respons yang sepenuhnya terbentuk yang mewakili referensi untuk respons model yang benar. Artinya, respons model dianggap benar jika cocok dengan konten informasi di expected_response. Sebaliknya, expected_facts hanya mencantumkan fakta yang diperlukan untuk muncul dalam respons yang benar dan bukan respons referensi yang sepenuhnya terbentuk.
Mirip dengan expected_facts, expected_response hanya boleh berisi serangkaian fakta minimal yang diperlukan untuk respons yang benar. Termasuk hanya informasi yang diperlukan, dan meninggalkan informasi yang tidak benar-benar diperlukan dalam jawaban, memungkinkan Evaluasi Agen untuk memberikan sinyal yang lebih kuat tentang kualitas output.
Anda dapat menentukan paling banyak salah satu dari expected_facts dan expected_response. Jika Anda menentukan keduanya, kesalahan akan dilaporkan. Databricks merekomendasikan penggunaan expected_facts, karena ini adalah pedoman yang lebih spesifik yang membantu Evaluasi Agen menilai kualitas respons yang dihasilkan secara lebih efektif.
Skema untuk permohonan
Skema permintaan dapat berupa salah satu hal berikut:
- Kamus acak yang dapat diserialkan (misalnya,
Dict[str, Any]) - Jika agen mendukung skema penyelesaian obrolan OpenAI, Anda dapat meneruskan string biasa. Format ini hanya mendukung percakapan bergantian tunggal. String biasa dikonversi ke
messagesformat sebelum"role": "user"diteruskan ke agen Anda. Misalnya, string"What is MLflow?"biasa dikonversi ke{"messages": [{"role": "user", "content": "What is MLflow?"}]}sebelum diteruskan ke agen Anda.
Perhatikan bahwa penilai bawaan bekerja paling baik dengan format apa pun menggunakan skema penyelesaian chat OpenAI . Skema penyelesaian obrolan OpenAI harus memiliki array objek sebagai parameter messages. Bidang messages dapat mengodekan percakapan lengkap.
Contoh berikut menunjukkan beberapa opsi yang mungkin di kolom request yang sama dari himpunan data evaluasi:
import pandas as pd
data = {
"request": [
# Plain string. Plain strings are transformed to the `messages` format before being passed to your agent.
"What is the difference between reduceByKey and groupByKey in Spark?",
# OpenAI chat completion schema. Use the `messages` field for a single- or multi-turn chat.
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# SplitChatMessagesRequest. Use the `query` and `history` fields for a single- or multi-turn chat.
{
"query": "Explain broadcast variables in Spark. How do they enhance performance?",
"history": [
{
"role": "user",
"content": "What are broadcast variables?"
},
{
"role": "assistant",
"content": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine."
}
]
},
# Arbitrary format. These must be JSON-serializable and are passed directly to your agent.
{
"message_history": [
{
"user_0": "What are broadcast variables?",
"assistant_0": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine.",
}
],
"last_user_request": "How can you minimize data shuffling in Spark?"
},
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question",
"expected response for fourth question",
]
}
eval_dataset = pd.DataFrame(data)
Skema untuk respons
Skema respons, mirip dengan skema permintaan, bisa menjadi salah satu hal berikut:
- Sebuah kamus sebarang yang dapat diserialisasi (misalnya,
Dict[str, Any]). - Jika agen mendukung skema penyelesaian obrolan OpenAI, Anda dapat meneruskan string biasa. Format ini hanya mendukung percakapan bergantian tunggal. String biasa dikonversi ke format
choices. Misalnya, string biasa"MLFlow is a framework."dikonversi ke{"choices": [{"message": {"content": "MLFlow is a framework."}}]}.
Skema untuk array dalam input evaluasi
Skema array expected_retrieved_context dan retrieved_context diperlihatkan dalam tabel berikut:
| Kolom | Jenis data | Deskripsi | Aplikasi diteruskan sebagai argumen input | Output yang dihasilkan sebelumnya disediakan |
|---|---|---|---|---|
| isi | string | Konten konteks yang diambil. String dalam format apa pun, seperti HTML, teks biasa, atau Markdown. | Opsional | Opsional |
| doc_uri | string | Pengidentifikasi unik (URI) dokumen induk tempat potongan berasal. | Wajib | Wajib |
Metrik komputasi
Kolom dalam tabel berikut menunjukkan data yang disertakan dalam input, dan ✓ menunjukkan bahwa metrik didukung saat data tersebut disediakan.
Untuk detail tentang ukuran metrik ini, lihat Bagaimana kualitas, biaya, dan latensi dinilai oleh Evaluasi Agen (MLflow 2).
| Metrik terhitung | request |
request dan expected_response |
request, expected_response, expected_retrieved_context, dan guidelines |
request dan expected_retrieved_context |
request dan guidelines |
|---|---|---|---|---|---|
response/llm_judged/relevance_to_query/rating |
✓ | ✓ | ✓ | ||
response/llm_judged/safety/rating |
✓ | ✓ | ✓ | ||
response/llm_judged/groundedness/rating |
✓ | ✓ | ✓ | ||
retrieval/llm_judged/chunk_relevance_precision |
✓ | ✓ | ✓ | ||
agent/total_token_count |
✓ | ✓ | ✓ | ||
agent/input_token_count |
✓ | ✓ | ✓ | ||
agent/output_token_count |
✓ | ✓ | ✓ | ||
response/llm_judged/correctness/rating |
✓ | ✓ | |||
retrieval/llm_judged/context_sufficiency/rating |
✓ | ✓ | |||
retrieval/ground_truth/document_recall |
✓ | ✓ | |||
response/llm_judged/guideline_adherence/rating |
✓ | ✓ |