Criar um agente de IA
Importante
Esta funcionalidade está em Pré-visualização Pública.
Este artigo mostra como criar um agente de IA de chamada de ferramenta usando o Mosaic AI Agent Framework.
Saiba como dar 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 compostos de IA e agentes de IA?
- O Databricks recomenda a instalação da versão mais recente do cliente Python MLflow ao desenvolver agentes.
Criar ferramentas de agente de IA
O primeiro passo é criar uma ferramenta para dar ao seu agente. Os agentes usam ferramentas para executar ações além da geração de linguagem, por exemplo, para recuperar dados estruturados ou não estruturados, executar código ou falar 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 Unity Catalog que execute código Python. Um agente pode usar essa ferramenta para executar Python dada por um usuário ou escrita pelo próprio agente.
Execute o seguinte código em uma célula do bloco de anotações. Ele usa a magia do notebook %sql
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 agentes chamadores de ferramentas no AI Playground
Depois de criar a função Unity Catalog, use o AI Playground para dar a ferramenta a um LLM e testar o agente. O AI Playground fornece um sandbox para protótipos de agentes de chamada de ferramentas.
Quando estiver satisfeito com o agente de IA, podes exportá-lo para o desenvolver ainda mais em Python ou implementá-lo como um endpoint de serviço de modelo tal como está.
Nota
O Unity Catalog, a computação sem servidor, o Mosaic AI Agent Framework e os modelos de base pay-per-token ou modelos externos devem estar disponíveis no espaço de trabalho atual para prototipar agentes no AI Playground.
Para prototipar um ponto de extremidade de chamada de ferramenta.
No Playground, selecione um modelo com o rótulo Ferramentas habilitadas .
Selecione Ferramentas e especifique os nomes das funções do Catálogo Unity na lista suspensa:
Converse por chat para testar a combinação atual de LLM, ferramentas e prompt do sistema e tente variações.
Exporte e implante agentes do AI Playground
Depois de adicionar ferramentas e testar o agente, exporte o agente do Playground para blocos de anotações Python:
Clique em Exportar para gerar blocos de anotações Python que ajudam 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:
-
agent
notebook: Contém código Python que define seu agente usando LangChain. -
driver
notebook: Contém código Python para registrar, rastrear, registrar e implantar o agente de IA 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
bloco de anotações para ver o código LangChain que define seu agente, use este bloco de anotações para testar e iterar no agente programaticamente, como definir mais ferramentas ou ajustar os parâmetros do agente.Nota
O código exportado pode ter um comportamento diferente da sua sessão de playground de IA. O Databricks recomenda que você execute os blocos de anotações 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
driver
bloco de anotações para registrar e implantar seu agente em um ponto de extremidade de serviço de modelo.
Definir um agente no código
Além de gerar código de agente a partir do AI Playground, você também pode definir um agente no código por conta própria, usando frameworks 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.
Usar parâmetros para configurar o agente
No Agent Framework, você pode usar parâmetros para controlar como os agentes são executados. Isso permite que você itere rapidamente variando as 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 .yaml
arquivo.
Para configurar o código, crie um ModelConfig
, um conjunto de parâmetros chave-valor.
ModelConfig
é um dicionário Python ou um .yaml
arquivo. Por exemplo, você pode usar um dicionário durante o desenvolvimento e, em seguida, convertê-lo em um .yaml
arquivo para implantação de produção e CI/CD. Para obter detalhes sobre ModelConfig
o , 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 retriever
Os agentes de IA geralmente usam retrievers, um tipo de ferramenta de agente que encontra e retorna documentos relevantes usando um índice de Pesquisa Vetorial. Para obter mais informações sobre retrievers, consulte ferramentas de agentes de IA para recuperação não estruturada.
Para garantir que os retrievers sejam rastreados corretamente, chame mlflow.models.set_retriever_schema quando definir seu agente no 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"],
)
Nota
A doc_uri
coluna é especialmente importante ao avaliar o desempenho do retriever.
doc_uri
é o identificador principal dos documentos devolvidos pelo recuperador, permitindo-lhe compará-los com conjuntos de avaliação da verdade do terreno. Ver Conjuntos de avaliação
Você também pode especificar colunas adicionais no esquema do retriever fornecendo uma lista de nomes de colunas com o other_columns
campo.
Se você tiver vários retrievers, poderá definir vários esquemas usando nomes exclusivos para cada esquema retriever.
Formatos de entrada e saída suportados
O Agent Framework usa assinaturas de modelo 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 Review App e o AI Playground. Para obter mais informações, consulte Definir o esquema de entrada e saída de um agente.
Exemplos de blocos de notas
Esses blocos de anotações criam uma cadeia simples "Olá, mundo" para ilustrar como criar um aplicativo em cadeia no Databricks. O primeiro exemplo cria uma cadeia simples. O segundo bloco de anotações de exemplo ilustra como usar parâmetros para minimizar alterações de código durante o desenvolvimento.
Caderno de corrente simples
Notebook driver de corrente simples
Notebook de corrente parametrizada
Notebook driver de corrente parametrizado
Próximos passos
- Registre um agente de IA.
- Adicione rastreamentos a um agente de IA.
- Implante um agente de IA.