Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
- MLflow 3'te değerlendirme ve izlemeye giriş için bkz. Yapay zeka aracılarını değerlendirme ve izleme.
- MLflow 3'e geçiş hakkında bilgi için bkz. Aracı Değerlendirmesi'nden MLflow 3'e geçiş.
- Bu konudaki MLflow 3 bilgileri için bkz. MLflow değerlendirme veri kümeleri oluşturma.
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 |
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önergelerdatabricks-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
messagesbiç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
choicesbiç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 |
✓ | ✓ |