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ş.
- MLflow 3 hakkında bilgi için Öğretici: GenAI uygulamasını değerlendirme ve geliştirme'ye bakınız.
Bu makalede, yapay zeka uygulamanızı geliştirirken değerlendirmeyi çalıştırma ve sonuçları görüntüleme işlemleri açıklanır. Dağıtılan aracı izleme hakkında bilgi için bkz. Üretim ortamında GenAI uygulamalarını izleme.
Bir temsilciyi değerlendirmek için bir değerlendirme kümesini belirlemeniz gerekir. En azından değerlendirme kümesi, uygulamanıza yönelik, seçilmiş bir değerlendirme istekleri kümesinden veya aracı kullanıcılarının izlemelerinden gelebilen bir istek kümesidir. Daha fazla ayrıntı için bkz . Değerlendirme kümeleri (MLflow 2) ve Aracı Değerlendirme giriş şeması (MLflow 2).
Bir değerlendirme yap
Değerlendirme çalıştırmak için, MLflow API'sinden mlflow.evaluate() yöntemini kullanarak Databricks'te Aracı Değerlendirmesi'ni etkinleştirmek için model_type'yi databricks-agent olarak belirtin ve yerleşik yapay zeka hakemlerini etkinleştirin.
Aşağıdaki örnek, yanıtların yönergelere uymaması durumunda değerlendirmenin başarısız olmasına neden olan global yönergeler yapay zeka yargıcı için bir dizi genel yanıt yönergesini belirtir. Temsilcinizi bu yöntemle değerlendirmek için istek başına etiketler toplamanız gerekmez.
import mlflow
from mlflow.deployments import get_deploy_client
# The guidelines below will be used to evaluate any response of the agent.
global_guidelines = {
"rejection": ["If the request is unrelated to Databricks, the response must should be a rejection of the request"],
"conciseness": ["If the request is related to Databricks, the response must should be concise"],
"api_code": ["If the request is related to Databricks and question about API, the response must have code"],
"professional": ["The response must be professional."]
}
eval_set = [{
"request": {"messages": [{"role": "user", "content": "What is the difference between reduceByKey and groupByKey in Databricks Spark?"}]}
}, {
"request": "What is the weather today?",
}]
# Define a very simple system-prompt agent.
@mlflow.trace(span_type="AGENT")
def llama3_agent(messages):
SYSTEM_PROMPT = """
You are a chatbot that answers questions about Databricks.
For requests unrelated to Databricks, reject the request.
"""
return get_deploy_client("databricks").predict(
endpoint="databricks-meta-llama-3-3-70b-instruct",
inputs={"messages": [{"role": "system", "content": SYSTEM_PROMPT}, *messages]}
)
# Evaluate the Agent with the evaluation set and log it to the MLFlow run "system_prompt_v0".
with mlflow.start_run(run_name="system_prompt_v0") as run:
mlflow.evaluate(
data=eval_set,
model=lambda request: llama3_agent(**request),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": global_guidelines
}
}
)
Sonuçlar, MLflow Çalıştırma sayfasındaki İzlemeler sekmesinde bulunur:
Yukarıdaki örneğin sonuçlarını gösteren MLFlow kullanıcı arabirimini 
Bu örnek, gerçek etiketler gerekmeden çalıştırılabilen aşağıdaki değerlendirmeleri yürütür: Yönerge uyumluluğu, Sorguya uygunluk, Güvenlik.
Bir retriever ile ajan kullanırsanız, aşağıdaki değerlendirmeler çalıştırılır: Temellendirilmişlik, Öbek ilgisi
mlflow.evaluate() ayrıca her değerlendirme kaydı için gecikme süresi ve maliyet ölçümlerini hesaplar ve belirli bir çalıştırma için tüm girişlerde sonuçları bir araya ekler. Bunlar değerlendirme sonuçları olarak adlandırılır. Değerlendirme sonuçları, model parametreleri gibi diğer komutlar tarafından günlüğe kaydedilen bilgilerle birlikte ana çalıştırma sırasında günlüğe kaydedilir. MLflow çalıştırması dışında mlflow.evaluate() çağırırsanız, yeni bir çalıştırma oluşturulur.
Gerçek değer etiketleriyle değerlendirme
Aşağıdaki örnek, her bir satır için expected_facts ve guidelines gerçek etiketlerini belirtir; bu etiketler sırasıyla doğruluk ve yönerge yargılayıcılarını çalıştıracaktır. Bireysel değerlendirmeler, her satır için gerçek durum etiketleri kullanılarak ayrı ayrı ele alınmaktadır.
%pip install databricks-agents
dbutils.library.restartPython()
import mlflow
from mlflow.types.llm import ChatCompletionResponse, ChatCompletionRequest
from mlflow.deployments import get_deploy_client
import dataclasses
eval_set = [{
"request": "What is the difference between reduceByKey and groupByKey in Databricks Spark?",
"expected_facts": [
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
],
"guidelines": ["The response must be concice and show a code snippet."]
}, {
"request": "What is the weather today?",
"guidelines": ["The response must reject the request."]
}]
# Define a very simple system-prompt agent.
@mlflow.trace(span_type="AGENT")
def llama3_agent(messages):
SYSTEM_PROMPT = """
You are a chatbot that answers questions about Databricks.
For requests unrelated to Databricks, reject the request.
"""
return get_deploy_client("databricks").predict(
endpoint="databricks-meta-llama-3-3-70b-instruct",
inputs={"messages": [{"role": "system", "content": SYSTEM_PROMPT}, *messages]}
)
# Evaluate the agent with the evaluation set and log it to the MLFlow run "system_prompt_v0".
with mlflow.start_run(run_name="system_prompt_v0") as run:
mlflow.evaluate(
data=eval_set,
model=lambda request: llama3_agent(**request),
model_type="databricks-agent"
)
Bu örnek, aşağıdakilere ek olarak yukarıdakilerle aynı yargıçları çalıştırır: Doğruluk, İlgi, Güvenlik
Bir aracıyı bir retriever ile kullanırsanız, aşağıdaki değerlendirme yapılır: Bağlam yeterliliği
Gereksinimler
çalışma alanınız için iş ortağı destekli yapay zeka özellikleri etkinleştirilmelidir.
Değerlendirme çalıştırmasına girdiler sağlayın
Değerlendirme çalıştırmasına veri sağlamanın iki yolu vardır:
Değerlendirme kümesiyle karşılaştırmak için önceden oluşturulmuş çıkışlar sağlayın. Bu seçenek, üretime dağıtılmış olan bir uygulamadan gelen çıkışları değerlendirmek veya değerlendirme yapılandırmaları arasında değerlendirme sonuçlarını karşılaştırmak istiyorsanız önerilir.
Bu seçenekle, aşağıdaki kodda gösterildiği gibi bir değerlendirme kümesi belirtirsiniz. Değerlendirme kümesi önceden oluşturulmuş çıkışları içermelidir. Daha ayrıntılı örnekler için bkz Örnek: Daha önce oluşturulan çıkışları Aracı Değerlendirmesine nasıl geçireceğiniz.
evaluation_results = mlflow.evaluate( data=eval_set_with_chain_outputs_df, # pandas DataFrame with the evaluation set and application outputs model_type="databricks-agent", )Uygulamayı giriş bağımsız değişkeni olarak geçirin.
mlflow.evaluate(), değerlendirme kümesindeki her giriş için uygulamaya çağrılar ve oluşturulan her çıkış için kalite değerlendirmelerini ve diğer ölçümleri raporlar. Uygulamanız MLflow İzleme etkinken MLflow kullanılarak kaydedildiyse veya uygulamanız bir defterde Python işlevi olarak uygulandıysa bu seçenek önerilir. Uygulamanız Databricks dışında geliştirilmişse veya Databricks dışında dağıtılmışsa bu seçenek önerilmez.Bu seçenekle, aşağıdaki kodda gösterildiği gibi işlev çağrısında değerlendirme kümesini ve uygulamayı belirtirsiniz. Daha ayrıntılı örnekler için Uygulamayı Aracı Değerlendirmesine Geçirme Örneği bölümüne bakın.
evaluation_results = mlflow.evaluate( data=eval_set_df, # pandas DataFrame containing just the evaluation set model=model, # Reference to the MLflow model that represents the application model_type="databricks-agent", )
Değerlendirme kümesi şeması hakkında ayrıntılı bilgi için bkz. Aracı Değerlendirme giriş şeması (MLflow 2).
Değerlendirme çıktıları
Agent Değerlendirmesi, çıkışlarını mlflow.evaluate() veri çerçeveleri olarak döndürür ve ayrıca bu çıkışları MLflow çalıştırmasına kaydeder. Notebook veya ilgili MLflow çalışmasının sayfasından çıkışları inceleyebilirsiniz.
Not defterini gözden geçir
Aşağıdaki kod, not defterinizden bir değerlendirme çalıştırmasının sonuçlarını gözden geçirmenin bazı örneklerini gösterir.
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
###
# Run evaluation
###
evaluation_results = mlflow.evaluate(..., model_type="databricks-agent")
###
# Access aggregated evaluation results across the entire evaluation set
###
results_as_dict = evaluation_results.metrics
results_as_pd_df = pd.DataFrame([evaluation_results.metrics])
# Sample usage
print(f"The percentage of generated responses that are grounded: {results_as_dict['response/llm_judged/groundedness/percentage']}")
###
# Access data about each question in the evaluation set
###
per_question_results_df = evaluation_results.tables['eval_results']
# Show information about responses that are not grounded
per_question_results_df[per_question_results_df["response/llm_judged/groundedness/rating"] == "no"].display()
per_question_results_df veri çerçevesi, giriş şemasındaki tüm sütunları ve her isteğe özgü tüm değerlendirme sonuçlarını içerir. Hesaplanan sonuçlar hakkında daha fazla ayrıntı için bkz. Kalite, maliyet ve gecikme süresi Aracı Değerlendirmesi (MLflow 2) tarafından nasıl değerlendirilir?
MLflow kullanıcı arabirimini kullanarak çıkışı gözden geçirme
Değerlendirme sonuçları MLflow kullanıcı arabiriminde de kullanılabilir. MLflow kullanıcı arabirimine erişmek için, not defterinin sağ kenar çubuğundaki
ve ardından ilgili çalıştırmada Deneme simgesine tıklayın veya çalıştırdığınız mlflow.evaluate()not defteri hücresinin hücre sonuçlarında görünen bağlantılara tıklayın.
Tek bir işlem için değerlendirme sonuçlarını inceleme
Bu bölümde, tek bir çalışma için değerlendirme sonuçlarının nasıl gözden geçirileceği açıklanır. Değerlendirme sonuçlarını çalıştırmalar arasında karşılaştırmak için bkz Çalıştırmalar arasında değerlendirme sonuçlarını karşılaştırma.
LLM yargıçlarının kalite değerlendirmelerine genel bakış
databricks-agents sürüm 0.3.0 ve sonrasında, istek başına yapılan yargıç değerlendirmeleri kullanılabilir.
Değerlendirme kümesindeki her isteğin LLM tarafından değerlendirilen kalitesine genel bir bakış görmek için MLflow Çalıştırma sayfasındaki İzlemeler sekmesine tıklayın.
)
Bu genel bakış, her istek için farklı hakimlerin değerlendirmelerini ve bu değerlendirmeleri temel alan her isteğin kalite geçiş/başarısız durumunu gösterir.
Diğer ayrıntılar için, tabloda bir satıra tıklayarak bu isteğin ayrıntılar sayfasını görüntüleyin. Ayrıntılar sayfasında Ayrıntılı izleme görünümünü görüntüle'ye tıklayabilirsiniz.
Tam değerlendirme kümesi genelinde toplanan sonuçlar
Toplam sonuçları tam değerlendirme kümesinde görmek için Genel Bakış sekmesine (sayısal değerler için) veya Model ölçümleri sekmesine (grafikler için) tıklayın.
Değerlendirme sonuçlarını çalışma bazında karşılaştırın
Aracı uygulamanızın değişikliklere nasıl yanıt verdiğini görmek için çalıştırmalar arasında değerlendirme sonuçlarını karşılaştırmak önemlidir. Sonuçları karşılaştırmak, değişikliklerinizin kaliteyi olumlu yönde etkilediğini anlamanıza veya değişen davranış sorunlarını gidermenize yardımcı olabilir.
Çalıştırmalardaki sonuçları karşılaştırmak için MLflow Denemesi sayfasını kullanın. Deneme sayfasına erişmek için, not defterinin sağ kenar çubuğundaki Deneme simgesine tıklayın veya çalıştırdığınız not defteri hücresinin hücre sonuçlarında görünen bağlantılara tıklayın.
Çalıştırmalar arasında istek başına sonuçları karşılaştırma
Çalıştırmalar arasında her bir isteğin verilerini karşılaştırmak için, aşağıdaki ekran görüntüsünde gösterilen yapıt değerlendirme görünümü simgesine tıklayın. Tablo, değerlendirme kümesindeki her soruyu gösterir. Görüntülenecek sütunları seçmek için açılan menüleri kullanın. Hücrenin içeriğinin tamamını görüntülemek için hücreye tıklayın.
Çalıştırmalar arasında birleştirilmiş sonuçları karşılaştırın
Bir çalıştırmanın veya farklı çalıştırmaların toplu sonuçlarını karşılaştırmak için aşağıdaki ekran görüntüsünde gösterilen grafik görünümü simgesine tıklayın. Bu, seçilen çalıştırma için toplanan sonuçları görselleştirmenize ve geçmiş çalıştırmaları karşılaştırmanıza olanak tanır.
Hangi yargıçlar görev alır?
Varsayılan olarak, her değerlendirme kaydı için Aracı Değerlendirmesi, kayıtta bulunan bilgilerle en iyi eşleşen yargıçların alt kümesini uygular. Specifically:
- Kayıt bir gerçek yanıtı içeriyorsa, Aracı Değerlendirme
context_sufficiency,groundedness,correctness,safetyveguideline_adherenceyargıçlarını uygular. - Kayıt, gerçek bir yanıt içermiyorsa Aracı Değerlendirme,
chunk_relevance,groundedness,relevance_to_query,safetyveguideline_adherenceyargıçlarını uygular.
Daha fazla ayrıntı için bkz:
- Yerleşik yargıçların bir alt kümesini çalıştırma
- Özel yapay zeka yargıçları
- Kalite, maliyet ve gecikme süresi Aracı Değerlendirmesi (MLflow 2) tarafından nasıl değerlendirilir?
LLM hakimlere duyulan güven ve güvenlik bilgileri için bkz. LLM hakimlerin işleyişini sağlayan modeller hakkında bilgiler.
Örnek: Bir uygulamayı Ajan Değerlendirmesine aktarma
Bir uygulamayı mlflow_evaluate()'a iletmek için model bağımsız değişkenini kullanın. Uygulamayı model argümanda geçirmek için 5 seçenek vardır.
- Unity Kataloğu'nda kayıtlı bir model.
- Mevcut MLflow deneyinde günlüğe kaydedilen bir MLflow modeli.
- Not defterine yüklenen bir PyFunc modeli.
- Not defterindeki yerel bir işlev.
- Dağıtılmış ajan uç noktası.
Her seçeneği gösteren kod örnekleri için aşağıdaki bölümlere bakın.
Seçenek 1. Unity Kataloğu'nda kayıtlı model
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "models:/catalog.schema.model_name/1" # 1 is the version number
model_type="databricks-agent",
)
2. Seçenek Geçerli MLflow denemesinde kaydedilmiş olan MLflow modeli
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
# In the following lines, `6b69501828264f9s9a64eff825371711` is the run_id, and `chain` is the artifact_path that was
# passed with mlflow.xxx.log_model(...).
# If you called model_info = mlflow.langchain.log_model() or mlflow.pyfunc.log_model(), you can access this value using `model_info.model_uri`.
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "runs:/6b69501828264f9s9a64eff825371711/chain"
model_type="databricks-agent",
)
3. Seçenek Not defterine yüklenen PyFunc modeli
%pip install databricks-agents==0.16.0 pandas==2.2.3
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = mlflow.pyfunc.load_model(...)
model_type="databricks-agent",
)
Seçenek 4. Not defterindeki yerel işlev
İşlev aşağıdaki gibi biçimlendirilmiş bir giriş alır:
{
"messages": [
{
"role": "user",
"content": "What is MLflow?",
}
],
...
}
İşlev, düz dizede veya serileştirilebilir sözlükte (örneğin, Dict[str, Any]) bir değer döndürmelidir. Yerleşik yargıçlarla en iyi sonuçları elde etme amacıyla Databricks, ChatCompletionResponsegibi bir sohbet biçimi kullanmanızı önerir. Örneğin:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models.",
},
...
}
],
...,
}
Aşağıdaki örnek, temel model uç noktasını sarmalayıp değerlendirmek için yerel bir işlev kullanır:
%pip install databricks-agents==0.16.0 pandas==2.2.3
dbutils.library.restartPython()
import mlflow
import pandas as pd
def model(model_input):
client = mlflow.deployments.get_deploy_client("databricks")
return client.predict(endpoint="endpoints:/databricks-meta-llama-3-3-70b-instruct", inputs={"messages": model_input["messages"]})
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = model
model_type="databricks-agent",
)
Seçenek 5. Dağıtılmış etken yazılım uç noktası
Bu seçenek yalnızca databricks.agents.deploy kullanılarak ve databricks-agents veya üzeri SDK sürümü ile dağıtılan 0.8.0 aracı uç noktalarını kullandığınızda çalışır. Temel modeller veya eski SDK sürümleri için, modeli yerel bir işleve sarmak için Seçenek 4'i kullanın.
%pip install databricks-agents==0.16.0 pandas==2.2.3
dbutils.library.restartPython()
import mlflow
import pandas as pd
# In the following lines, `endpoint-name-of-your-agent` is the name of the agent endpoint.
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "endpoints:/endpoint-name-of-your-agent"
model_type="databricks-agent",
)
Uygulama mlflow_evaluate() çağrısına dahil edildiğinde değerlendirme setini nasıl geçersiniz?
Aşağıdaki kodda, data değerlendirme kümenizi içeren bir pandas DataFrame'dir. Bunlar basit örneklerdir. Ayrıntılar için giriş şeması bakın.
# You do not have to start from a dictionary - you can use any existing pandas or Spark DataFrame with this schema.
# Minimal evaluation set
bare_minimum_eval_set_schema = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
}]
# Complete evaluation set
complete_eval_set_schema = [
{
"request_id": "your-request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
# In `expected_retrieved_context`, `content` is optional, and does not provide any additional functionality.
"content": "Answer segment 1 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_1",
},
{
"content": "Answer segment 2 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_2",
},
],
"expected_response": "There's no significant difference.",
}]
# Convert dictionary to a pandas DataFrame
eval_set_df = pd.DataFrame(bare_minimum_eval_set_schema)
# Use a Spark DataFrame
import numpy as np
spark_df = spark.table("catalog.schema.table") # or any other way to get a Spark DataFrame
eval_set_df = spark_df.toPandas()
Örnek: Önceden oluşturulmuş çıkışları Ajan Değerlendirmesine aktarma
Bu bölümde, daha önce oluşturulan çıkışların mlflow_evaluate() çağrısında nasıl geçirildiği açıklanmaktadır. Gerekli değerlendirme kümesi şeması için bkz. Aracı Değerlendirme giriş şeması (MLflow 2).
Aşağıdaki kodda data, değerlendirme kümenizi ve uygulama tarafından oluşturulan çıkışları içeren bir pandas DataFrame'dir. Bunlar basit örneklerdir. Ayrıntılar için giriş şeması bakın.
%pip install databricks-agents==0.16.0 pandas==2.2.3
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_with_app_outputs_df, # pandas DataFrame with the evaluation set and application outputs
model_type="databricks-agent",
)
# You do not have to start from a dictionary - you can use any existing pandas or Spark DataFrame with this schema.
# Minimum required input
bare_minimum_input_schema = [
{
"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.",
}]
# Input including optional arguments
complete_input_schema = [
{
"request_id": "your-request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
# In `expected_retrieved_context`, `content` is optional, and does not provide any additional functionality.
"content": "Answer segment 1 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_1",
},
{
"content": "Answer segment 2 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_2",
},
],
"expected_response": "There's no significant difference.",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"retrieved_context": [
{
# In `retrieved_context`, `content` is optional. If provided, the Databricks Context Relevance LLM Judge is executed to check the `content`'s relevance to the `request`.
"content": "reduceByKey reduces the amount of data shuffled by merging values before shuffling.",
"doc_uri": "doc_uri_2_1",
},
{
"content": "groupByKey may lead to inefficient data shuffling due to sending all values across the network.",
"doc_uri": "doc_uri_6_extra",
},
],
# You can also just pass an array of guidelines directly to guidelines, but Databricks recommends naming them with a dictionary.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}]
# Convert dictionary to a pandas DataFrame
eval_set_with_app_outputs_df = pd.DataFrame(bare_minimum_input_schema)
# Use a Spark DataFrame
import numpy as np
spark_df = spark.table("catalog.schema.table") # or any other way to get a Spark DataFrame
eval_set_with_app_outputs_df = spark_df.toPandas()
Örnek: LangGraph'dan gelen yanıtları işlemek için özel bir işlev kullanma
LangGraph aracıları, özellikle de sohbet işlevselliğine sahip olanlar, tek bir çıkarım çağrısı için birden çok ileti döndürebilir. Aracın yanıtını, Acente Değerlendirme'nin desteklediği bir biçime dönüştürmek kullanıcının sorumluluğundadır.
Bir yaklaşım, yanıtı işlemek için özel bir işlev kullanmaktır. Aşağıdaki örnekte, LangGraph modelinden son sohbet iletisini ayıklayan özel bir işlev gösterilmektedir. Bu işlev daha sonra mlflow.evaluate()'da ground_truth sütunuyla karşılaştırılabilir tek bir dize yanıtı döndürmek için kullanılır.
Örnek kod aşağıdaki varsayımları yapar:
- Model , {"messages": [{"role": "user", "content": "hello"}]} biçiminde girişi kabul eder.
- Model, ["yanıt 1", "yanıt 2"] biçiminde bir dize listesi döndürür.
Aşağıdaki kod, birleştirilmiş yanıtları şu biçimde hakime gönderir: "yanıt 1nresponse2"
import mlflow
import pandas as pd
from typing import List
loaded_model = mlflow.langchain.load_model(model_uri)
eval_data = pd.DataFrame(
{
"inputs": [
"What is MLflow?",
"What is Spark?",
],
"expected_response": [
"MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize their AI applications while controlling costs and managing access to models and data. With over 30 million monthly downloads, thousands of organizations rely on MLflow each day to ship AI to production with confidence.",
"Apache Spark is an open-source, distributed computing system designed for big data processing and analytics. It was developed in response to limitations of the Hadoop MapReduce computing model, offering improvements in speed and ease of use. Spark provides libraries for various tasks such as data ingestion, processing, and analysis through its components like Spark SQL for structured data, Spark Streaming for real-time data processing, and MLlib for machine learning tasks",
],
}
)
def custom_langgraph_wrapper(model_input):
predictions = loaded_model.invoke({"messages": model_input["messages"]})
# Assuming `predictions` is a list of strings
return predictions.join("\n")
with mlflow.start_run() as run:
results = mlflow.evaluate(
custom_langgraph_wrapper, # Pass the function defined above
data=eval_data,
model_type="databricks-agent",
)
print(results.metrics)
Ölçütlerle pano oluştur
Temsilcinizin kalitesini yinelerken, zaman içinde kalitenin nasıl arttığını gösteren bir panoyu paydaşlarınızla paylaşmak isteyebilirsiniz. MLflow değerlendirme çalıştırmalarınızdan ölçümleri ayıklayabilir, değerleri Delta tablosuna kaydedebilir ve bir pano oluşturabilirsiniz.
Aşağıdaki örnek, not defterinizdeki en son değerlendirme çalıştırmasından ölçüm değerlerini ayıklamayı ve kaydetmeyi gösterir:
uc_catalog_name = "catalog"
uc_schema_name = "schema"
table_name = "results"
eval_results = mlflow.evaluate(
model=logged_agent_info.model_uri, # use the logged Agent
data=evaluation_set, # Run the logged Agent for all queries defined above
model_type="databricks-agent", # use Agent Evaluation
)
# The `append_metrics_to_table function` is defined below
append_metrics_to_table("<identifier-for-table>", eval_results.metrics, f"{uc_catalog_name}.{uc_schema_name}.{table_name}")
Aşağıdaki örnek, MLflow denemenize kaydettiğiniz geçmiş çalıştırmalar için ölçüm değerlerini ayıklamayı ve kaydetmeyi gösterir.
import pandas as pd
def get_mlflow_run(experiment_name, run_name):
runs = mlflow.search_runs(experiment_names=[experiment_name], filter_string=f"run_name = '{run_name}'", output_format="list")
if len(runs) != 1:
raise ValueError(f"Found {len(runs)} runs with name {run_name}. {run_name} must identify a single run. Alternatively, you can adjust this code to search for a run based on `run_id`")
return runs[0]
run = get_mlflow_run(experiment_name ="/Users/<user_name>/db_docs_mlflow_experiment", run_name="evaluation__2024-10-09_02:27:17_AM")
# The `append_metrics_to_table` function is defined below
append_metrics_to_table("<identifier-for-table>", run.data.metrics, f"{uc_catalog_name}.{uc_schema_name}.{table_name}")
Artık bu verileri kullanarak bir pano oluşturabilirsiniz.
Aşağıdaki kod, önceki örneklerde kullanılan işlevi append_metrics_to_table tanımlar.
# Definition of `append_metrics_to_table`
def append_metrics_to_table(run_name, mlflow_metrics, delta_table_name):
data = mlflow_metrics.copy()
# Add identifying run_name and timestamp
data["run_name"] = run_name
data["timestamp"] = pd.Timestamp.now()
# Remove metrics with error counts
data = {k: v for k, v in mlflow_metrics.items() if "error_count" not in k}
# Convert to a Spark DataFrame(
metrics_df = pd.DataFrame([data])
metrics_df_spark = spark.createDataFrame(metrics_df)
# Append to the Delta table
metrics_df_spark.write.mode("append").saveAsTable(delta_table_name)
LLM yargıçlarını güçlendiren modeller hakkında bilgi
- LLM hakimleri, Microsoft tarafından sağlanan Azure OpenAI dahil olmak üzere GenAI uygulamalarınızı değerlendirmek için üçüncü taraf hizmetleri kullanabilir.
- Azure OpenAI için Databricks, Kötüye Kullanım İzleme özelliğini kullanmamayı seçmiş ve bu nedenle Azure OpenAI ile hiçbir istem veya yanıt depolanmamaktadır.
- Coğrafi bölgeler arası işleme devre dışı bırakıldığında LLM, çalışma alanının Databricks Geo içindeki içeriği değerlendirir. Uygun coğrafi bölge modeli yoksa, yargıç coğrafi kısıtlama hatası döndürür. Coğrafi bölgeler arası işleme etkinleştirildiğinde LLM yargıçları diğer Coğrafi Bölgelerdeki içeriği işleyebilir.
- İş ortağı destekli yapay zeka özelliklerinin devre dışı bırakılması, LLM yargıcının iş ortağı tarafından desteklenen modelleri çağırmasını önler. Kendi modelinizi sağlayarak LLM yargıçlarını kullanmaya devam edebilirsiniz.
- LLM judge'ları, müşterilerin GenAI aracılarını/uygulamalarını değerlendirmesine yardımcı olmaya yöneliktir ve LLM judge çıktıları LLM'yi eğitmek, iyileştirmek veya ince ayar yapmak için kullanılmamalıdır.