Compartilhar via


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

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.

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

    Selecione um LLM de chamada de ferramenta

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

    Selecionar uma ferramenta

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

    Crie um protótipo do LLM

Exportar e implantar agentes do AI Playground

Depois de adicionar ferramentas e testar o agente, exporte o agente do Playground para notebooks Python:

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

  3. 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_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"],
)

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.

Notebook de cadeia simples

Obter notebook

Notebook de driver de cadeia simples

Obter notebook

Notebook de cadeia parametrizada

Obter notebook

Notebook de driver de cadeia parametrizada

Obter notebook

Próximas etapas