Criar um agente de IA
Importante
Esse recurso está em uma versão prévia.
Este artigo mostra como criar um agente de IA de chamada de ferramenta usando o Mosaic AI Agent Framework.
Aprenda como fornecer ferramentas a um agente e comece a conversar com ele para testar e prototipar o agente. Quando terminar de prototipar o agente, exporte o código Python que define o agente para iterar e implantar seu agente de IA.
Requisitos
- Entenda os conceitos de agentes e ferramentas de IA, conforme descrito em O que são sistemas de IA compostos e agentes de IA?
- O Databricks recomenda instalar a versão mais recente do cliente Python do MLflow ao desenvolver operadores. Confira Autenticação para recursos dependentes para obter informações sobre os requisitos da versão
mlflow
.
Criar ferramentas de agentes de IA
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, enviar um e-mail ou mensagem do Slack).
Para saber mais sobre como criar ferramentas de agente, consulte Criar ferramentas de agente de IA.
Para este guia, crie uma função do Catálogo do Unity 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 um CÉL notebook. Ele usa a mágica do notebook %sql
para criar uma função do Catálogo do Unity 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()
$$
Crie protótipos de operadores de chamadas de ferramenta no AI Playground
Depois de criar a função Catálogo do Unity, use o AI Playground para fornecer a ferramenta a um LLM e testar o agente. O AI Playground fornece uma área restrita para criar protótipos de operadores de chamadas de ferramentas.
Quando estiver satisfeito com o agente de IA, você poderá exportá-lo para desenvolvê-lo ainda mais em Python ou implantá-lo como um ponto de extremidade do Serviço de Modelo no estado em que se encontra.
Observação
O Unity Catalog e a computação sem servidor, a Estrutura de Agente de IA do Mosaico e os modelos de base de pagamento por token ou modelos externos devem estar disponíveis no espaço de trabalho atual para criar protótipos de agentes no AI Playground.
Para criar um protótipo de um ponto de extremidade de chamada de ferramenta.
No Playground, selecione um modelo com o rótulo Ferramentas ativadas .
Selecione Ferramentas e especifique os nomes das funções do Catálogo do Unity na lista suspensa:
Converse para testar a combinação atual de LLM, ferramentas e prompt do sistema e experimente variações.
Exportar e implantar agentes do AI Playground
Depois de adicionar ferramentas e testar o agente, exporte o agente do Playground para notebooks Python:
Clique em Exportar para gerar notebooks do Python que ajudam você a desenvolver e implantar o agente de IA.
Depois de exportar o código do agente, você verá três arquivos salvos em seu espaço de trabalho:
- Notebook
agent
: contém código Python que define seu agente usando LangChain. - Notebook
driver
: contém código Python para registrar em log, rastrear, registrar e implantar o agente de IA usando a Estrutura de Agente de IA do Mosaico. config.yml
: contém informações de configuração sobre seu agente, incluindo definições de ferramentas.
- Notebook
Abra o notebook
agent
para ver o código LangChain definindo seu agente, use este notebook para testar e iterar no agente de modo programático, 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 do AI Playground. O Databricks recomenda que você execute os notebooks exportados para iterar e depurar ainda mais, avaliar a qualidade do agente e, em seguida, implantar o agente para compartilhar com outras pessoas.
Quando estiver satisfeito com as saídas do agente, você poderá executar o notebook
driver
para registrar e implantar seu agente em um ponto de extremidade do Model Serving.
Defina um agente no código
Além de gerar o código do agente a partir do AI Playground, você também pode definir um agente no código por conta própria, 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 com suporte.
Use parâmetros para configurar o agente
Na Estrutura do Agente, use os parâmetros para controlar como os agentes são executados. Isso permite que você itere rapidamente por diferentes características do seu agente sem alterar o código. Os parâmetros são pares chave-valor que você define em um dicionário Python ou em um arquivo .yaml
.
Para configurar o código, crie um ModelConfig
, um conjunto de parâmetros chave-valor. O ModelConfig
é um dicionário do Python ou um arquivo .yaml
. Por exemplo, você pode usar um dicionário durante o desenvolvimento e 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 código, use um dos seguintes:
# 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
Os agentes de IA geralmente usam retrievers, 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 Criar uma ferramenta de retriever de pesquisa de vetor.
Para garantir que os recuperadores sejam rastreados corretamente, chame mlflow.models.set_retriever_schema ao definir seu agente no código. Use set_retriever_schema
para mapear os nomes de coluna 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 doc_uri
coluna é especialmente importante ao avaliar o desempenho do retriever. doc_uri
é o principal identificador de documentos retornados pelo recuperador, permitindo compará-los com conjuntos de avaliação de verdade. Consulte Conjuntos de avaliação
Você também pode especificar colunas adicionais no esquema do seu retriever fornecendo uma lista de nomes de coluna com o other_columns
campo.
Se você tiver vários retrievers, poderá definir vários esquemas usando nomes exclusivos para cada esquema de retriever.
Formatos de entrada e saída suportados
O Agent Framework usa assinaturas de modelo do MLflow para definir esquemas de entrada e saída para agentes. Os recursos do Mosaic AI Agent Framework exigem um conjunto mínimo de campos de entrada/saída para interagir com recursos como o aplicativo Review 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 de “Olá, mundo” para ilustrar como criar um aplicativo de cadeia no Databricks. O primeiro exemplo cria uma cadeia simples. O segundo notebook de exemplo ilustra como usar parâmetros para minimizar as alterações de código durante o desenvolvimento.