Criar um agente AI
Prévia
Esse recurso está em Pré-lançamento público.
Este artigo mostra como criar um AI agente de chamada de ferramenta usando o Mosaic AI Agent Framework.
Saiba como fornecer ferramentas a um agente e começar a conversar com ele para testar e criar um protótipo do agente. Quando o senhor terminar de criar o protótipo do agente, exporte o código Python que define o agente para iterar e implantar o agente AI.
Requisitos
Entenda os conceitos de agentes e ferramentas do AI conforme descrito em O que são o sistema composto AI e os agentes AI?
A Databricks recomenda instalar a versão mais recente do cliente MLflow Python ao desenvolver agentes. Consulte Autenticação para recurso dependente para obter informações sobre os requisitos da versão
mlflow
.
Criar ferramentas do agente AI
O primeiro passo é criar uma ferramenta para dar ao seu agente. Os agentes usam ferramentas para realizar ações além da geração de linguagem, por exemplo, para recuperar dados estruturados ou não estruturados, executar código ou conversar com serviços remotos (por exemplo, o enviar uma mensagem para email ou Slack).
Para saber mais sobre como criar ferramentas de agente, consulte Criar ferramentas de agente AI .
Para este guia, crie uma função do Unity Catalog que execute o código Python. Um agente pode usar essa ferramenta para executar o Python fornecido por um usuário ou escrito pelo próprio agente.
Execute o código a seguir em uma célula do Notebook. Ele usa a magia do %sql
Notebook para criar uma função Unity Catalog chamada python_exec
.
%sql
CREATE OR REPLACE FUNCTION
main.default.python_exec (
code STRING COMMENT 'Python code to execute. Remember to print the final result to stdout.'
)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
COMMENT 'Executes Python code in the sandboxed environment and returns its stdout. The runtime is stateless and you can not read output of the previous tool executions. i.e. No such variables "rows", "observation" defined. Calling another tool inside a Python code is NOT allowed. Use standard python libraries only.'
AS $$
import sys
from io import StringIO
sys_stdout = sys.stdout
redirected_output = StringIO()
sys.stdout = redirected_output
exec(code)
sys.stdout = sys_stdout
return redirected_output.getvalue()
$$
Protótipo de ferramenta - chamando agentes no AI Playground
Depois de criar a função do Unity Catalog, use o AI Playground para fornecer a ferramenta a um LLM e testar o agente. O site AI Playground fornece um sandbox para protótipos de agentes de chamadas de ferramentas.
Quando estiver satisfeito com o agente AI, o senhor pode exportá-lo para desenvolvê-lo ainda mais em Python ou implantá-lo como um modelo de serviço endpoint como está.
Observação
Unity Catalog, e serverless computeMosaic AI Agent Framework, e modelos de fundação pay-per-tokens ou modelos externos devem estar disponíveis no site workspace atual para prototipar agentes em AI Playground.
Para criar o protótipo de um endpoint de chamada de ferramenta.
No Playground, selecione um modelo com o rótulo Tools enabled (Ferramentas ativadas ).
Selecione Tools (Ferramentas ) e especifique os nomes das funções do site Unity Catalog em dropdown:
Chat para testar a combinação atual de LLM, ferramentas e prompt do sistema e tentar variações.
Exportação e implantado AI Playground agentes
Depois de adicionar ferramentas e testar o agente, exporte o agente do Playground para Python Notebook:
Clique em Export para gerar o Python Notebook que o ajudará a desenvolver e implantar o agente AI.
Depois de exportar o código do agente, o senhor verá três arquivos salvos no site workspace:
agent
Notebook: Contém o código Python que define seu agente usando LangChain.driver
Notebook: Contém o código Python para log, rastrear, registrar e implantar o agente AI usando o Mosaic AI Agent Framework.config.yml
: Contém informações de configuração sobre seu agente, incluindo definições de ferramentas.
Abra o
agent
Notebook para ver o código LangChain que define seu agente. Use esse Notebook para testar e iterar o agente programaticamente, como definir mais ferramentas ou ajustar os parâmetros do agente.Observação
O código exportado pode ter um comportamento diferente da sua sessão de AI playground. Databricks recomenda que o senhor execute o Notebook exportado para iterar e depurar mais, avaliar a qualidade do agente e, em seguida, implantar o agente para compartilhar com outras pessoas.
Quando estiver satisfeito com os resultados do agente, o senhor pode executar o
driver
Notebook para log e implantar seu agente em um modelo de serviço endpoint.
Definir um agente no código
Além de gerar código de agente a partir do AI Playground, o senhor também pode definir um agente em código, usando estruturas como LangChain ou código Python. Para implantar um agente usando o Agent Framework, sua entrada deve estar em conformidade com um dos formatos de entrada e saída suportados.
Use parâmetros para configurar o agente
Na Agent Framework, você pode utilizar parâmetros para controlar como os agentes são executados. Isso possibilita que você faça uma iteração rápida variando as características do agente sem alterar o código. Os parâmetros são pares chave-valor que você define em um dicionário no Python ou em um arquivo .yaml
.
Para configurar o código, crie um ModelConfig
, um conjunto de parâmetros key-value. ModelConfig
é um dicionário Python ou um arquivo .yaml
. Por exemplo, o senhor pode usar um dicionário durante o desenvolvimento e depois convertê-lo em um arquivo .yaml
para implantação de produção e CI/CD. Para obter detalhes sobre ModelConfig
, consulte a documentação do MLflow.
Um exemplo ModelConfig
é mostrado abaixo.
llm_parameters:
max_tokens: 500
temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
question that indicates your prompt template came from a YAML file. Your response
must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question
Para chamar a configuração do seu código, use uma das seguintes opções:
# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)
# Example of using a dictionary
config_dict = {
"prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
"prompt_template_input_vars": ["question"],
"model_serving_endpoint": "databricks-dbrx-instruct",
"llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}
model_config = mlflow.models.ModelConfig(development_config=config_dict)
# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')
Definir esquema do recuperador
AI Os agentes geralmente usam recuperadores, um tipo de ferramenta de agente que localiza e retorna documentos relevantes usando um índice de pesquisa vetorial. Para obter mais informações sobre retrievers, consulte a ferramenta Create a vector search retriever.
Para garantir que os recuperadores sejam rastreados corretamente, chame mlflow.models.set_retriever_schema quando você define seu agente em código. Use set_retriever_schema
para mapear os nomes das colunas na tabela retornada para os campos esperados do MLflow, como primary_key
, text_column
e doc_uri
.
# Define the retriever's schema by providing your column names
# These strings should be read from a config dictionary
mlflow.models.set_retriever_schema(
name="vector_search",
primary_key="chunk_id",
text_column="text_column",
doc_uri="doc_uri"
# other_columns=["column1", "column2"],
)
Observação
A coluna doc_uri
é especialmente importante ao avaliar o desempenho do retriever. doc_uri
é o identificador principal dos documentos retornados pelo recuperador, permitindo compará-los com os conjuntos de avaliação da verdade básica. Veja os conjuntos de avaliação
Você também pode especificar colunas adicionais no esquema do seu retriever fornecendo uma lista de nomes de colunas com o campo other_columns
.
Se você tiver vários recuperadores, poderá definir vários esquemas usando nomes exclusivos para cada esquema de recuperação.
Formatos de entrada e saída suportados
O Agent Framework usa as assinaturas de modelo do MLflow para definir esquemas de entrada e saída para agentes. Mosaic AI O recurso Agent Framework exige um conjunto mínimo de campos de entrada/saída para interagir com o recurso, como o Review App e o AI Playground. Para obter mais informações, consulte Definir o esquema de entrada e saída de um agente.
Notebooks de Exemplo
Esses notebooks criam uma cadeia simples "Hello, world" para ilustrar como criar uma aplicação de cadeia no Databricks. O primeiro exemplo cria uma cadeia simples. O segundo notebook de exemplo ilustra como utilizar parâmetros para minimizar as alterações de código durante o desenvolvimento.