LangChain é uma ferramenta de desenvolvimento que facilita a incorporação de modelos de linguagem complexos e aplicações, conectando elementos e disponibilizando uma interface de programação de aplicativos simples e unificada. Aqui está uma breve introdução.

Se você trabalha com desenvolvimento de software e tem dificuldades em acompanhar as novidades sobre modelos de linguagem avançados, pode se sentir sobrecarregado ou confuso, assim como eu me senti. É comum vermos o lançamento diário de novos modelos de código aberto ou o anúncio de recursos importantes por empresas que oferecem modelos comerciais.
Os LLMs estão se tornando essenciais na pilha de software atual. Contudo, utilizar uma API de modelo de provedores como OpenAI ou integrar um modelo de código aberto em um aplicativo requer mais do que simplesmente enviar um prompt e aguardar uma resposta. É necessário levar em conta diversos aspectos, desde ajustar os parâmetros até moderar a resposta.
Também disponível no InfoWorld: Aprendizado Zero-shot e os fundamentos da inteligência artificial generativa.
Os LLMs são desprovidos de memória, o que implica que não retêm informações de mensagens anteriores em uma conversa. Cabe ao programador preservar o histórico e fornecer contexto ao LLM. É possível que essas interações precisem ser registradas em um banco de dados duradouro para recuperar o contexto em futuras conversas. Portanto, a tarefa de adicionar memória de curto e longo prazo aos LLMs é uma das principais responsabilidades dos desenvolvedores.
Outro obstáculo é a ausência de diretrizes claras para os LLMs. É possível que seja necessário recorrer a diversos modelos especializados em diferentes situações, como análise de sentimentos, classificação, respostas a perguntas e sumarização. Gerenciar múltiplos LLMs é desafiador e demanda habilidade para lidar com essa diversidade.
Uma única interface de programação de aplicativos para o desenvolvimento de aplicativos LLM.
LangChain é um kit de desenvolvimento concebido para facilitar a incorporação de LLMs e aplicações. Aborda a maioria dos desafios previamente discutidos. Assim como um driver ODBC ou JDBC, LangChain atua como uma camada de abstração sobre o banco de dados subjacente, permitindo a utilização de instruções SQL padrão. Ao abstrair os pormenores de implementação dos LLMs subjacentes, LangChain disponibiliza uma API simples e unificada. Esta interface simplifica a troca de modelos entre os desenvolvedores, sem a necessidade de alterações significativas no código.
LangChain foi introduzido no mesmo período que o ChatGPT, sendo desenvolvido por Harrison Chase, que fez sua estreia no final de outubro de 2022, pouco antes do aumento de popularidade dos modelos de linguagem de longa escala (LLMs). Desde então, a comunidade tem colaborado de forma ativa, elevando LangChain como uma das principais opções para interagir com os LLMs.
LangChain é uma estrutura robusta que se conecta a ferramentas externas para criar um ambiente de trabalho conjunto. Vamos analisar como ela coordena o processo necessário para alcançar o resultado esperado de um LLM.

Origens de informações
As aplicações devem obter informações de fontes externas, como arquivos PDF, sites, arquivos CSV e bancos de dados tradicionais, a fim de estabelecer o contexto para o LLM. O LangChain se conecta de forma eficiente com componentes que têm a capacidade de acessar e obter dados de diversas fontes.
Inclusão de termos no vocabulário.
Alguns dados provenientes de fontes externas precisam ser transformados em vetores, o que é realizado ao passar o texto por um modelo de incorporação de palavras vinculado ao LLM, como o modelo GPT-3.5 da OpenAI. O LangChain seleciona o modelo de incorporação mais adequado com base no LLM escolhido, eliminando a necessidade de adivinhação ao combinar os modelos.
Princípios de armazenamento de informações em forma vetorial
A LangChain facilita o armazenamento e a recuperação de vetores de diversas origens, que vão desde arrays em memória até bancos de dados vetoriais hospedados, como Pinecone, por meio do armazenamento das incorporações geradas em um banco de dados vetorial para a realização de pesquisas de similaridade.
Modelos extensos de linguagem.
LangChain é compatível com os modelos de linguagem de aprendizado profundo convencionais da OpenAI, Cohere e AI21, bem como com os modelos de linguagem de código aberto disponíveis no Hugging Face. A variedade de modelos suportados e interfaces de programação de aplicativos está expandindo rapidamente.

