Aracı Değerlendirme giriş şeması (MLflow 2)

Important

Databricks, GenAI uygulamalarını değerlendirmek ve izlemek için MLflow 3 kullanılmasını önerir. Bu sayfada MLflow 2 Aracı Değerlendirmesi açıklanmaktadır.

Bu makalede, uygulamanızın kalitesini, maliyetini ve gecikme süresini değerlendirmek için Aracı Değerlendirmesi tarafından gereken giriş şeması açıklanmaktadır.

  • Geliştirme sırasında değerlendirme çevrimdışı gerçekleştirilir ve değerlendirme kümesi Aracı Değerlendirmesi için gerekli bir giriştir.
  • Bir uygulama üretim aşamasındayken, Aracı Değerlendirmesine yapılan tüm girişler çıkarım tablolarınızdan veya üretim günlüklerinizden gelir.

Giriş şeması hem çevrimiçi hem de çevrimdışı değerlendirmeler için aynıdır.

Değerlendirme kümeleri hakkında genel bilgi için bkz . Değerlendirme kümeleri (MLflow 2).

Değerlendirme giriş şeması

Aşağıdaki tabloda Aracı Değerlendirmesi'nin giriş şeması gösterilmektedir. Tablonun son iki sütunu, mlflow.evaluate() çağrısına girişin nasıl sağlandığına başvurur. Ayrıntılar için bkz. Değerlendirme çalıştırması için veri sağlama.

Column Veri türü Açıklama Uygulama giriş bağımsız değişkeni olarak geçirildi Daha önce oluşturulan çıkışlar sağlandı
request_id string İsteğin benzersiz tanımlayıcısı. Opsiyonel Opsiyonel
talep İstekiçin Şemasına bakınız. Değerlendirme için uygulamaya yapılacak giriş, kullanıcının sorusu veya sorgusudur. Örneğin, {'messages': [{"role": "user", "content": "What is RAG"}]} "RAG nedir?". Dize olarak sağlandığında request , aracınıza geçirilmeden önce öğesine dönüştürülür messages . Zorunlu Zorunlu
yanıt Yanıt için bkz.Şeması. Değerlendirilen uygulama tarafından oluşturulan yanıt. Aracı Değerlendirmesi tarafından oluşturuldu Optional. Sağlanmazsa İzleme'den türetilir. veya responsetrace gereklidir.
beklenen gerçekler dize dizisi Model çıkışında beklenen olguların listesi. expected_facts yönergelerine bakın. Opsiyonel Opsiyonel
beklenen_cevap string Giriş isteği için temel-gerçek (doğru) yanıtı. expected_response yönergelerine bakın. Opsiyonel Opsiyonel
Yönerge -leri guidelines yönergeleri Model çıktısının uyması beklenen adlandırılmış bir sözlük veya yönerge listesi. guidelines yönergelerine bakın. Opsiyonel Opsiyonel
beklenen_alınan_bağlam Dizi İstek için beklenen alınan bağlamı içeren nesne dizisi (uygulama bir alma adımı içeriyorsa). dizi şeması Opsiyonel Opsiyonel
alınan_bağlam Dizi Değerlendirilmekte olan uygulamada retriever tarafından oluşturulan alma sonuçları. Uygulamada birden çok alma adımı varsa, bu son adımdan alınan alma sonuçlarıdır (kronolojik olarak izlemede). dizi şeması Aracı Değerlendirmesi tarafından oluşturuldu Optional. Sağlanmazsa sağlanan izlemeden türetilir.
trace MLflow İzleme JSON dizesi İlgili talep üzerine uygulamanın yürütülmesi sırasında MLflow Takibi. Aracı Değerlendirmesi tarafından oluşturuldu Optional. veya responsetrace gereklidir.

expected_facts Yönerge -leri

expected_facts alanı, belirli bir giriş isteği için herhangi bir doğru model yanıtında görünmesi beklenen olguların listesini belirtir. Yani, yanıt nasıl ifade edilirse ifade edilsin, model yanıtı bu olguları içeriyorsa doğru kabul edilir.

Yalnızca gerekli olguları dahil etmek ve yanıtta kesinlikle gerekli olmayan olguları dışarıda bırakmak, Aracı Değerlendirmesi'nin çıkış kalitesi üzerinde daha güçlü bir sinyal sağlamasına olanak tanır.

ve expected_facts'nin en çok birini expected_response belirtebilirsiniz. Her ikisini de belirtirseniz bir hata bildirilir. Databricks, Aracı Değerlendirmesi'nin oluşturulan yanıtların kalitesini daha etkili bir şekilde değerlendirmesine yardımcı olan daha belirgin bir kılavuz olduğundan kullanılmasını önerir expected_facts.

guidelines Yönerge -leri

guidelines alanı, doğru model yanıtlarının uyması gereken bir dizi yönerge belirtir. guidelines iki biçimde ifade edilebilir:

  • Yönergeler listesi (List[str]) tek bir kılavuz kümesi sağlar.
  • Adlandırılmış yönergeler (Dict[str, List[str]]), bu ad için bir yönerge dizisine bir yönerge adı eşlemesi sağlar. Adlandırılmış yönergeler databricks-agents >= 0.16.0gerektirir.

