Minha IBM Efetue login Inscreva-se

O que é LangChain?

31 de outubro de 2023

O que é LangChain?

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.

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

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionadas por especialistas sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

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 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).

Modelos de prompts

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.

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

Í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 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.

Bancos de dados vetoriais

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).

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 Documentosna saída.

Memória

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.

Agentes

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:

  • uma lista de ferramentas disponíveis para serem aproveitadas.
  • entrada do usuário (como prompts e consultas).
  • quaisquer etapas relevantes executadas anteriormente.

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 (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.

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

Introdução ao LangChain

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).

Casos de uso do LangChain

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".

  • Chatbots: os chatbots estão entre os usos mais intuitivos de LLMs. O LangChain pode ser utilizado para apresentar contexto adequado para o uso específico de um chatbot e para integrar chatbots em canais de comunicação e fluxos de trabalho existentes com suas próprias APIs.
  • Resumos: os modelos de linguagem podem ser encarregados de resumir muitos tipos de texto, desde a análise de artigos acadêmicos complexos e transcrições até o fornecimento de um resumo dos e-mails recebidos.
  • Respostas às perguntas: utilizando documentos específicos ou bases de conhecimento especializadas (como Wolfram, arXiv ou PubMed), as LLMs podem recuperar informações relevantes do armazenamento e articular respostas úteis). Se ajustado ou solicitado com prompts corretos, alguns LLMs podem responder a muitas perguntas, mesmo sem informações externas.
  • Aumento de dados: os LLMs podem ser utilizados 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 agente do LangChain podem utilizar um LLM para determinar as próximas etapas de forma autônoma e tomar medidas com automação robótica de processos (RPA).
Soluções relacionadas

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
Notas de rodapé

1 As startups de código aberto com crescimento mais rápido no Q2 de 2023 (link fora de ibm.com), Runa Capital, 2023