O que é LangChain?

Autores

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

O que é o LangChain?

O LangChain é um framework de orquestração de código aberto para o desenvolvimento de aplicações com grandes modelos de linguagem (LLMs). Disponível em bibliotecas Python e Java, as ferramentas e APIs do LangChain simplificam o processo de criação de aplicações baseados em LLMs, como chatbots e agentes de IA. 

O LangChain atua como uma interface genérica para praticamente qualquer LLM, proporcionando um ambiente de desenvolvimento centralizado para construir aplicações LLM e integrá-los a fontes de dados externas e fluxos de trabalho de software. A abordagem baseada em módulos da LangChain permite que desenvolvedores e cientistas de dados comparem de forma dinâmica diversos prompts e até mesmo diversos modelos de base com necessidade mínima de reescrever código. Esse ambiente modular também possibilita que os programas utilizem vários LLMs: por exemplo, uma aplicação que utiliza um LLM para interpretar consultas de usuários e outro LLM para redigir uma resposta.

Lançado por Harrison Chase em outubro de 2022, o LangChain teve uma ascensão meteórica: em junho de 2023, foi o projeto de código aberto de crescimento mais rápido no Github.1 Coincidindo com o importante lançamento do ChatGPT da OpenAI no mês seguinte, o LangChain desempenhou um papel significativo ao tornar a IA generativa (IA gen) mais acessível para entusiastas e startups após sua ampla popularidade. Os avanços na acessibilidade para a IA agêntica estão atualmente permitindo uma revolução na automação.

O LangChain pode facilitar a maioria dos casos de uso de LLMs e de processamento de linguagem natural (NLP), como chatbots, pesquisa inteligente, respostas a perguntas, serviços desumarização ou até mesmo agentes de IA capazes de automação robótica de processos.

Integrações com LLMs

LLMs não são aplicações independentes: são modelos estatísticos previamente treinados que devem ser combinados com uma aplicação (e em alguns casos com fontes de dados específicas) para atenderem à sua finalidade.

Por exemplo, o Chat-GPT não é um LLM: é uma aplicação de chatbot que, dependendo da versão escolhida, utiliza o modelo de linguagem GPT-3.5 ou GPT-4. Embora seja o modelo GPT que interpreta a entrada do usuário e compõe uma resposta em linguagem natural, é a aplicação que (entre outras coisas) fornece uma interface para o usuário digitar e ler e um design de UX que governa a experiência do chatbot. Mesmo no nível empresarial, o Chat-GPT não é a única aplicação que emprega o modelo GPT: a Microsoft utiliza o GPT-4 para impulsionar o Bing Chat.

Além disso, embora modelos de base (como os que impulsionam os LLMs) sejam treinados previamente em conjuntos de dados maciços, eles não são oniscientes. Se uma determinada tarefa exigir acesso a informações contextuais específicas, como documentação interna ou conhecimento do domínio, os LLMs deverão estar conectados a essas fontes de dados externas. Mesmo se você quiser que seu modelo reflita a consciência em tempo real dos eventos atuais, ele exige informações externas: os dados internos de um modelo são atualizados somente durante o período em que foi treinado previamente.

Da mesma forma, se uma determinada tarefa de IA generativa exigir acesso a fluxos de trabalho de software externos, por exemplo, se você quiser que seu agente virtual integre-se ao Slack, precisará de uma maneira de integrar o LLM à API desse software.

Embora essas integrações geralmente possam ser obtidas com código totalmente manual, frameworks de orquestração como o LangChain e o portfólio de produtos de inteligência artificial IBM watsonx simplificam muito o processo. Eles também facilitam muito a experimentação com diversos LLMs para comparar os resultados, pois modelos diferentes podem ser trocados com alterações mínimas no código.

Como funciona o LangChain?

No núcleo do LangChain há um ambiente de desenvolvimento que otimiza a programação de aplicativos de LLM por meio do uso de abstração: a simplificação do código por representar um ou mais processos complexos como um componente nomeado que engloba todas as etapas de constituição.

