Os modelos de linguagem grandes (LLMs) estão revolucionando a forma como interagimos com a tecnologia, aproveitando o processamento avançado de linguagem natural para executar tarefas complexas. Nos últimos anos, vimos modelos de LLM de ponta possibilitando uma ampla gama de aplicações inovadoras. O ano passado marcou uma mudança em direção ao RAG (Retrieval Augmented Generation - Geração Aumentada por Recuperação), onde os usuários criaram chatbots de IA interativos alimentando LLMs com seus dados organizacionais (através de embedding vetorial).
Mas estamos apenas começando. Embora poderosos, a “Geração Aumentada por Recuperação” limita nossa aplicação à recuperação de conhecimento estático. Imagine um agente de atendimento ao cliente típico que não apenas responde a perguntas de dados internos, mas também toma ações com intervenção humana mínima. Com os LLMs, podemos criar aplicações de tomada de decisão totalmente autônomas que não apenas respondem, mas também agem sobre as consultas dos usuários. As possibilidades são infinitas - desde análise de dados internos até pesquisas na web e muito mais.
O entendimento semântico e a capacidade linguística dos Modelos de Linguagem Grandes nos permitem criar aplicações de tomada de decisão totalmente autônomas que podem não apenas responder, mas também “agir” com base nas consultas dos usuários.
A Databricks lançou o framework Mosaic AI Agent que permite aos desenvolvedores construir um framework de agente em escala de produção através de qualquer LLM. Uma das capacidades centrais é criar ferramentas na Databricks que são projetadas para ajudar a construir, implantar e avaliar agentes de IA de qualidade de produção, como aplicações de Geração Aumentada por Recuperação (RAG) e muito mais. Os desenvolvedores podem criar e registrar agentes usando qualquer biblioteca e integrá-los com MLflow. Eles podem parametrizar agentes para experimentar e iterar rapidamente no desenvolvimento. O rastreamento de agentes permite que os desenvolvedores registrem, analisem e comparem rastros para depurar e entender como o agente responde às solicitações.
Nesta primeira parte do blog, exploraremos os agentes, seus componentes centrais e construiremos um agente de IA autônomo de atendimento ao cliente multi-turno para uma empresa de varejo online com um dos modelos fundamentais da Databricks de melhor desempenho (código aberto) na Plataforma. Na próxima série do blog, exploraremos o framework multi-agente e construiremos um agente multi-agente avançado de raciocínio multi-etapas para a mesma aplicação de negócios.
Agentes LLM são sistemas de IA avançados de próxima geração projetados para executar tarefas complexas que exigem raciocínio. Eles podem pensar adiante, lembrar conversas passadas e usar várias ferramentas para ajustar suas respostas com base na situação e no estilo necessários.
Uma progressão natural do RAG, os Agentes LLM são uma abordagem onde modelos de linguagem grandes de ponta são capacitados com sistemas/ferramentas ou funções externas para tomar decisões autônomas. Em um sistema de IA composto, um agente pode ser considerado um motor de decisão capacitado com memória, capacidade de introspecção, uso de ferramentas e muito mais. Pense neles como motores de decisão superinteligentes que podem aprender, raciocinar e agir independentemente - o objetivo final de criar uma aplicação de IA verdadeiramente autônoma.
Os componentes-chave de uma aplicação agentizada incluem:
O elemento principal de um framework de agente é um modelo de linguagem grande pré-treinado de propósito geral que pode processar e entender dados. Geralmente são modelos pré-treinados de alto desempenho; A interação com esses modelos começa com a criação de prompts específicos que fornecem contexto essencial, guiando-o sobre como responder, quais ferramentas usar e quais objetivos alcançar durante a interação.
Um framework de agente também permite personalização, permitindo que você atribua uma identidade distinta ao modelo. Isso significa que você pode adaptar suas características e expertise para se alinhar melhor às demandas de uma tarefa ou interação específica. Em última análise, um agente LLM combina perfeitamente capacidades avançadas de processamento de dados com recursos personalizáveis, tornando-o uma ferramenta inestimável para lidar com diversas tarefas com precisão e flexibilidade.
A memória é um componente importante de uma arquitetura agentizada. É um armazenamento temporário que o agente usa para armazenar conversas. Pode ser uma memória de trabalho de curto prazo onde o agente LLM está mantendo informações atuais com contexto imediato e limpa a memória assim que a tarefa é concluída. Isso é temporário.
Por outro lado, temos a memória de longo prazo (às vezes chamada de memória episódica) que armazena conversas de longa duração e pode ajudar o agente a entender padrões, aprender com tarefas anteriores e recordar informações para tomar melhores decisões em interações futuras. Essa conversa geralmente é persistida em um banco de dados externo. (ex: - banco de dados vetorial).
A combinação dessas duas memórias permite que um agente forneça respostas personalizadas e trabalhe melhor com base na preferência do usuário ao longo do tempo. Lembre-se, não confunda a memória do agente com a memória conversacional do nosso LLM. Ambos servem a propósitos diferentes.
O próximo componente de um agente LLM é a capacidade de planejamento, que ajuda a dividir tarefas complexas em tarefas gerenciáveis e executa cada tarefa. Ao formular o plano, o componente planejador pode utilizar múltiplas técnicas de raciocínio, como raciocínio chain-of-thought ou raciocínio hierárquico, como árvores de decisão, para decidir qual caminho seguir.
Uma vez que o plano é criado, os agentes o revisam e avaliam sua eficácia através de vários mecanismos de feedback interno. Alguns métodos comuns incluem ReAct e Reflexion. Esses métodos ajudam os LLMs a resolver tarefas complexas passando por uma sequência de pensamentos e observando os resultados. O processo se repete para melhoria iterativa.
Em um chatbot multi-turno típico com um único agente LLM, o planejamento e a orquestração são feitos por um único modelo de linguagem, enquanto em um framework multi-agente, agentes separados podem executar tarefas específicas como roteamento, planejamento, etc. Discutiremos isso mais na próxima parte do blog sobre framework multi-agente.
Ferramentas são os blocos de construção dos agentes, elas executam diferentes tarefas conforme guiado pelo agente central. Ferramentas podem ser vários executores de tarefas de qualquer forma (chamadas de API, funções Python ou SQL, pesquisa na web, codificação, espaço Databricks Genie ou qualquer outra coisa que você queira que a ferramenta funcione). Com a integração de ferramentas, um agente LLM executa tarefas específicas através de fluxos de trabalho, coletando observações e informações necessárias para completar subtarefas.
Ao construir essas aplicações, uma coisa a considerar é o quão longa está sendo a interação. Você pode facilmente esgotar o limite de contexto dos LLMs quando a interação é longa e há potencial para esquecer as conversas mais antigas. Durante uma longa conversa com um usuário, o fluxo de controle da decisão pode ser de thread único, multi-thread em paralelo ou em loop. Quanto mais complexa a cadeia de decisão se torna, mais complexa será sua implementação.
Na Figura 1 abaixo, um único LLM de alto desempenho é a chave para a tomada de decisão. Com base na pergunta do usuário, ele entende qual caminho seguir para rotear o fluxo de decisão. Ele pode utilizar várias ferramentas para executar ações específicas, armazenar resultados intermediários na memória, realizar planejamento subsequente e, finalmente, retornar o resultado ao usuário.

