A orquestração de agentes de LLMs refere-se ao processo de gerenciar e coordenar as interações entre um grande modelo de linguagem (LLM) e várias ferramentas, APIs ou processos para executar tarefas complexas dentro de sistemas de IA. Envolve a estruturação de fluxos de trabalho em que um agente de IA, impulsionado por inteligência artificial, atua como o tomador de decisão central ou mecanismo de raciocínio, orquestrando suas ações com base em entradas, contexto e saídas de sistemas externos. Usando um framework de orquestração, os LLMs podem se integrar sem dificuldades com APIs, bancos de dados e outras aplicações de IA, permitindo funcionalidades como chatbots e ferramentas de automação. Frameworks de agentes de código aberto aprimoram ainda mais a adaptabilidade desses sistemas, tornando os LLMs mais eficazes em cenários do mundo real.
Muitas pessoas não entendem a diferença entre a orquestração de LLMs e a orquestração de agentes de LLMs. A ilustração a seguir destaca as principais diferenças:
Neste tutorial, você aprenderá a criar um agente autônomo impulsionado por grandes modelos de linguagem (LLMs) usando os modelos IBM® Granite e o LangChain. Exploraremos como os agentes aproveitam os principais componentes, como memória, planejamento e ação, para executar tarefas inteligentes. Você também implementará um sistema prático que processa texto de um livro, responde a consultas de forma dinâmica e avalia o desempenho usando métricas de precisão como BLEU, precisão, recall e pontuação F1.
O framework apresentado na figura 1 fornece um design holístico para agentes autônomos baseados em grandes modelos de linguagem (LLMs), enfatizando a interação entre os principais componentes: perfil, memória, planejamento e ação. Cada componente representa um estágio crítico na criação de um agente autônomo capaz de raciocinar, tomar decisões e interagir com ambientes dinâmicos.1
1. Perfil: definição da identidade do agente
O perfil dá ao agente sua identidade por meio do embedding de informações como demografia, traços de personalidade e contexto social. Esse processo garante que o agente possa interagir de forma personalizada. Os perfis podem ser criados manualmente, gerados por modelos de IA generativa, como os modelos IBM Granite ou o GPT (generative pretrained transformer) da OpenAI, ou alinhados com conjuntos de dados específicos para atender a requisitos de tarefas. Aproveitando a engenharia de prompts, os perfis podem ser refinados dinamicamente para otimizar as respostas. Além disso, dentro da orquestração multiagentes, o perfil ajuda a definir funções e comportamentos, garantindo a coordenação perfeita entre algoritmos de IA e sistemas de tomada de decisão.
2. Memória: armazenamento e uso de contexto
A memória ajuda o agente a reter e recuperar interações passadas, possibilitando respostas contextuais. Pode ser unificada (todos os dados em um só lugar) ou híbrida (estruturada e não estruturada). Operações incluindo leitura, escrita e reflexão permitem que o agente aprenda com a experiência e forneça saídas consistentes e informadas. Uma memória bem estruturada aprimora a orquestração de vários agentes, garantindo que diferentes agentes, incluindo agentes especializados projetados para uma tarefa específica, possam compartilhar e recuperar dados relevantes de forma eficiente. Em frameworks como AutoGen e Crew AI, a memória desempenha um papel crucial na manutenção da continuidade no ecossistema de agentes colaboradores, garantindo uma coordenação perfeita e a execução otimizada de tarefas.
3. Planejamento: ações de estratégia
O componente de planejamento permite que o agente elabore estratégias para atingir metas. Ele pode seguir etapas predefinidas ou adaptar-se dinamicamente com base no feedback do ambiente, dos humanos ou do próprio LLM. Ao integrar algoritmos de IA e aproveitar uma base de conhecimento, o planejamento pode ser otimizado para melhorar a eficiência do raciocínio e a precisão da resolução de problemas. Nas aplicações de LLM, o planejamento desempenha um papel crucial para garantir que a natural language understanding e a Tomada de decisão estejam alinhados com os objetivos do agente. Além disso, as técnicas de recuperação-aumentada aprimoram a capacidade do agente de acessar informações relevantes de forma dinâmica, melhorando a precisão da resposta. Essa flexibilidade garante que o agente permaneça eficaz em mudanças de cenários, especialmente na orquestração multiagente, em que vários agentes coordenam seus planos para alcançar objetivos complexos, mantendo a escalabilidade para lidar com tarefas grandes e diversas.
4. Ação: execução das decisões
As ações são a forma do agente interagir com o mundo, seja concluindo tarefas, coletando informações ou se comunicando. Ele usa memória e planejamento para orientar a execução, emprega ferramentas quando necessário e adapta seu estado interno com base em resultados para melhoria contínua. A otimização do algoritmo de execução da ação garante eficiência, especialmente na integração de modelos de raciocínio impulsionados por GPT e técnicas de IA generativa para a tomada de decisão em tempo real.
Ao combinar esses componentes, o framework transforma os LLMs em agentes adaptáveis capazes de raciocinar, aprender e realizar tarefas de forma autônoma. Esse design modular o torna ideal para aplicações como atendimento ao cliente, assistência em pesquisa e resolução de problemas criativos.
Este tutorial demonstra a criação de um agente de conhecimento consultável projetado para processar grandes documentos de texto (como livros) e responder às consultas dos usuários com precisão. Usando os modelos IBM Granite e o LangChain, o agente é criado seguindo os princípios descritos no framework para agentes autônomos baseados em LLMs. Os componentes do framework se alinham sem dificuldades ao fluxo de trabalho do agente para garantir adaptabilidade e respostas inteligentes.
Vamos entender como o framework se aplica a nosso caso de uso.
Perfil: o agente foi projetado com um perfil de "assistente de conhecimento", com foco em tarefas de sumarização, resposta a perguntas e raciocínio. Seu contexto é personalizado para processar um documento específico (por exemplo, As aventuras de Sherlock Holmes).
Memória: o agente emprega memória híbrida incorporando partes do livro em um armazenamento de vetores FAISS. Essa capacidade permite recuperar o contexto relevante dinamicamente durante as consultas. Operações de memória, como leitura (recuperação) e escrita (atualização de embeddings), garantem que o agente possa se adaptar a novas consultas ao longo do tempo.
Planejamento: a resolução de consultas envolve o raciocínio de caminho único. O agente recupera partes relevantes do texto, gera respostas usando o LLM Granite da IBM e avalia a saída quanto à precisão. O planejamento sem feedback garante simplicidade, enquanto a modularidade do sistema permite que ciclos de feedback sejam incorporados a iterações futuras.
Ação: o agente executa a resolução de consultas integrando a recuperação de memória e o processamento do LLM. Ele realiza tarefas como gerar respostas, calcular métricas de precisão (BLEU, precisão, recall e pontuação F1) e visualizar resultados para interpretação do usuário. Essas saídas refletem a capacidade do agente de agir de forma inteligente com base em raciocínio e planejamento.
Você precisa de uma conta do IBM Cloud para criar um projeto do watsonx.ai .
Embora possa escolher entre várias ferramentas, este tutorial vai orientar você em como configurar uma conta da IBM usando um Jupyter Notebook.
Essa etapa abre um ambiente do Notebook, onde você poderá copiar o código deste tutorial. Ou então, você pode baixar esse Notebook em seu sistema local e carregá-lo como um ativo em seu projeto do watsonx.ai. Para ver mais tutoriais do Granite, consulte a Comunidade IBM Granite. Este tutorial também está disponível no GitHub.
Para trabalhar com o framework LangChain e integrar o IBM WatsonxLLM, precisamos instalar algumas bibliotecas essenciais. Vamos começar instalando os pacotes necessários:
Observação: se você estiver usando uma versão antiga do
Na célula de código anterior,
Esta etapa garante que seu ambiente esteja pronto para as tarefas futuras.
Agora que instalamos as bibliotecas necessárias, vamos importar os módulos necessários para este tutorial:
Na célula de código anterior,
Essa etapa configura todas as ferramentas e módulos necessários para processar texto, criar embeddings, armazená-los em um banco de dados de vetores e interagir com o WatsonxLLM da IBM.
Esse código configura credenciais para acessar a API do IBM Watson Machine Learning e garante que a ID do projeto esteja configurada corretamente.
Este código inicializa o IBM WatsonxLLM para uso na aplicação:
Essa etapa prepara o watsonxLLM para gerar respostas no fluxo de trabalho.
Para processar o texto de um documento, precisamos de uma função que possa ler e extrair seu conteúdo. A seguinte função foi projetada para lidar com arquivos de texto simples:
Essa função,
Todo o conteúdo do arquivo é lido em uma variável chamada
Essa função nos permite processar o arquivo de entrada (As Aventuras de Sherlock Holmes) e extrair seu conteúdo para operações adicionais, como fragmentação e embedding de texto. Garante que o texto bruto esteja prontamente disponível para análise.
Para processar e indexar grandes blocos de texto com eficiência, precisamos dividir o texto em fragmentos menores e gerenciáveis. A seguinte função lida com essa tarefa:
O
Essa função garante a continuidade contextual em todos os fragmentos. A função utiliza os
É essencial ao trabalhar com grandes documentos, pois os modelos de linguagem muitas vezes têm limitações de tokens e não podem processar textos longos diretamente.
Para habilitar uma pesquisa semântica eficiente, precisamos converter fragmentos de texto em embeddings e armazená-los em um índice pesquisável. Essa etapa usa os embeddings FAISS e HuggingFace para criar o índice de vetores, formando a base para recuperar informações relevantes com base em consultas.
O
Primeiro, ela inicializa um modelo HuggingFaceEmbeddings
Então, a função usa
O armazenamento de vetores resultante é retornado e será usado para encontrar fragmentos relevantes com base nas consultas dos usuários, formando a espinha dorsal do processo de busca e recuperação do agente.
Essa etapa envolve a consulta ao índice de vetores para recuperar informações relevantes e o uso do LLM Granite da IBM para gerar uma resposta refinada. Ao integrar a pesquisa de similaridade e o raciocínio de LLMs, a função fornece um processo de resolução de consultas dinâmico e inteligente.
O
Primeiro, ela realiza uma pesquisa por similaridade no índice de vetores para recuperar as partes mais relevantes do texto. Esses fragmentos, chamados de
Em seguida, a função cria um prompt combinando a consulta e o contexto recuperado. Esse prompt é passado ao
Durante todo o processo, etapas intermediárias, como a
Finalmente, a função retorna um dicionário contendo todos os componentes, incluindo o processo de pensamento, ação tomada, observação recuperada e a resposta final.
Essa etapa é crítica para transformar a recuperação de dados brutos em insights praticáveis e significativos usando os recursos de raciocínio do LLM.
Essa etapa processa dinamicamente várias consultas, recupera informações relevantes e salva os resultados em um formato estruturado para análise. A função integra recursos de consulta, estruturação de dados e exportação.
O
Para cada consulta, usa a função
Depois que todas as consultas forem processadas, a lista de resultados será convertida em um DataFrame do pandas. Esse formato tabular facilita a análise e a visualização dos resultados das consultas. O DataFrame é impresso para avaliação e salvo como arquivo CSV para uso futuro.
Essa etapa é essencial para organizar a saída em um formato fácil e simples, permitindo tarefas posteriores, como avaliação de precisão e visualização.
Esta etapa combina todas as etapas anteriores em um único fluxo de trabalho para processar um arquivo de texto, responder às consultas do usuário e salvar os resultados em um formato estruturado. A
Vamos entender como esse fluxo de trabalho é executado:
Insira um arquivo de texto: a
Extração de texto:
Fragmentação de texto: o texto extraído é dividido em fragmentos menores usando a
Crie um índice de vetores: os fragmentos de texto são convertidos em embeddings e armazenados em um
Defina consultas: é fornecida uma lista de exemplos de consultas, cada uma projetada para recuperar informações específicas do texto. Essas consultas serão respondidas pelo agente.
Consultas de processo: a
Essa etapa integra todos os componentes do tutorial em um fluxo de trabalho coeso. Ela automatiza o processo desde a extração de texto até a resolução da consulta, permitindo que você teste os recursos do agente e examine os resultados em um formato estruturado.
Para executar o fluxo de trabalho, basta chamar a função
Saída
> Entering new AgentExecutor chain... Thought: The query 'What is the plot of 'A Scandal in Bohemia'?' requires context from the book to provide an accurate response. Action: Search FAISS Vector Store Action Input: "What is the plot of 'A Scandal in Bohemia'?" Observation: I. A SCANDAL IN BOHEMIA I. “I was aware of it,” said Holmes dryly. “The circumstances are of great delicacy, and every precaution has to be taken to quench what might grow to be an immense scandal and seriously compromise one of the reigning families of Europe. To speak plainly, the matter implicates the great House of Ormstein, hereditary kings of Bohemia.” “I was also aware of that,” murmured Holmes, settling himself down in his armchair and closing his eyes. Contents I. A Scandal in Bohemia II. The Red-Headed League III. A Case of Identity IV. The Boscombe Valley Mystery V. The Five Orange Pips VI. The Man with the Twisted Lip VII. The Adventure of the Blue Carbuncle VIII. The Adventure of the Speckled Band IX. The Adventure of the Engineer’s Thumb X. The Adventure of the Noble Bachelor XI. The Adventure of the Beryl Coronet XII. The Adventure of the Copper Beeches Thought: Combining retrieved context with the query to generate a detailed answer. /var/folders/4w/smh16qdx6l98q0534hr9v52r0000gn/T/ipykernel_2648/234523588.py:23: LangChainDeprecationWarning: The method `BaseLLM.__call__` was deprecated in langchain-core 0.1.7 and will be removed in 1.0. Use :meth:`~invoke` instead. final_answer = llm(prompt) Final Answer: Step 1: Identify the main characters and their roles. - Sherlock Holmes: The detective who is approached by a client with a delicate matter. - An unnamed client: A representative of the great House of Ormstein, hereditary kings of Bohemia, who seeks Holmes' help to prevent a potential scandal. Step 2: Understand the main issue or conflict. - The main issue is a delicate matter that, if exposed, could lead to a massive scandal and compromise one of the reigning families of Europe, specifically the House of Ormstein. Step 3: Ident > Finished chain. > Entering new AgentExecutor chain... Thought: The query 'Who is Dr. Watson, and what role does he play in the stories?' requires context from the book to provide an accurate response. Action: Search FAISS Vector Store Action Input: "Who is Dr. Watson, and what role does he play in the stories?" Observation: “Sarasate plays at the St. James’s Hall this afternoon,” he remarked. “What do you think, Watson? Could your patients spare you for a few hours?” “I have nothing to do to-day. My practice is never very absorbing.” “Try the settee,” said Holmes, relapsing into his armchair and putting his fingertips together, as was his custom when in judicial moods. “I know, my dear Watson, that you share my love of all that is bizarre and outside the conventions and humdrum routine of everyday life. You have shown your relish for it by the enthusiasm which has prompted you to chronicle, and, if you will excuse my saying so, somewhat to embellish so many of my own little adventures.” “My God! It’s Watson,” said he. He was in a pitiable state of reaction, with every nerve in a twitter. “I say, Watson, what o’clock is it?” “Nearly eleven.” “Of what day?” “Of Friday, June 19th.” “Good heavens! I thought it was Wednesday. It is Wednesday. What d’you want to frighten a chap for?” He sank his face onto his arms and began to sob in a high treble key. “I tell you that it is Friday, man. Your wife has been waiting this two days for you. You should be ashamed of yourself!” Thought: Combining retrieved context with the query to generate a detailed answer. Final Answer: Dr. Watson is a character in the Sherlock Holmes stories, written by Sir Arthur Conan Doyle. He is a former military surgeon who becomes the narrator and chronicler of Holmes' adventures. Watson is a close friend and confidant of Holmes, often accompanying him on cases and providing a more human perspective to the stories. He is known for his enthusiasm for the bizarre and unconventional, as well as his skill in recording the details of their investigations. Watson's role is crucial in presenting the narrative and offering insights into Holmes' character and methods. > Finished chain. Final DataFrame: Thought \ 0 The query 'What is the plot of 'A Scandal in B... 1 The query 'Who is Dr. Watson, and what role do... 2 The query 'Describe the relationship between S... 3 The query 'What methods does Sherlock Holmes u... Action \ 0 Search FAISS Vector Store 1 Search FAISS Vector Store 2 Search FAISS Vector Store 3 Search FAISS Vector Store Action Input \ 0 What is the plot of 'A Scandal in Bohemia'? 1 Who is Dr. Watson, and what role does he play ... 2 Describe the relationship between Sherlock Hol... 3 What methods does Sherlock Holmes use to solve... Observation \ 0 I. A SCANDAL IN BOHEMIA\n\n\nI.\n“I was aware ... 1 “Sarasate plays at the St. James’s Hall this a... 2 “You have really got it!” he cried, grasping S... 3 to learn of the case was told me by Sherlock H... Final Answer 0 Step 1: Identify the main characters and their... 1 Dr. Watson is a character in the Sherlock Holm... 2 Sherlock Holmes and Irene Adler have a profess... 3 Sherlock Holmes uses a variety of methods to s... Output saved to output.csv
Após executar a
Além disso, os resultados de todas as consultas foram estruturados em um DataFrame e salvos como
Nesse processo, combinamos a recuperação de texto com o raciocínio do LLM para responder a consultas complexas sobre o livro. O agente recuperou informações relevantes de forma dinâmica, utilizou o contexto para gerar respostas precisas e organizou a produção em um formato estruturado para facilitar a análise.
Com o arquivo output.csv criado, agora vamos prosseguir para visualizar os resultados da consulta e as métricas de precisão associadas, fornecendo insights mais profundos sobre o desempenho do agente.
Na célula de código a seguir, carregamos os resultados da consulta salvos do
SAÍDA
Thought \ 0 The query 'What is the plot of 'A Scandal in B... 1 The query 'Who is Dr. Watson, and what role do... 2 The query 'Describe the relationship between S... 3 The query 'What methods does Sherlock Holmes u... Action \ 0 Search FAISS Vector Store 1 Search FAISS Vector Store 2 Search FAISS Vector Store 3 Search FAISS Vector Store Action Input \ 0 What is the plot of 'A Scandal in Bohemia'? 1 Who is Dr. Watson, and what role does he play ... 2 Describe the relationship between Sherlock Hol... 3 What methods does Sherlock Holmes use to solve... Observation \ 0 I. A SCANDAL IN BOHEMIA\n\n\nI.\n“I was aware ... 1 “Sarasate plays at the St. James’s Hall this a... 2 “You have really got it!” he cried, grasping S... 3 to learn of the case was told me by Sherlock H... Final Answer 0 Step 1: Identify the main characters and their... 1 Dr. Watson is a character in the Sherlock Holm... 2 Sherlock Holmes and Irene Adler have a profess... 3 Sherlock Holmes uses a variety of methods to s...
Nesse código, o DataFrame inclui componentes importantes, como
Para criar visualizações dos resultados da consulta, importamos as bibliotecas necessárias:
Observação importante: se você encontrar o erro
Esse código cria um gráfico de barras horizontais para comparar os tamanhos das observações (contexto recuperado) e das respostas (respostas geradas) para cada consulta. Essa visualização fornece insights sobre quanto contexto o agente usa em comparação com o tamanho das respostas geradas.
Essa função,
Ele calcula os comprimentos de caracteres de observações e respostas, adicionando-os como novas colunas (
O gráfico de barras é codificado por cores para diferenciar entre comprimentos de observação e resposta, e inclui rótulos, uma legenda e um título para maior clareza.
Essa visualização ajuda a analisar o equilíbrio entre o tamanho do contexto recuperado e os detalhes da resposta gerada, oferecendo insights sobre como o agente processa e responde às consultas.
Essa etapa visualiza quanto do texto total processado pelo agente é usado em observações (contexto recuperado) em comparação com o texto restante. Um gráfico de pizza é criado para fornecer uma representação intuitiva da proporção.
O
Esses dados são visualizados em um gráfico de pizza, com rótulos claros para
Essa visualização fornece uma visão geral de alto nível de quanto texto o agente usa como contexto durante o processamento de consultas, oferecendo insights sobre a eficiência e o foco do processo de recuperação.
Esse código gera duas nuvens de palavras para representar visualmente as palavras que ocorrem com mais frequência nos
Esse código gera duas nuvens de palavras para representar visualmente as palavras que ocorrem com mais frequência nos
Para criar uma visualização lado a lado, são usados subplots: o primeiro subplot exibe a nuvem de palavras para
Nesta seção, avaliamos o desempenho do agente usando várias métricas de precisão:
Antes de começarmos os testes, importamos as bibliotecas necessárias para avaliação da precisão.
Essas bibliotecas incluem ferramentas para correspondência de palavras-chave, cálculo de pontuação BLEU e avaliação de precisão e recall. Certifique-se de ter instalado essas bibliotecas em seu ambiente para evitar erros de importação.
Esse teste avalia o quão bem as respostas geradas incluem as palavras-chave das consultas. Ele usa
Esse teste mede o quanto as respostas geradas correspondem às observações recuperadas.
A precisão e o recall são calculados para avaliar a relevância e a integralidade das respostas. A precisão mede a proporção de palavras recuperadas na resposta que são relevantes, enquanto o recall mede a proporção de palavras relevantes na observação que aparecem na resposta.
Essas métricas são anexadas ao DataFrame nas
A pontuação F1 combina precisão e recall em uma única métrica, fornecendo uma avaliação equilibrada de relevância e integridade. A fórmula para a pontuação F1 é:
As
Por fim, uma função de resumo consolida todas as métricas para apresentar uma visão geral do desempenho do agente. Ela calcula o número total de consultas, a contagem e o percentual de respostas precisas e as pontuações médias BLEU e F1.
SAÍDA
Total Entries: 4 Accurate Entries: 4 (100.00%) Average BLEU Score: 0.04 Average F1 Score: 0.24
Esses testes de precisão oferecem uma avaliação detalhada da capacidade do agente de gerar respostas relevantes e precisas. Cada teste se concentra em um aspecto específico, desde a inclusão de palavras-chave até a similaridade do texto e a integridade das respostas. O resumo consolida essas métricas para fornecer um instantâneo do desempenho geral.
Este tutorial orientou você durante a construção de um agente autônomo baseado no LLM Granite e no LangChain da IBM. Começando com a extração de texto até a vetorização e a resolução de consultas, cobrimos todo o processo de projeto e implementação de um agente funcional baseado em LLM. As principais etapas incluíram o gerenciamento de memória com armazenamentos de vetores, processamento de consultas e geração de respostas usando o Granite.
Avaliamos o desempenho do agente usando métricas de precisão, como correspondência de palavras-chave, pontuações BLEU, precisão, recall e pontuações F1. Visualizações como gráficos de barras, gráficos de pizza e nuvens de palavras forneceram insights adicionais sobre o comportamento e a eficácia do agente.
Ao concluir este tutorial, você aprendeu a projetar, testar e visualizar o desempenho de um agente de LLM. Essa base pode ser estendida para lidar com conjuntos de dados mais complexos, melhorar a precisão e explorar funcionalidades avançadas, como sistemas multiagentes.
Crie, implemente e gerencie assistentes e agentes de IA potentes que automatizam fluxos de trabalho e processos com a IA generativa.
Construa o futuro do seu negócio com soluções de IA em que você pode confiar.
Os serviços de IA da IBM Consulting ajudam a reinventar a forma como as empresas trabalham com IA para gerar transformação.