As abstrações são um elemento comum da vida cotidiana e da linguagem. Por exemplo, "π" nos permite representar a razão entre o comprimento da circunferência de um círculo e o de seu diâmetro sem ter que escrever seus dígitos infinitos. Da mesma forma, um termostato nos permite controlar a temperatura em nossa casa sem precisar entender os circuitos complexos que isso implica. Basta sabermos como diversas configurações de termostato se traduzem em temperaturas diferentes.

O LangChain é essencialmente uma biblioteca de abstrações para Python e Javascript, representando etapas e conceitos comuns necessários para trabalhar com modelos de linguagem. Esses componentes modulares, como funções e classes de objetos, servem como blocos de construção de programas de IA generativos. Podem ser "encadeados" para criar aplicativos, minimizando a quantidade de código e o entendimento refinado necessário para executar tarefas complexas de PNL. Embora a abordagem abstrata da LangChain possa limitar até que ponto um programador especializado pode personalizar uma aplicação de forma refinada, ela possibilita que especialistas e recém-chegados experimentem e criem protótipos rapidamente.

Importação de modelos de idioma

Quase qualquer LLM pode ser usado no LangChain. É fácil importar modelos de idioma no LangChain, desde que você tenha uma chave da API. A classe LLM foi projetada para oferecer uma interface padrão para todos os modelos.

A maioria dos provedores de LLM exigirá que você crie uma conta para receber uma chave de API. Algumas dessas APIs, especialmente aquelas para modelos proprietários de código fechado, como as oferecidas pela OpenAI ou pela Anthropic, podem ter custos associados.

Muitos modelos de código aberto, como o LLaMa da Meta IA, o Deepseek-LLM da Deepseek, o Granite da IBM e o Flan-T5 do Google, podem ser acessados por meio do Hugging Face. O IBM watsonx. por meio de sua parceria com a Hugging Face, também oferece um pacote selecionado de modelos de código aberto. A criação de uma conta com qualquer um dos serviços possibilitará a geração de uma chave de API para qualquer um dos modelos oferecidos por esse provedor.

O LangChain não está limitado a modelos de base prontos para uso: a classe CustomLLM  permite wrappers de LLMs personalizados. Da mesma forma, você pode usar as APIs do IBM watsonx e o Python SDK, que contêm uma integração com o LangChain, para criar aplicações no LangChain com modelos que você já treinou ou ajustou para suas necessidades específicas com a classe WatsonxLLM (e a ID de projeto específica do modelo).

Modelos de prompts

Prompts são as instruções apresentadas a um LLM. A "arte" de compor prompts que efetivamente forneçam o contexto necessário para que o LLM interprete a entrada e estruture a saída de maneira mais útil para você é frequentemente chamada de engenharia de prompts.

A classe PromptTemplate em LangChain formaliza a composição de prompts sem a necessidade de codificar manualmente o contexto e as consultas. Elementos importantes de um prompt também são inseridos como classes formais, como input_variables. Um modelo de prompt pode, portanto, conter e reproduzir contexto, instruções (como "não usar termos técnicos"), um conjunto de exemplos para orientar suas respostas (no que é chamado de "prompt few-shot"), um formato de saída definido ou uma pergunta padronizada a ser respondida. Você pode salvar e nomear um modelo de prompt estruturado de forma eficaz e reutilizá-lo facilmente, conforme necessário.

Embora esses elementos possam ser codificados manualmente, os módulos do PromptTemplate possibilitam uma integração tranquila com outros recursos do LangChain, como as cadeias epônimas.

Correntes

Como seu nome implica, cadeias são o núcleo dos fluxos de trabalho do LangChain. Combinam LLMs com outros componentes, criando aplicações por meio da execução de uma sequência de funções.

A cadeia mais básica é a LLMChain. Ela apenas chama um modelo e um modelo de prompt para esse modelo. Por exemplo, imagine que você salvou um prompt como "ExamplePrompt" e deseja executá-lo em relação ao Flan-T5. Você pode importar o LLMChain de langchain.chains e, em seguida, definir chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt). Para executar a cadeia para uma determinada entrada, basta chamar chain_example.run("input")."

