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
Yeni kullanım örnekleri için Databricks aracı kodu, sunucu yapılandırması ve dağıtım iş akışı üzerinde tam denetim için Databricks Uygulamalarına aracı dağıtmanızı önerir. Bkz. Bir yapay zeka aracısı yazma ve Databricks Uygulamalarında dağıtma. Mevcut bir ajanı taşımak için Model Sunumu'ndan Databricks Uygulamalarına ajan göç ettirme bölümüne bakın.
Özel Ajanları kullanarak yapay zeka ajanlarını kaydedin. Bir ajanı kaydetmek, geliştirme sürecinin temelini oluşturur. Günlük kaydı, aracının kodunun ve yapılandırmasının zamandaki "bir anlık görüntüsünü" yakalar; böylece kalitesini değerlendirebilirsiniz.
Gereksinimler
Bir yapay zeka ajanı oluşturun ve ardından günlüğe kaydedin.
Databricks, databricks-sdken son sürümünün yüklenmesini önerir.
% pip install databricks-sdk
Kod Tabanlı Günlükleme
Databricks, aracıları günlüğe kaydederken MLflow'un Koddan Modeller işlevinin kullanılmasını önerir.
Bu yaklaşımda aracının kodu python dosyası olarak, Python ortamı ise paket listesi olarak yakalanır. Aracı dağıtıldığında, Python ortamı geri yüklenir. Ardından, aracın kodu yürütülerek belleğe yüklenir. Böylelikle, uç nokta çağrıldığında aracı çağırmak mümkün olur.
Bu yaklaşımı mlflow.models.predict() gibi dağıtım öncesi doğrulama API'lerinin kullanımıyla ilişkilendirerek aracının sunum için dağıtıldığında güvenilir bir şekilde çalıştığından emin olabilirsiniz.
Kod tabanlı günlük kaydı örneğini görmek için ResponsesAgent yazma örneği defterlerine bakın.
Günlüğe kaydetme sırasında Model İmzasını Belirleme
Note
Databricks , ResponsesAgent arabirimini kullanarak bir aracı yazmanızı önerir. ResponsesAgent kullanıyorsanız bu bölümü atlayabilirsiniz; MLflow, aracınız için otomatik olarak geçerli bir imza çıkartır.
ResponsesAgent arabirimini kullanmıyorsanız, kayıt sırasında aracınızın MLflow Model İmzasını belirlemek için aşağıdaki yöntemlerden birini kullanmanız gerekir.
- İmzayı el ile tanımlama
- Sağladığınız bir giriş örneğine göre aracı imzasını otomatik olarak oluşturmak için MLflow'un Model İmzası çıkarım özelliklerini kullanın. Bu yaklaşım, imzayı el ile tanımlamaktan daha kullanışlıdır.
MLflow modeli imzası, aracının AI Playground ve inceleme uygulaması gibi aşağı akış araçlarıyla doğru etkileşimde olduğundan emin olmak için girişleri ve çıkışları doğrular. Ayrıca aracıyı etkili bir şekilde kullanma konusunda diğer uygulamalara yol gösterir.
Aşağıdaki LangChain ve PyFunc örnekleri Model İmzası çıkarımını kullanır.
Model İmzasını günlükleme sırasında açıkça tanımlamayı tercih ediyorsanız bakınız: MLflow belgeleri - İmzalı modelleri nasıl günlüğe kaydedeceğiniz.
LangChain ile kod tabanlı günlük kaydı
Aşağıdaki yönergeler ve kod örneği, LangChain ile bir aracıyı nasıl kaydedeceğinizi gösterir.
Kodunuzla bir not defteri veya Python dosyası oluşturun. Bu örnekte, not defteri veya dosya
agent.pyolarak adlandırılır. Not defteri veya dosya, buradalc_agentolarak adlandırılan bir LangChain aracısı içermelidir.not defterine veya dosyaya mlflow.models.set_model(lc_agent) ekleyin.
Sürücü not defteri olarak görev yapmak için yeni bir not defteri oluşturun (bu örnekte adı verilir
driver.py).Sürücü defterinde,
agent.py'ı çalıştırmak ve sonuçları bir MLflow modeline kaydetmek için aşağıdaki kodu kullanın:mlflow.langchain.log_model(lc_model="/path/to/agent.py", resources=list_of_databricks_resources)resourcesparametresi, aracıya hizmet vermek için gereken Databricks tarafından yönetilen kaynakları bildirir. Örneğin, yapay zeka Arama dizini veya temel modele hizmet veren bir hizmet uç noktası. Daha fazla bilgi için bkz. Otomatik kimlik doğrulama geçişi uygulama.Modeli dağıtın. Bkz. Oluşturucu yapay zeka uygulamaları (Model Sunma) için aracı dağıtma.
Sunum ortamı yüklendiğinde,
agent.pyçalıştırılır.lc_agent.invoke(...)bir sunum isteği geldiğinde çağrılır.
import mlflow
code_path = "/Workspace/Users/first.last/agent.py"
config_path = "/Workspace/Users/first.last/config.yml"
# Input example used by MLflow to infer Model Signature
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using langchain
with mlflow.start_run():
logged_agent_info = mlflow.langchain.log_model(
lc_model=code_path,
model_config=config_path, # If you specify this parameter, this configuration is used by agent code. The development_config is overwritten.
artifact_path="agent", # This string is used as the path inside the MLflow model where artifacts are stored
input_example=input_example, # Must be a valid input to the agent
example_no_conversion=True, # Required
)
print(f"MLflow Run: {logged_agent_info.run_id}")
print(f"Model URI: {logged_agent_info.model_uri}")
# To verify that the model has been logged correctly, load the agent and call `invoke`:
model = mlflow.langchain.load_model(logged_agent_info.model_uri)
model.invoke(example)
PyFunc ile kod tabanlı loglama
Aşağıdaki yönergeler ve kod örneği, PyFunc ile bir aracıyı loglamayı nasıl yapacağınızı gösterir.
Kodunuzla bir not defteri veya Python dosyası oluşturun. Bu örnekte, not defteri veya dosya
agent.pyolarak adlandırılır. Not defteri veya dosyaPyFuncClassadlı bir PyFunc sınıfı içermelidir.Not defterine veya dosyaya ekleyin
mlflow.models.set_model(PyFuncClass).Sürücü not defteri olarak görev yapmak için yeni bir not defteri oluşturun (bu örnekte adı verilir
driver.py).Sürücü not defterinde,
agent.pykodunu çalıştırmak ve sonuçları bir MLflow modeline kaydetmek içinlog_model()kullanın.mlflow.pyfunc.log_model(python_model="/path/to/agent.py", resources=list_of_databricks_resources)resourcesparametresi, aracıya hizmet vermek için gereken Databricks tarafından yönetilen kaynakları bildirir. Örneğin, yapay zeka Arama dizini veya temel modele hizmet veren bir hizmet uç noktası. Daha fazla bilgi için bkz. Otomatik kimlik doğrulama geçişi uygulama.Modeli dağıtın. Bkz. Oluşturucu yapay zeka uygulamaları (Model Sunma) için aracı dağıtma.
Sunum ortamı yüklendiğinde,
agent.pyçalıştırılır.PyFuncClass.predict(...)bir sunum isteği geldiğinde çağrılır.
import mlflow
from mlflow.models.resources import (
DatabricksServingEndpoint,
DatabricksVectorSearchIndex,
)
code_path = "/Workspace/Users/first.last/agent.py"
config_path = "/Workspace/Users/first.last/config.yml"
# Input example used by MLflow to infer Model Signature
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
with mlflow.start_run():
logged_agent_info = mlflow.pyfunc.log_model(
python_model=agent_notebook_path,
artifact_path="agent",
input_example=input_example,
resources=resources_path,
example_no_conversion=True,
resources=[
DatabricksServingEndpoint(endpoint_name="databricks-meta-llama-3-3-70b-instruct"),
DatabricksVectorSearchIndex(index_name="prod.agents.databricks_docs_index"),
]
)
print(f"MLflow Run: {logged_agent_info.run_id}")
print(f"Model URI: {logged_agent_info.model_uri}")
# To verify that the model has been logged correctly, load the agent and call `invoke`:
model = mlflow.pyfunc.load_model(logged_agent_info.model_uri)
model.invoke(example)
Databricks kaynakları için kimlik doğrulaması
Yapay zeka aracılarının görevleri tamamlamak için genellikle diğer kaynaklarda kimlik doğrulaması gerçekleştirmesi gerekir. Örneğin, dağıtılan bir aracının yapılandırılmamış verileri sorgulamak için bir AI Search dizinine erişmesi veya dinamik istemleri yüklemek için Prompt Registry'ye erişmesi gerekebilir.
Otomatik kimlik doğrulama geçişi ve adına kimlik doğrulaması, ajan günlükleme sırasında yapılandırma gerektirir.
Aracıyı Unity Kataloğu'na kaydetme
Aracıyı dağıtmadan önce, aracıyı Unity Kataloğu'na kaydetmeniz gerekir. Bir ajanı kaydetmek, onun Unity Kataloğu'nda model olarak paketlenmesini sağlar. Sonuç olarak, aracıdaki kaynaklar için yetkilendirme için Unity Kataloğu izinlerini kullanabilirsiniz.
import mlflow
mlflow.set_registry_uri("databricks-uc")
catalog_name = "test_catalog"
schema_name = "schema"
model_name = "agent_name"
model_name = catalog_name + "." + schema_name + "." + model_name
uc_model_info = mlflow.register_model(model_uri=logged_agent_info.model_uri, name=model_name)
Bkz. mlflow.register_model().