LangChain é uma estrutura 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 LLM, como chatbots e agentes virtuais.
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 ascensão meteórica à proeminência: em junho de 2023, era o projeto de código aberto que mais crescia no Github.1 Coincidindo com o importante lançamento do ChatGPT da OpenAI no mês seguinte, o LangChain desempenhou um papel considerável tornando a IA generativa mais acessível aos entusiastas na esteira de sua ampla popularidade.
O LangChain pode facilitar a maioria dos casos de uso de LLMs e de processamento de linguagem natural (PLN) como chatbots, pesquisa inteligente, respostas a perguntas, serviços de resumo ou até mesmo agentes virtuais capazes de automatizar processos robóticos.
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 idioma 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) apresenta uma interface para o usuário digitar e ler e um design de UX que controla 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 como tecnologia do Bing Chat.
Além disso, embora os modelos de base (como os que alimentam 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 geralmente essas integrações possam ser obtidas com código totalmente manual, frameworks como LangChain e o portfólio de produtos de IA IBM watsonx simplificam muito o processo. Elas 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.
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.
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 BLOOM da BigScience, o LLaMa da Meta IA e o Flan-T5 do Google, podem ser acessados por meio do Hugging Face (link fora do ibm.com). O IBM watsonx, por meio de sua parceria com a Hugging Face, também oferece um conjunto 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 se limita a modelos de base prontos para uso: a CustomLLM class (link fora do ibm.com) possibilita wrappers LLM 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 o ID de projeto específico do modelo).
Prompts são as instruções apresentadas a um LLM. A "arte" de compor prompts que efetivamente apresentem o contexto necessário para que o LLM interprete a entrada e estruture a saída da maneira mais útil é 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.
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 contra Flan-T5. Você pode importar LLMChain de langchain.chains, 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.
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"."
O LangChain oferece uma grande variedade de carregadores de documentos para aplicações de terceiros (link fora do ibm.com). Isso possibilita a fácil importação de dados de fontes como serviços de armazenamento de arquivos (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.
Ao contrário dos bancos de dados estruturados "tradicionais", os bancos de dados vetoriais representam pontos de dados convertendo-os em incorporações 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. As incorporações 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).
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.
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 Documentosna saída.
Por padrão, os LLMs não têm memória de longo prazo de conversas 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.
Os agentes do LangChain podem usar um determinado modelo de idioma como um "mecanismo de raciocínio" para determinar quais ações tomar. Ao criar uma cadeia para um agente, as entradas contêm:
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 (link fora de ibm.com) são um conjunto de funções que capacita os agentes do LangChain a interagir com informações do mundo real para expandir ou melhorar os serviços que podem entregar. Exemplos de ferramentas proeminentes 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.
Lançado no outono de 2023, o LangSmith pretende preencher a lacuna entre os recursos de prototipagem acessíveis que levaram a LangChain à proeminência e à construção de aplicações de LLM com qualidade de produção.
O LangSmith entrega ferramentas para monitorar, avaliar e depurar aplicativos, incluindo a capacidade de rastrear automaticamente todas as chamadas de modelo para detectar erros e testar o desempenho em diversas configurações de modelo. Essa visibilidade visa a capacitar aplicativos mais robustos e econômicos.
O LangChain é código aberto e gratuito: o código-fonte está disponível para baixar no Github (o link fora do ibm.com).
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].
Há muitos tutoriais passo a passo disponíveis no ecossistema da comunidade LangChain e na documentação oficial em docs.langchain.com (link fora do ibm.com).
Aplicativos feitos com o LangChain entregam 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".
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.
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.
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.
Conheça o IBM® Granite, nossa família de modelos abertos de IA de alto desempenho, confiáveis e personalizados para a empresa e otimizados para escalar suas aplicações de IA. Explore as opções de linguagem, código, séries temporais e proteções.
Saiba como selecionar o modelo de base de IA mais adequado para seu caso de uso.
Mergulhe nos artigos, blogs e tutoriais do IBM Developer para aprofundar seu conhecimento sobre LLMs.
Saiba como incentivar sempre as equipes a melhorar o desempenho do modelo e superar a concorrência utilizando as técnicas e infraestrutura mais recentes de IA.
1 As startups de código aberto com crescimento mais rápido no Q2 de 2023 (link fora de ibm.com), Runa Capital, 2023
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com