registro e registro AI agentes
Prévia
Esse recurso está em Pré-lançamento público.
AI Registre os agentes Mosaic AI do usando o Agent Framework. Registrar um agente é a base do processo de desenvolvimento. O registro captura um “ponto no tempo” 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.
Log baseado em código versus baseado em serialização
O senhor pode usar o registro do MLflow baseado em código ou o registro do MLflow baseado em serialização. A Databricks recomenda que o senhor use o registro baseado em código.
Registro de MLflow baseado em código: O código da cadeia é capturado como um arquivo Python. O ambiente Python é capturado como uma lista de pacotes. Quando a cadeia é implantada, o ambiente Python é restaurado e o código da cadeia é executado para carregar a cadeia na memória, de modo que possa ser invocada quando o endpoint for chamado.
Registro em MLflow baseado em serialização: O código da cadeia e o estado atual no ambiente Python são serializados para o disco, geralmente usando biblioteca como pickle
ou joblib
. Quando a cadeia é implantada, o ambiente Python é restaurado e o objeto serializado é carregado na memória para que possa ser invocado quando o endpoint for chamado.
A tabela mostra as vantagens e desvantagens de cada método.
Método |
Vantagens |
Desvantagens |
---|---|---|
Log de MLflow baseado em código |
|
|
Registro de MLflow baseado em serialização |
|
|
Para o log baseado em código, o código que faz log do seu agente ou cadeia deve estar em um notebook separado do código da cadeia. Este notebook é chamado de notebook de driver. Para um notebook de exemplo, consulte Notebooks de exemplo.
Registro de log baseado em código com LangChain
Crie um notebook ou arquivo Python com seu código. Para fins deste exemplo, o Notebook ou arquivo é denominado
chain.py
. O Notebook ou arquivo deve conter uma cadeia LangChain, referenciada aqui comolc_chain
.Incluir
mlflow.models.set_model(lc_chain)
no notebook ou arquivo.Crie outro notebook para servir como o notebook do driver (chamado
driver.py
neste exemplo).No Notebook do driver, use
mlflow.lang_chain.log_model(lc_model=”/path/to/chain.py”)
para executarchain.py
e log os resultados para um modelo MLflow.implantado o modelo. Veja implantado um agente para aplicação generativa do AI . A implementação do seu agente pode depender de outros Databricks recursos, como um índice de pesquisa de vetores e um endpoint de modelo de serviço. Para agentes da LangChain:
O MLflow
log_model
infere as dependências exigidas pela cadeia e as logs para o arquivoMLmodel
no artefato de modelos registrados. A partir da versão 2.17.0 do Mlflow, você pode substituir essas dependências inferidas. Consulte Especificar recurso para o agente PyFunc ou LangChain .Durante a implementação,
databricks.agents.deploy
cria automaticamente o M2M OAuth tokens necessário para acessar e se comunicar com essas dependências de recursos inferidas.
Quando o ambiente de serviço for carregado,
chain.py
é executado.Quando chega uma solicitação de atendimento,
lc_chain.invoke(...)
é chamado.
import mlflow
code_path = "/Workspace/Users/first.last/chain.py"
config_path = "/Workspace/Users/first.last/config.yml"
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using LangChain
with mlflow.start_run():
logged_chain_info = mlflow.langchain.log_model(
lc_model=code_path,
model_config=config_path, # If you specify this parameter, this is the configuration that is used for training the model. The development_config is overwritten.
artifact_path="chain", # 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 your chain
example_no_conversion=True, # Required
)
print(f"MLflow Run: {logged_chain_info.run_id}")
print(f"Model URI: {logged_chain_info.model_uri}")
# To verify that the model has been logged correctly, load the chain and call `invoke`:
model = mlflow.langchain.load_model(logged_chain_info.model_uri)
model.invoke(example)
Registro baseado em código com PyFunc
Crie um notebook ou arquivo Python com seu código. Para fins deste exemplo, o Notebook ou arquivo é denominado
chain.py
. O notebook ou arquivo deve conter uma classe PyFunc, referenciada aqui comoPyFuncClass
.Incluir
mlflow.models.set_model(PyFuncClass)
no notebook ou arquivo.Crie outro notebook para servir como o notebook do driver (chamado
driver.py
neste exemplo).No Notebook do driver, use
mlflow.pyfunc.log_model(python_model=”/path/to/chain.py”, resources=”/path/to/resources.yaml”)
para executarchain.py
e log os resultados para um modelo MLflow. O parâmetroresources
declara qualquer recurso necessário para atender ao modelo, como um índice de pesquisa vetorial ou o serviço endpoint que atende a um modelo de fundação. Para obter um exemplo de arquivo de recurso para o PyFunc, consulte Especificar recurso para o agente PyFunc ou LangChain .implantado o modelo. Veja implantado um agente para aplicação generativa do AI .
Quando o ambiente de serviço for carregado,
chain.py
é executado.Quando chega uma solicitação de atendimento,
PyFuncClass.predict(...)
é chamado.
import mlflow
code_path = "/Workspace/Users/first.last/chain.py"
config_path = "/Workspace/Users/first.last/config.yml"
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using PyFunc model
resources_path = "/Workspace/Users/first.last/resources.yml"
with mlflow.start_run():
logged_chain_info = mlflow.pyfunc.log_model(
python_model=chain_notebook_path,
artifact_path="chain",
input_example=input_example,
resources=resources_path,
example_no_conversion=True,
)
print(f"MLflow Run: {logged_chain_info.run_id}")
print(f"Model URI: {logged_chain_info.model_uri}")
# To verify that the model has been logged correctly, load the chain and call `invoke`:
model = mlflow.pyfunc.load_model(logged_chain_info.model_uri)
model.invoke(example)
Especifique o recurso para o agente PyFunc ou LangChain
O senhor pode especificar recursos, como um índice de pesquisa vetorial e um serviço endpoint, que são necessários para servir o modelo.
Para LangChain, os recursos são detectados automaticamente e registrados com o modelo usando uma abordagem de melhor esforço. A partir da versão 2.17.0 do site MLflow, o senhor pode substituir esses recursos inferidos automaticamente usando um código semelhante ao mostrado abaixo. Isso é recomendado para casos de uso de produção, pois permite que o senhor garanta que os agentes sejam registrados com as dependências necessárias.
Ao implantar um agente com sabor de pyfunc
, o senhor deve adicionar manualmente todas as dependências de recurso do agente implantado. Um token M2M OAuth com acesso a todos os recursos especificados no parâmetro resources
é criado e fornecido ao agente implantado.
Observação
O senhor pode substituir o recurso ao qual o site endpoint tem permissão especificando manualmente o recurso ao registrar a cadeia.
O código a seguir especifica dependências usando o parâmetro resources
.
import mlflow
from mlflow.models.resources import (
DatabricksFunction,
DatabricksServingEndpoint,
DatabricksSQLWarehouse,
DatabricksVectorSearchIndex,
)
with mlflow.start_run():
logged_chain_info = mlflow.pyfunc.log_model(
python_model=chain_notebook_path,
artifact_path="chain",
input_example=input_example,
example_no_conversion=True,
resources=[
DatabricksServingEndpoint(endpoint_name="databricks-mixtral-8x7b-instruct"),
DatabricksServingEndpoint(endpoint_name="databricks-bge-large-en"),
DatabricksVectorSearchIndex(index_name="prod.agents.databricks_docs_index"),
DatabricksSQLWarehouse(warehouse_id="your_warehouse_id"),
DatabricksFunction(function_name="ml.tools.python_exec"),
]
)
O senhor também pode adicionar recursos especificando-os em um arquivo resources.yaml
. Você pode referenciar esse caminho de arquivo no parâmetro resources
. Um token M2M OAuth com acesso a todos os recursos especificados no resources.yaml
é criado e fornecido ao agente implantado.
A seguir, um exemplo de arquivo resources.yaml
que define o endpoint do modelo de serviço e um índice de pesquisa vetorial.
api_version: "1"
databricks:
vector_search_index:
- name: "catalog.schema.my_vs_index"
serving_endpoint:
- name: databricks-dbrx-instruct
- name: databricks-bge-large-en
Registre a cadeia no Unity Catalog
Antes de implantar a cadeia, você deve registrar a cadeia no Unity Catalog. Quando o usuário registra a cadeia, ela é empacotada como um modelo no Unity Catalog, e o usuário pode utilizar as permissões do Unity Catalog para autorização de recursos na cadeia.
import mlflow
mlflow.set_registry_uri("databricks-uc")
catalog_name = "test_catalog"
schema_name = "schema"
model_name = "chain_name"
model_name = catalog_name + "." + schema_name + "." + model_name
uc_model_info = mlflow.register_model(model_uri=logged_chain_info.model_uri, name=model_name)