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.
Mosaic AI Ajan Çerçevesi kullanarak yapay zeka ajanlarını günlük kaydı yap. Bir yazılım temsilcisini günlüğe kaydetmek, geliştirme sürecinin temelidir. Günlük tutma, bir ajanın kodunun ve yapılandırmasının "belirli bir anını" kayıt altına alır, böylece yapılandırmanın kalitesini değerlendirebilirsiniz.
Requirements
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, vektör arama dizini veya temel modele hizmet veren uç nokta gibi aracıya hizmet vermek için gereken Databricks tarafından yönetilen kaynakları bildirir. Daha fazla bilgi için bkz. Otomatik kimlik doğrulama geçişi uygulama.Modeli dağıtın. Bkz. Üretici yapay zeka uygulamaları 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, vektör arama dizini veya temel modele hizmet veren uç nokta gibi aracıya hizmet vermek için gereken Databricks tarafından yönetilen kaynakları bildirir. Daha fazla bilgi için bkz. Otomatik kimlik doğrulama geçişi uygulama.Modeli dağıtın. Bkz. Üretici yapay zeka uygulamaları 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ı yapılandırılmamış verileri sorgulamak için Vektör Arama dizinine veya dinamik istemleri yüklemek için İstem Kayıt Defteri'ne 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().
Sonraki Adımlar
- Yapay zeka ajanına iz ekleyin.
- Yapay zeka ajanı dağıtın.