Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
В новых вариантах использования Databricks рекомендует развертывать агенты в Databricks Apps для полного контроля над кодом агента, конфигурацией сервера и рабочим процессом развертывания. См . статью "Создание агента ИИ" и его развертывание в приложениях Databricks. Сведения о переносе существующего агента см. в статье "Миграция агента из службы моделей в приложения Databricks".
Логирование агентов ИИ с помощью Фреймворка Агент ИИ Мозаики. Логирование агента является основой процесса разработки. Ведение журнала фиксирует "точку во времени" кода и конфигурации агента, чтобы вы могли оценить качество конфигурации.
Requirements
Создайте ИИ-агент перед его регистрацией.
Databricks рекомендует установить последнюю версию databricks-sdk.
% pip install databricks-sdk
ведение журнала на основе кода
Databricks рекомендует использовать функциональность MLflow Models from Code при логировании агентов.
В этом подходе код агента записывается в виде файла Python, а среда Python записывается в виде списка пакетов. При развертывании агента среда Python восстанавливается, а код агента выполняется для загрузки агента в память, чтобы его можно было вызвать при вызове конечной точки.
Этот подход можно использовать с использованием API для предварительной проверки развертывания, таких как mlflow.models.predict(), чтобы убедиться, что агент работает надежно при развертывании для обслуживания.
Пример ведения журнала на основе кода см. в статье "Примеры записных книжек для разработки ResponsesAgent".
Определение сигнатуры модели во время логирования
Note
Databricks рекомендует создавать агент с помощью интерфейса ResponsesAgent. При использовании ResponsesAgent можно пропустить этот раздел; MLflow автоматически выводит допустимую подпись для агента.
Если вы не используете интерфейс ResponsesAgent, необходимо применить один из следующих методов, чтобы указать сигнатуру модели MLflow вашего агента при записи в журнал:
- Вручную определите сигнатуру
- Используйте возможности вывода подписи модели MLflow для автоматического создания подписи агента на основе предоставленного входного примера. Этот подход удобнее, чем вручную определение сигнатуры.
Подпись модели MLflow проверяет входные и выходные данные, чтобы агент правильно взаимодействовал с последующими инструментами, такими как AI Playground и приложение для обзора. Он также поможет другим приложениям эффективно использовать агент.
Примеры LangChain и PyFunc ниже используют вывод на основе сигнатуры модели.
Если вы предпочитаете сами явно определять подпись модели во время записи, обратитесь к документации MLflow, раздел - Как регистрировать модели с сигнатурами.
Ведение журнала на основе кода с помощью LangChain
В следующих инструкциях и примере кода показано, как регистрировать агент с помощью LangChain.
Создайте записную книжку или файл Python с кодом. В этом примере записная книжка или файл именуется
agent.py. Записная книжка или файл должны содержать агент LangChain, называемый здесьlc_agent.Включите mlflow.models.set_model(lc_agent) в записную книжку или файл.
Создайте новую записную книжку, которую можно использовать в качестве управляющей записной книжки (называемой
driver.pyв этом примере).В записной книжке драйвера используйте следующий код, чтобы запустить
agent.pyи записать результаты в модель MLflow:mlflow.langchain.log_model(lc_model="/path/to/agent.py", resources=list_of_databricks_resources)Параметр
resourcesобъявляет управляемые Databricks ресурсы, необходимые для обслуживания агента, например индекс векторного поиска или конечную точку, которая служит базовой моделью. Детальную информацию можно найти в разделе Реализация автоматической сквозной аутентификации.Разверните модель. См . раздел "Развертывание агента для создания приложений ИИ (обслуживание моделей)".
Когда загружается среда обслуживания, выполняется
agent.py.При поступлении запроса на обслуживание вызывается
lc_agent.invoke(...).
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 ()
В следующих инструкциях и примере кода показано, как регистрировать агент с помощью PyFunc.
Создайте записную книжку или файл Python с кодом. В этом примере записная книжка или файл именуется
agent.py. Записная книжка или файл должны содержать класс PyFunc с именемPyFuncClass.Включите
mlflow.models.set_model(PyFuncClass)в записную книжку или файл.Создайте новую записную книжку, которую можно использовать в качестве управляющей записной книжки (называемой
driver.pyв этом примере).В записной книжке драйвера используйте следующий код для выполнения
agent.pyи использованияlog_model()для записи результатов в модель MLflow:mlflow.pyfunc.log_model(python_model="/path/to/agent.py", resources=list_of_databricks_resources)Параметр
resourcesобъявляет управляемые Databricks ресурсы, необходимые для обслуживания агента, например индекс векторного поиска или конечную точку, которая служит базовой моделью. Детальную информацию можно найти в разделе Реализация автоматической сквозной аутентификации.Разверните модель. См . раздел "Развертывание агента для создания приложений ИИ (обслуживание моделей)".
Когда загружается среда обслуживания, выполняется
agent.py.При поступлении запроса на обслуживание вызывается
PyFuncClass.predict(...).
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
Агенты ИИ часто должны проходить проверку подлинности в других ресурсах для выполнения задач. Например, развернутому агенту, возможно, потребуется получить доступ к индексу векторного поиска для запроса неструктурированных данных или доступ к реестру подсказок для загрузки динамических подсказок.
Для автоматической сквозной аутентификации и аутентификации от имени требуется настройка во время авторизации агента.
регистрация агента в каталоге Unity
Перед развертыванием агента необходимо зарегистрировать агент в каталоге Unity. Регистрация агента оформляет его как модель в каталоге Unity. В результате можно использовать разрешения каталога Unity для авторизации ресурсов в агенте.
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)