Para utilizar a saída de uma função como entrada para a próxima função, você pode utilizar SimpleSequentialChain. Cada função pode usar prompts diferentes, diferentes ferramentas, parâmetros ou até mesmo diferentes modelos, dependendo de suas necessidades específicas.

Índices

Para realizar determinadas tarefas, as LLMs precisarão acessar fontes de dados externas específicas não incluídas em seu conjunto de dados de treinamento, como documentos internos, e-mails ou conjuntos de dados. LangChain refere-se coletivamente a essa documentação externa como “índices"."

Carregadores de documentos

O LangChain oferece uma grande variedade de carregadores de documentos para aplicações de terceiros (link externo a ibm.com). Isso possibilita a fácil importação de dados de fontes como serviços de file storage (como Dropbox, Google Drive e Microsoft OneDrive), conteúdo da web (como YouTube, PubMed ou URLs específicos), ferramentas de colaboração (como Airtable, Trello, Figma e Notion), bancos de dados (como Pandas, MongoDB e Microsoft), entre muitos outros.

Bancos de dados de vetores

Ao contrário dos bancos de dados estruturados "tradicionais", os bancos de dados de vetores representam pontos de dados convertendo-os em embeddings vetoriais: representações numéricas na forma de vetores com um número fixo de dimensões, muitas vezes agrupando pontos de dados relacionados com métodos de aprendizado não supervisionados. Isso possibilita consultas de baixa latência, mesmo para conjuntos de dados maciços, o que aumenta consideravelmente a eficiência. Os embeddings vetoriais também armazenam os metadados de cada vetor, melhorando ainda mais as possibilidades de pesquisa.

O LangChain oferece integrações para mais de 25 métodos de incorporação diferentes, bem como para mais de 50 lojas de vetor diferentes (hospedado na nuvem e no local).

Divisores de texto 

Para aumentar a velocidade e reduzir as demandas computacionais, geralmente é sensato dividir documentos de texto grandes em partes menores. Os TextSplitters do LangChain dividem o texto em pequenos trechos com significado semântico que podem então ser combinados empregando métodos e parâmetros à sua escolha.

Recuperação

Uma vez conectadas fontes externas de conhecimento, o modelo deve ser capaz de buscar e integrar com rapidez as informações relevantes conforme a necessidade. Assim como o watsonx, o LangChain oferece geração aumentada de recuperação (RAG): seus módulos recuperadores aceitam uma consulta por string como entrada e retornam uma lista de Documentoscomo saída.

Com o LangChain, também podemos criar sistemas de RAG agêntica. Em aplicações de RAG tradicionais, o LLM é fornecido com um banco de dados de vetores para referência ao formar suas respostas. Por outro lado, as aplicações da IA agêntica não se restringem apenas à recuperação de dados. A RAG agêntica também pode abranger ferramentas para tarefas como resolver cálculos matemáticos, escrever e-mails, realizar análises de dados e muito mais.

Memória

Por padrão, os LLMs não têm memória de longo prazo de interações anteriores (a menos que o histórico do chat seja usado como entrada para uma consulta). O LangChain soluciona esse problema com utilitários simples para adicionar memória a um sistema, com opções que vão desde a retenção total de todas as conversas até a retenção de um resumo da conversa até a retenção das n trocas mais recentes.

Ferramentas

Apesar do poder e da versatilidade anunciados, os LLMs têm limitações importantes: falta de informações atualizadas, falta de conhecimento específico do domínio e dificuldade geral com matemática.

As ferramentas do LangChain são um conjunto de funções que capacitam os agentes do LangChain a interagir com informações do mundo real para expandir ou melhorar os serviços que podem fornecer. Exemplos de ferramentas criadas previamente do LangChain:

  • Wolfram Alpha: oferece acesso a funções poderosas de visualização de dados e computação, possibilitando recursos matemáticas sofisticados.

  • Google Search: entrega o acesso ao Google Search, equipando aplicativos e agentes com informações em tempo real.

  • OpenWeatherMap: obtém informações meteorológicas.

  • Wikipedia: oferece acesso eficiente a informações de artigos da Wikipedia.

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Agentes do LangChain