Yönergeler, stil veya içerikle ilgili öğeler de dahil olmak üzere yanıtın çeşitli özelliklerine başvurabilir. Databricks, yönergelere en sağlam şekilde bağlı kalmak için aşağıdaki dili kullanmanızı önerir:

  • "Yanıt ... olmalıdır."
  • Yanıt ... olmamalıdır.
  • "Yanıt isteğe bağlı olarak ..."

Özellikle, istek ve yanıta doğrudan başvurmanız ve yönergelerde mümkün olduğunca az belirsizlik bırakmanız gerekir. Yanıtların profesyonel bir tonda olduğundan veya her zaman İngilizce olduğundan emin olmak gibi değerlendirme kümenizin tamamı için geçerli olan yönergeler için değerlendirici yapılandırmasındaki global_guidelines parametresini aşağıdaki gibi kullanın:

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 Yönerge -leri

alanı, expected_response doğru model yanıtları için bir başvuruyu temsil eden tam biçimlendirilmiş bir yanıt içerir. Yani, içindeki bilgi içeriğiyle expected_responseeşleşiyorsa model yanıtı doğru kabul edilir. Buna karşılık, expected_facts yalnızca doğru yanıtta gösterilmesi gereken ve tam olarak biçimlendirilmiş bir başvuru yanıtı olmayan olguları listeler.

expected_factsbenzer şekilde, expected_response doğru yanıt için gereken en düşük olgu kümesini içermelidir. Yalnızca gerekli bilgileri dahil etmek ve yanıtta kesinlikle gerekli olmayan bilgileri dışarıda bırakmak, Aracı Değerlendirmesi'nin çıkış kalitesi hakkında daha güçlü bir sinyal sağlamasına olanak tanır.

ve expected_facts'nin en çok birini expected_response belirtebilirsiniz. Her ikisini de belirtirseniz bir hata bildirilir. Databricks, Aracı Değerlendirmesi'nin oluşturulan yanıtların kalitesini daha etkili bir şekilde değerlendirmesine yardımcı olan daha belirgin bir kılavuz olduğundan kullanılmasını önerir expected_facts.

İstek için Şeması

İstek şeması aşağıdakilerden biri olabilir:

  • Rastgele serileştirilebilir sözlük (örneğin, Dict[str, Any])
  • Aracı OpenAI sohbet tamamlama şemasını destekliyorsa düz bir dize geçirebilirsiniz. Bu biçim yalnızca tek dönüşlü konuşmaları destekler. Düz dizeler, aracınıza geçirilmeden önce ile messages biçimine dönüştürülür"role": "user". Örneğin, aracınıza geçirilmeden önce düz dizeye "What is MLflow?"{"messages": [{"role": "user", "content": "What is MLflow?"}]} dönüştürülür.

Unutmayın, yerleşik yargıçlar OpenAI sohbet tamamlama şemasıkullanarak herhangi bir biçimde en iyi şekilde çalışır. OpenAI sohbet tamamlama şeması, messages parametresi olarak bir nesne dizisine sahip olmalıdır. Alanı messages , konuşmanın tamamını kodlayabilir.

Aşağıdaki örnekte, değerlendirme veri kümesinin aynı request sütunundaki birkaç olası seçenek gösterilmektedir:

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)

Yanıt için Şema

İstek şemasına benzer yanıt şeması aşağıdakilerden biri olabilir:

  • Rastgele bir serileştirilebilir sözlük (örneğin, Dict[str, Any]).
  • Aracı OpenAI sohbet tamamlama şemasını destekliyorsa düz bir dize geçirebilirsiniz. Bu biçim yalnızca tek dönüşlü konuşmaları destekler. Düz dizeler choices biçimine dönüştürülür. Örneğin, düz dize "MLFlow is a framework."{"choices": [{"message": {"content": "MLFlow is a framework."}}]}dönüştürülür.

Değerlendirme girişi içerisindeki diziler için şema

expected_retrieved_context ve retrieved_context dizilerinin şeması aşağıdaki tabloda gösterilmiştir:

Column Veri türü Açıklama Uygulama giriş bağımsız değişkeni olarak geçirildi Daha önce oluşturulan çıkışlar sağlandı
içerik string Alınan bağlamın içeriği. HTML, düz metin veya Markdown gibi herhangi bir biçimde dize. Opsiyonel Opsiyonel
doc_uri string Öbeğin geldiği üst belgenin benzersiz tanımlayıcısı (URI). Zorunlu Zorunlu

Hesaplanan ölçümler

Aşağıdaki tablodaki sütunlar girişe dahil edilen verileri ve bu veriler sağlandığında ölçümün desteklendiğini gösterir.

Bu ölçümlerin ne kadar ölçüldiği hakkında ayrıntılı bilgi için bkz. Kalite, maliyet ve gecikme süresi Aracı Değerlendirmesi (MLflow 2) tarafından nasıl değerlendirilir?

Hesaplanan ölçümler request request ve expected_response request, expected_response, expected_retrieved_context ve guidelines request ve expected_retrieved_context request ve 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