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
.
% 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
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:
- Defina manualmente a assinatura
- 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.
-
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 comolc_agent
. -
Inclua mlflow.models.set_model(lc_agent) no Notebook ou no arquivo.
-
Crie outro notebook para servir como o notebook do driver (chamado
driver.py
neste exemplo). -
No Notebook do driver, use o código a seguir para executar
agent.py
e log os resultados para um modelo MLflow:Pythonmlflow.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. -
implantado o modelo. Veja implantado um agente para aplicativos generativos AI.
-
Quando o ambiente de serviço é carregado, o
agent.py
é executado. -
Quando chega uma solicitação de atendimento,
lc_agent.invoke(...)
é chamado.
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.
-
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, denominadaPyFuncClass
. -
Incluir
mlflow.models.set_model(PyFuncClass)
no Notebook ou no arquivo. -
Crie outro notebook para servir como o notebook do driver (chamado
driver.py
neste exemplo). -
No Notebook do driver, use o seguinte código para executar
agent.py
e uselog_model()
para log os resultados para um modelo MLflow:Pythonmlflow.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. -
implantado o modelo. Veja implantado um agente para aplicativos generativos AI.
-
Quando o ambiente de serviço é carregado, o
agent.py
é executado. -
Quando chega uma solicitação de atendimento,
PyFuncClass.predict(...)
é chamado.
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.
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()
.