Podemos criar um agente com o framework LangChain para dar a um LLM a capacidade de tomar decisões, usar ferramentas e concluir tarefas complexas passo a passo, em vez de apenas gerar uma única resposta de texto. Ao contrário de uma simples interação de prompt-resposta com apenas um LLM, um agente com tecnologia LangChain pode pensar, planejar, executar uma sequência de ações, aprender e se adaptar.

O LangChain oferece uma experiência de usuário simplificada com um framework pronto e extensível para criar agentes de IA. Portanto, não há necessidade de criar uma nova lógica de seleção de ferramentas, loops de raciocínio (como para agentes ReAct), rastreamento de observação/ação ou orquestração e formatação de prompts.

Os pacotes, classes e métodos específicos do LangChain variam de acordo com a plataforma de IA que você pretende usar. Alguns dos principais componentes da classe watsonxLLM que permitem a comunicação com modelos do watsonx.ai usando o LangChain:

  • langchain_ibm: o pacote responsável pela integração do LangChain IBM. É necessário instalar esse pacote para usar qualquer uma das classes e métodos a seguir.
  • ibm_watsonx_ai: a biblioteca que permite a conexão com serviços do watsonx.ai, como IBM Cloud e IBM Cloud Pak for Data.
  • APIClient: a classe principal da biblioteca ibm_watsonx_ai que gerencia os recursos de serviços de APIs. Os parâmetros incluem as credenciais e endpoints de APIs.
  • WatsonxLLM: o wrapper para os modelos de base do IBM watsonx.ai. Esse wrapper fornece integração em cadeia e é necessário para importar. Os parâmetros incluem a ID do modelo, a chave da API do watsonx.ai, o endpoint da URL, a ID do projeto, bem como quaisquer parâmetros do LLM.
  • ModelInference: a classe que instancia a interface do modelo. Os parâmetros incluem a ID do modelo, as credenciais do watsonx.ai, a ID do projeto, os parâmetros do modelo etc. Uma vez instanciado, o modelo pode ser passado para a classe.
  • invoke: o método que chama o modelo diretamente com um único prompt do tipo string. 
  • generate: o método que chama o modelo com vários prompts do tipo string em uma lista.

Outra classe do LangChain para criar agentes de IA com a integração de chamadas e do encadeamento de ferramentas com os modelos do watsonx.ai é o ChatWatsonx. Essa classe, que é aproveitada em muitos de nossos tutoriais, usa o método bind_tools para transmitir uma lista de ferramentas para o LLM em cada iteração. Isso pode incluir ferramentas personalizadas e criadas previamente. Para recuperar a resposta dos agentes de IA, o método invoke pode ser usado. Depois que o agente é invocado, o atributo tool_calls da resposta exibe o nome, os argumentos, a ID e o tipo de cada chamada de ferramenta feita, se houver.

LangGraph

O LangGraph, criado pela LangChain, é um framework de agentes de IA de código aberto compatível com a orquestração multiagentes e que permite que os desenvolvedores criem fluxos de trabalho agênticos onde diferentes agentes interagem, se especializam e colaboram. 

Em sua essência, o LangGraph usa o poder das arquiteturas baseadas em gráficos para modelar e gerenciar as intrincadas relações entre vários componentes de um fluxo de trabalho de agentes de IA. Combinado com o mecanismo de monitoramento human-in-the-loop e um conjunto de APIs e integrações de ferramentas, o LangGraph disponibiliza aos usuários uma plataforma versátil para o desenvolvimento de soluções e fluxos de trabalho de IA, incluindo chatbots , gráficos de estado e  outros sistemas baseados em agentes

