Aracılığıyla paylaş


Yapay zeka ajanlarını kayıt altına alma ve kaydetme

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.

  1. İmzayı el ile tanımlama
  2. 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.

  1. 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, burada lc_agentolarak adlandırılan bir LangChain aracısı içermelidir.

  2. not defterine veya dosyaya mlflow.models.set_model(lc_agent) ekleyin.

  3. Sürücü not defteri olarak görev yapmak için yeni bir not defteri oluşturun (bu örnekte adı verilir driver.py ).

  4. 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)
    

    resources parametresi, 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.

  5. Modeli dağıtın. Bkz. Üretici yapay zeka uygulamaları için aracı dağıtma.

  6. Sunum ortamı yüklendiğinde, agent.py çalıştırılır.

  7. 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.

  1. 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 PyFuncClassadlı bir PyFunc sınıfı içermelidir.

  2. Not defterine veya dosyaya ekleyin mlflow.models.set_model(PyFuncClass) .

  3. Sürücü not defteri olarak görev yapmak için yeni bir not defteri oluşturun (bu örnekte adı verilir driver.py ).

  4. Sürücü not defterinde, agent.py kodunu çalıştırmak ve sonuçları bir MLflow modeline kaydetmek için log_model() kullanın.

    mlflow.pyfunc.log_model(python_model="/path/to/agent.py", resources=list_of_databricks_resources)
    

    resources parametresi, 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.

  5. Modeli dağıtın. Bkz. Üretici yapay zeka uygulamaları için aracı dağıtma.

  6. Sunum ortamı yüklendiğinde, agent.py çalıştırılır.

  7. 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