Para o propósito deste blog, vamos criar um assistente de IA autônomo para atendimento ao cliente de um varejista online de eletrônicos via Mosaic AI Agent Framework. Este assistente interagirá com os clientes, responderá às suas perguntas e executará ações com base nas instruções do usuário. Podemos introduzir um humano no processo para verificar a resposta da aplicação. Usaremos as funcionalidades de ferramentas do Mosaic AI para criar e registrar nossas ferramentas dentro do Unity Catalog. Abaixo está a relação de entidades (dados sintéticos) que construímos para o blog.

Abaixo está o diagrama de fluxo de processo simples para nosso caso de uso.

Trecho de código: (SQL) Detalhes do Pedido
O código abaixo retorna os detalhes do pedido com base em um ID de pedido fornecido pelo usuário. Observe a descrição do campo de entrada e o campo comment da função. Não omita os comentários da função e dos parâmetros, que são críticos para que os LLMs chamem funções/ferramentas corretamente.
Os comentários são utilizados como parâmetros de metadados pelo nosso LLM central para decidir qual função executar, dada uma consulta do usuário. Comentários incorretos ou insuficientes podem potencialmente expor o LLM a executar funções/ferramentas incorretas.
Trecho de código: (SQL) Detalhes de Remessa
Esta função retorna os detalhes de remessa da tabela de remessa, dado um ID. Semelhante ao acima, os comentários e os detalhes dos metadados são importantes para o agente interagir com a ferramenta.
Trecho de código: (Python)
Da mesma forma, você pode criar qualquer função Python e usá-la como uma ferramenta ou função. Ela pode ser registrada dentro do Unity Catalog de maneira semelhante e fornecer todos os benefícios mencionados acima. O exemplo abaixo é da ferramenta de pesquisa na web que construímos e usamos como endpoint para nosso agente chamar.
Para o nosso caso de uso, criamos várias ferramentas que executam tarefas variadas como abaixo:

| return_order_details | Retorna detalhes do pedido dado um ID de Pedido |
| return_shipment_details | Retorna detalhes de remessa fornecido um ID de Remessa |
| return_product_details | Retorna detalhes do produto dado um ID de produto |
| return_product_review_details | Retorna resumo de avaliações de dados não estruturados |
| search_tool | Pesquisa na web com base em palavras-chave e retorna resultados |
| process_order | Processa uma solicitação de reembolso com base em uma consulta do usuário |

