Skema input Evaluasi Agen (MLflow 2)

Penting

Databricks merekomendasikan penggunaan MLflow 3 untuk mengevaluasi dan memantau aplikasi GenAI. Halaman ini menjelaskan Evaluasi Agen MLflow 2.

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 memerlukan databricks-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 messages format 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