O diagrama acima ilustra a essência da estrutura LangChain, onde as aplicações no nível superior se comunicam com um dos componentes LangChain por meio do SDK Python ou JavaScript. É importante compreender a função desempenhada por esses componentes.
Modelo de Entrada e Saída.
O módulo de entrada e saída do Modelo I/O se encarrega da interação com o LLM. Sua função principal é auxiliar na criação de prompts eficazes, utilizando a API do modelo e interpretando a saída. A engenharia de prompts, fundamental para a IA generativa, é bem tratada pelo LangChain. Esse módulo simplifica a autenticação, os parâmetros da API e os pontos de extremidade expostos pelos provedores LLM. Por fim, pode interpretar a resposta do modelo no formato desejado para ser consumida pela aplicação.
Transmissão de informações eletrônicas.
Considere o módulo de conexão de dados como o canal ETL da sua aplicação LLM. Ele se encarrega de importar documentos externos, como arquivos PDF ou Excel, dividindo-os em partes para processá-los em lotes de palavras incorporadas, armazenando essas incorporações em um banco de dados vetorial e, por fim, recuperando-as por meio de consultas. Conforme mencionado previamente, esse é o componente fundamental do LangChain.
Pode me fornecer mais contexto ou uma frase específica do texto para que eu possa parafraseá-lo adequadamente?
Interagir com LLMs é comparável ao uso de pipelines Unix em muitos aspectos. A saída de um módulo é encaminhada como entrada para o próximo, confiando frequentemente no LLM para esclarecer e destilar a resposta até obter o resultado desejado. Os fluxos em LangChain são desenvolvidos para criar pipelines eficazes que utilizam os componentes e LLMs para alcançar a resposta desejada. Uma sequência simples pode consistir em um prompt e um LLM, porém é possível construir sequências altamente complexas que chamam o LLM várias vezes, como em casos de recursão, para atingir um resultado. Por exemplo, uma sequência poderia começar com um prompt para resumir um documento e, em seguida, realizar uma análise de sentimentos sobre o mesmo.
“Memória” – Paráfrase do texto.
Os modelos de linguagem sem estado, como os LLMs, necessitam de contexto para oferecer respostas precisas. O módulo de memória do LangChain simplifica a inclusão de memória de curto e longo prazo nos modelos. A memória de curto prazo guarda o histórico da conversa de maneira simples, enquanto a memória de longo prazo pode ser armazenada em fontes externas, como o Redis.
Chamadas de retorno.
O LangChain oferece aos programadores um mecanismo de retorno que lhes permite integrar-se em diferentes fases de uma aplicação LLM. Esse recurso é valioso para funções como registro, monitoramento, streaming e outras atividades. É viável criar controladores de retorno personalizados que são acionados quando ocorre um evento específico no fluxo de trabalho. A configuração padrão de retorno do LangChain é direcionada para o stdout, o que resulta na simples exibição da saída de cada etapa no console.
Precisamos de agentes para realizar essa tarefa.
Os agentes são a parte mais poderosa do sistema LangChain. Eles são capazes de pensar e agir através da técnica ReAct. Os agentes simplificam a criação de alertas ReAct, convertendo prompts em planos de ação. Podem ser vistos como cadeias dinâmicas, utilizando um modelo de linguagem para selecionar e executar ações de forma sequencial.
LangChain está se tornando essencial nas aplicações GenAI devido ao seu ecossistema em crescimento contínuo, que pode suportar diversos elementos. Com suporte para diferentes recursos, como LLMs, bancos de dados e incorporações, LangChain é uma ferramenta valiosa para os desenvolvedores.
O propósito deste artigo foi introduzir os desenvolvedores ao LangChain. No próximo artigo da série, iremos demonstrar como utilizar o LangChain com a API PaLM 2 do Google. Esteja atento.