Agora que nossas ferramentas estão prontas, integraremos elas a um Modelo Fundamental de linguagem grande hospedado no Databricks. Observe que você também pode usar seu próprio modelo personalizado ou modelos externos via AI Gateway. Para o propósito deste blog, usaremos o databricks-meta-llama-3-1-70b-instruct hospedado no Databricks.
Este é um modelo de código aberto da meta e foi configurado no Databricks para usar ferramentas de forma eficaz. Observe que nem todos os modelos são equivalentes, e modelos diferentes terão diferentes capacidades de uso de ferramentas.
Agora que nosso LLM está pronto, usaremos o executor de Agente LangChain para juntar tudo isso e construir um agente:
Vamos ver como isso funciona na prática com uma pergunta de exemplo:
Como cliente, imagine que começarei a perguntar ao agente o preço de um produto específico, “Chaleira Elétrica Breville”, em sua empresa e no mercado para ver ofertas competitivas.
Com base na pergunta, o agente entendeu para executar duas funções/ferramentas:
return_product_price_details - Para o preço internoweb_search_tool – Para pesquisar na web.A captura de tela abaixo mostra a execução sequencial das diferentes ferramentas com base em uma pergunta do usuário.
Finalmente, com a resposta dessas duas funções/ferramentas, o agente sintetiza a resposta e a fornece abaixo. O agente compreendeu autonomamente as funções a serem executadas e respondeu à pergunta do usuário em seu nome. Muito legal!

Você também pode ver o rastreamento de ponta a ponta da execução do agente via MLflow Trace. Isso ajuda imensamente no seu processo de depuração e fornece clareza sobre como cada etapa é executada.

Um dos fatores-chave para construir um agente é seu estado e memória. Como mencionado acima, cada função retorna uma saída e, idealmente, você precisa se lembrar da conversa anterior para ter uma conversa multi-turno. Isso pode ser alcançado de várias maneiras através de qualquer framework orquestrador. Para este caso, usaríamos o LangChain Agent Memory para construir um bot conversacional multi-turno.
Vamos ver como podemos alcançar isso através da API Databricks FM e LangChain. Utilizaríamos o executor de agente anterior e adicionaríamos uma memória adicional com LangChain ChatMessageHistory eRunnableWithMessageHistory.
Aqui estamos usando um histórico de chat em memória para fins de demonstração. Assim que a memória for instanciada, adicionamos ao nosso executor de agente e criamos um agente com o histórico de chat abaixo. Vamos ver como as respostas ficam com o novo agente.
Agora que definimos o executor do agente, vamos tentar fazer algumas perguntas de acompanhamento ao agente e ver se ele se lembra da conversa. Preste muita atenção ao session_id; este é o thread de memória que contém a conversa em andamento.


Legal! Ele se lembra de todas as conversas anteriores do usuário e pode executar perguntas de acompanhamento muito bem! Agora que entendemos como criar um agente e manter seu histórico, vamos ver como o agente de chat de conversação de ponta a ponta ficaria em ação.
Utilizaremos o Databricks AI Playground para ver como fica de ponta a ponta. O Databricks AI Playground é um ambiente semelhante a um chat onde você pode testar, solicitar e comparar vários LLMs. Lembre-se de que você também pode servir o agente que acabou de construir como um endpoint de serviço e usá-lo no Playground para testar o desempenho do seu agente.
Implementamos o agente de IA usando o Databricks Mosaic AI Agent Framework, a API Databricks Foundational Model e o orquestrador LangChain.
O vídeo abaixo ilustra uma conversa entre o agente multi-turno que construímos usando Meta-llama-3-1-70b-instruct e nossas funções/ferramentas UC no Databricks.
Ele mostra o fluxo de conversação entre um cliente e nosso agente que seleciona dinamicamente as ferramentas apropriadas e as executa com base em uma série de consultas do usuário para fornecer um suporte contínuo ao nosso cliente.
Aqui está um fluxo de conversa de um cliente com nosso Agente recém-construído para nossa loja de varejo online.

Desde a solicitação de status do pedido com o nome do cliente até a realização de um pedido, tudo feito autonomamente, sem qualquer intervenção humana.

E é isso! Com apenas algumas linhas de código, desbloqueamos o poder de agentes autônomos multi-turno que podem conversar, raciocinar e agir em nome de seus clientes. O resultado? Uma redução significativa em tarefas manuais e um grande impulso na automação. Mas estamos apenas começando! O Mosaic AI Agent Framework abriu as portas para um mundo de possibilidades no Databricks.
Fique ligado para a próxima parte, onde levaremos isso para o próximo nível com IA multiagente — pense em vários agentes trabalhando em harmonia para lidar até mesmo com as tarefas mais complexas. Para completar, mostraremos como implantar tudo via MLflow e endpoints de serviço de modelo, facilitando a criação de aplicações agentivas em escala de produção sem comprometer a governança de dados. O futuro da IA está aqui e está a apenas um clique de distância.
Mosaic AI: Crie e Implante Sistemas de IA Composta de Qualidade de Produção
Anunciando o Mosaic AI Agent Framework e Avaliação de Agente | Blog Databricks
Mosaic AI Agent Framework | Databricks
React: Sinergizando raciocínio e ação em modelos de linguagem
Reflexion: Agentes de linguagem com aprendizado por reforço verbal
Agentes LLM: O guia definitivo | SuperAnnotate
Memória em agentes LLM - Comunidade DEV
Como executar vários agentes no mesmo thread
(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original
