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

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 %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 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, você pode exportá-lo para desenvolvê-lo ainda mais em Python ou implantá-lo como um ponto de extremidade de serviço de modelo 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.

  1. No Playground, selecione um modelo com o rótulo Ferramentas habilitadas .

    Selecione um LLM de chamada de ferramenta

  2. Selecione Ferramentas e especifique os nomes das funções do Catálogo Unity na lista suspensa:

    Selecionar ferramenta

  3. Converse por chat para testar a combinação atual de LLM, ferramentas e prompt do sistema e tente variações.

    Protótipo do LLM

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:

  1. 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.
  2. 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.

  3. 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 ModelConfigo , 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 Criar uma ferramenta de pesquisa vetorial retriever.

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_columne 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

Obter o bloco de notas

Notebook driver de corrente simples

Obter o bloco de notas

Notebook de corrente parametrizada

Obter o bloco de notas

Notebook driver de corrente parametrizado

Obter o bloco de notas

Próximos passos