Pular para o conteúdo principal

registro e registro AI agentes

Registre os agentes do log AI utilizando a estrutura de agentes Mosaic AI. Registrar um agente é a base do processo de desenvolvimento. O registro captura um ponto " " do código e da configuração do agente para que você possa avaliar a qualidade da configuração.

Requisitos

Crie um agente AI antes de registrá-lo.

A Databricks recomenda a instalação da versão mais recente do databricks-sdk.

Python
% pip install databricks-sdk

Registro baseado em código

A Databricks recomenda o uso da funcionalidade Models from Code do MLflow ao registrar agentes.

Nesta abordagem, o código do agente é capturado como um arquivo Python, e o ambiente Python é capturado como uma lista de pacotes. Quando o agente é implantado, o ambiente Python é restaurado e o código do agente é executado para carregá-lo na memória, de modo que ele possa ser invocado quando o endpoint for chamado.

O senhor pode combinar essa abordagem com o uso da validação de pré-implantação APIs como mlflow.models.predict() para garantir que o agente seja executado de forma confiável quando implantado para servir.

Para visualizar um exemplo de registro baseado em código, consulte o Notebook de exemplo de criação do ResponsesAgent.

Inferir a assinatura do modelo durante o registro

nota

A Databricks recomenda criar um agente utilizando a interface ResponsesAgent. Se estiver utilizando o ResponsesAgent, é possível ignorar esta seção; o MLflow automaticamente deduz uma assinatura válida para o seu agente.

Se não estiver usando a interface ResponsesAgent, o senhor deve usar um dos métodos a seguir para especificar a assinatura do modelo MLflow do agente no momento do registro em log:

  1. Defina manualmente a assinatura
  2. Use os recursos de inferência de assinatura de modelo do MLflow para gerar automaticamente a assinatura do agente com base em um exemplo de entrada fornecido pelo senhor. Essa abordagem é mais conveniente do que definir manualmente a assinatura.

A assinatura do modelo do MLflow valida entradas e saídas para garantir que o agente interaja corretamente com as ferramentas de downstream do , como o AI Playground e o aplicativo de avaliação. Ele também orienta outros aplicativos sobre como usar o agente de forma eficaz.

Os exemplos de LangChain e PyFunc abaixo usam a inferência de assinatura de modelo.

Se o senhor preferir definir explicitamente uma assinatura de modelo no momento do registro, consulte MLflow docs - How to modelos logged with signatures.

Registro de log baseado em código com LangChain

As instruções e o exemplo de código a seguir mostram ao senhor como log um agente com LangChain.

  1. Crie um arquivo do Notebook ou Python com seu código. Neste exemplo, o Notebook ou arquivo tem o nome de agent.py. O Notebook ou arquivo deve conter um agente LangChain, denominado aqui como lc_agent.

  2. Inclua mlflow.models.set_model(lc_agent) no Notebook ou no arquivo.

  3. Crie outro notebook para servir como o notebook do driver (chamado driver.py neste exemplo).

  4. No Notebook do driver, use o código a seguir para executar agent.py e log os resultados para um modelo MLflow:

    Python
    mlflow.langchain.log_model(lc_model="/path/to/agent.py", resources=list_of_databricks_resources)

    O parâmetro resources declara Databricks-gerenciar recurso necessário para atender ao agente, como um índice de pesquisa de vetor ou atendimento endpoint que atende a um modelo de fundação. Para obter mais informações, consulte Implementar passagem automática de autenticação.

  5. implantado o modelo. Veja implantado um agente para aplicativos generativos AI.

  6. Quando o ambiente de serviço é carregado, o agent.py é executado.

  7. Quando chega uma solicitação de atendimento, lc_agent.invoke(...) é chamado.

Python

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)

Registro baseado em código com PyFunc

As instruções e o exemplo de código a seguir mostram ao senhor como log um agente com PyFunc.

  1. Crie um arquivo do Notebook ou Python com seu código. Neste exemplo, o Notebook ou arquivo tem o nome de agent.py. O Notebook ou arquivo deve conter uma classe PyFunc, denominada PyFuncClass.

  2. Incluir mlflow.models.set_model(PyFuncClass) no Notebook ou no arquivo.

  3. Crie outro notebook para servir como o notebook do driver (chamado driver.py neste exemplo).

  4. No Notebook do driver, use o seguinte código para executar agent.py e use log_model() para log os resultados para um modelo MLflow:

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

    O parâmetro resources declara Databricks-gerenciar recurso necessário para atender ao agente, como um índice de pesquisa de vetor ou atendimento endpoint que atende a um modelo de fundação. Para obter mais informações, consulte Implementar passagem automática de autenticação.

  5. implantado o modelo. Veja implantado um agente para aplicativos generativos AI.

  6. Quando o ambiente de serviço é carregado, o agent.py é executado.

  7. Quando chega uma solicitação de atendimento, PyFuncClass.predict(...) é chamado.

Python
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)

Autenticação para Databricks recurso

AI Os agentes geralmente precisam se autenticar em outro recurso para concluir a tarefa. Por exemplo, um agente implantado pode precisar acessar um índice do Vector Search para consultar dados não estruturados ou acessar o Prompt Registry para carregar prompts dinâmicos.

A passagem automática da autenticação e a autenticação em nome da autenticação exigem configuração durante o registro do agente.

registrar o agente para Unity Catalog

Antes de implantar o agente, o senhor deve registrar o agente em Unity Catalog. registro do agente pacote como um modelo em Unity Catalog. Como resultado, o senhor pode usar as permissões Unity Catalog para autorização de recurso no agente.

Python
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)

Consulte mlflow.register_model().

Próximas etapas