Com a biblioteca langchain-mcp-adapters, os agentes do LangGraph também podem usar ferramentas definidas em servidores de protocolo de contexto de modelo (MCP). A biblioteca mcp também permite que os usuários criem servidores MCP personalizados. Essencialmente, o MCP permite uma conexão segura entre um sistema de IA, como um agente de IA, e ferramentas externas. Assim, vários LLMs podem se conectar às mesmas ferramentas e fontes de dados dado o MCP padrão. 

AI Academy

Por que os modelos de base são uma mudança de paradigma para a IA

Aprenda sobre uma nova classe de modelos de IA flexíveis e reutilizáveis que podem liberar novas receitas, reduzir custos e aumentar a produtividade, e utilize o nosso guia para se aprofundar.

LangSmith

Lançado no outono de 2023, o LangSmith tem como objetivo preencher a lacuna entre as capacidades de prototipagem acessíveis que deram destaque ao LangChain e a construção de aplicações de LLMs de qualidade de produção. 

O LangSmith entrega ferramentas para monitorar, avaliar e depurar aplicações, incluindo a capacidade de rastrear automaticamente todas as chamadas de modelos para detectar erros e testar o desempenho em diversas configurações de modelos. O uso do LangSmith não está limitado a aplicações construídas com o ecossistema LangChain. A avaliação do desempenho dos agentes é feita usando avaliadores LLM ocmo juiz. Essa observabilidade e essas métricas principais visam otimizar aplicações mais robustas e econômicas. 

Introdução ao LangChain

O LangChain é código aberto e gratuito: o código-fonte está disponível para download no Github.

O LangChain também pode ser instalado no Python com um comando pip simples: pip install langchain. Para instalar todas as dependências do LangChain (e não somente aquelas que você considera necessárias), execute o comando pip install langchain[all].

Muitos tutoriais passo a passo são fornecidos pela IBM, incluindo chamada de ferramentas LangChain, RAG agêntica,orquestração de agentes de LLMs, fragmentação agêntica e mais.

Casos de uso do LangChain

Aplicações de IA feitas com o LangChain proporcionam grande utilidade para uma variedade de casos de uso, desde tarefas diretas de resposta a perguntas e geração de texto até soluções mais complexas que usam um LLM como um "mecanismo de raciocínio".

Chatbots

Os chatbots estão entre os usos mais intuitivos dos LLMs. O LangChain pode ser utilizado para apresentar contexto adequado para o uso específico de um chatbot e para integrar chatbots a canais de comunicação e fluxos de trabalho existentes com suas próprias APIs.

Sumarização

Os modelos de linguagem podem ser designados para sumarizar diversos tipos de texto, desde analisar artigos acadêmicos complexos e transcrições até oferecer um resumo de e-mails recebidos.

Respostas a perguntas

Usando documentos específicos ou bases de conhecimento especializadas (como Wolfram, arXiv ou PubMed), os LLMs podem recuperar informações relevantes do armazenamento e articular respostas úteis). Se receber um ajuste fino ou for solicitado com prompts corretos, alguns LLMs podem responder a muitas perguntas, mesmo sem informações externas.

Aumento de dados

LLMs podem ser usados para gerar dados sintéticos para uso em aprendizado de máquina. Por exemplo, um LLM pode ser treinado para gerar amostras de dados adicionais que se assemelhem aos pontos de dados em um conjunto de dados de treinamento.

Agentes virtuais

Integrados aos fluxos de trabalho certos, os módulos de agentes do LangChain podem usar um LLM para determinar as próximas etapas de forma autônoma e adotar medidas usando automação robótica de processos (RPA).

Soluções relacionadas
Modelos de base

Explore a biblioteca de modelos de base da IBM no portfólio do watsonx para escalar a IA generativa com confiança na sua empresa.

Conheça o watsonx.ai
Soluções de inteligência artificial

Use a IA a serviço da sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.

Explore as soluções de IA
Consultoria e serviços em IA

Reinvente os fluxos de trabalho e as operações críticas adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor comercial.

Explore os serviços de IA
Dê o próximo passo

Explore a biblioteca da IBM de modelos de base no portfólio do IBM® watsonx para escalar a IA generativa para os seus negócios com confiança.

Explore o watsonx.ai Explore as soluções de IA