Pular para o conteúdo principal
InicioTutoriaisInteligência Artificial (IA)

Como criar aplicativos LLM com o tutorial LangChain

Explore o potencial inexplorado dos modelos de linguagem grandes com o LangChain, uma estrutura Python de código aberto para criar aplicativos avançados de IA.
abr. de 2024  · 12 min leer

Os recursos de grandes modelos de linguagem (LLMs), como o GPT-3 da OpenAI, o BERT do Google e o LLaMA da Meta, estão transformando vários setores ao permitir a geração de diversos tipos de texto, desde conteúdo de marketing e código de ciência de dados até poesia. Embora o ChatGPT tenha atraído muita atenção devido à sua interface de bate-papo fácil de usar, existem inúmeras possibilidades inexploradas para aproveitar os LLMs, integrando-os a diferentes aplicativos de software.

Se você está cativado pelos poderes transformadores da IA generativa e dos LLMs, este tutorial é perfeito para você. Aqui, exploramos o LangChain - uma estrutura Python de código aberto para criar aplicativos com base em modelos de linguagem grandes, como o GPT.

Saiba mais sobre a criação de aplicativos de IA com LangChain em nosso Building Multimodal AI Applications with LangChain & the OpenAI API AI Code Along, onde você descobrirá como transcrever o conteúdo de vídeo do YouTube com a IA de fala para texto Whisper e, em seguida, usar o GPT para fazer perguntas sobre o conteúdo.

O que são modelos de linguagem grandes (LLMs)?

Os modelos de linguagem ampla (LLMs) referem-se a sistemas avançados de inteligência artificial projetados para entender e gerar textos semelhantes aos humanos. Esses modelos são treinados com base em grandes quantidades de dados, o que lhes permite captar padrões complexos, compreender nuances de linguagem e gerar respostas coerentes. Os LLMs têm a capacidade de executar várias tarefas relacionadas a idiomas, incluindo tradução de idiomas, preenchimento de textos, resumo e até mesmo interações de conversação. O GPT é um exemplo de LLM.

O LLM é um tipo de IA generativa. Se quiser saber mais sobre a IA generativa e como ela pode impulsionar sua criatividade, consulte nossos blogs sobre Como usar a IA generativa para impulsionar sua criatividade e nosso podcast, Inside the Generative AI Revolution. Você também pode se inscrever em nosso próximo curso sobre Conceitos de Modelos de Linguagem Grande.

Introdução ao LangChain

O LangChain é uma estrutura de código aberto projetada para facilitar o desenvolvimento de aplicativos alimentados por grandes modelos de linguagem (LLMs). Ele oferece um conjunto de ferramentas, componentes e interfaces que simplificam a criação de aplicativos centrados no LLM. Com o LangChain, é fácil gerenciar interações com modelos de linguagem, vincular perfeitamente diferentes componentes e incorporar recursos como APIs e bancos de dados. Leia mais sobre o LangChain para engenharia de dados e aplicativos de dados em um artigo separado. 

A plataforma LangChain é fornecida com uma coleção de APIs que os desenvolvedores podem incorporar em seus aplicativos, permitindo que eles infundam recursos de processamento de linguagem sem precisar criar tudo desde o início. Portanto, o LangChain simplifica com eficiência o processo de criação de aplicativos baseados em LLM, tornando-o adequado para desenvolvedores de todo o espectro de especialização.

Aplicativos como chatbots, assistentes virtuais, utilitários de tradução de idiomas e ferramentas de análise de sentimentos são exemplos de aplicativos com LLM. Os desenvolvedores aproveitam o LangChain para criar aplicativos baseados em modelos de linguagem personalizados que atendem a necessidades específicas.

Com os avanços contínuos e a adoção mais ampla do processamento de linguagem natural, espera-se que as possíveis aplicações dessa tecnologia sejam praticamente ilimitadas. Aqui estão várias características notáveis da LangChain:

1. Prompts personalizados para atender às suas necessidades específicas

2. Construção de componentes de elos de corrente para cenários de uso avançado

3. Integração de modelos para aumento de dados e acesso a recursos de modelos de linguagem de alto nível, como GPT e HuggingFace Hub.

4. Componentes versáteis que permitem misturar e combinar para atender a necessidades específicas

5. Manipulação do contexto para estabelecer e orientar o contexto para aumentar a precisão e a satisfação do usuário

Configuração do LangChain em Python

A instalação do LangChain no Python é bastante simples. Você pode instalá-lo com o pip ou com o conda.

Instalar usando o pip

pip install langchain

Instalar usando o conda

install langchain -c conda-forge

Isso definirá as necessidades básicas da LangChain. Grande parte da utilidade do LangChain é percebida quando ele é integrado a diversos provedores de modelos, armazenamentos de dados e similares.

Por padrão, as dependências necessárias para essas integrações NÃO estão incluídas na instalação. Para instalar todas as dependências, você pode executar o seguinte comando:

pip install langchain[all]

A última opção é criar a biblioteca a partir do código-fonte. Nesse caso, você pode clonar o projeto de seu repositório do GitHub.

Configuração do ambiente

O uso do LangChain geralmente requer integrações com vários provedores de modelos, armazenamentos de dados, APIs e componentes semelhantes. Como em qualquer integração, devemos fornecer chaves de API apropriadas e relevantes para que o LangChain funcione. Há duas maneiras de conseguir isso:

1. Configuração da chave como uma variável de ambiente

OPENAI_API_KEY="..."

Se preferir não definir uma variável de ambiente, você pode passar a chave diretamente por meio do parâmetro nomeado openai_api_key ao iniciar a classe do OpenAI LLM:

2. Configurar diretamente a chave na classe relevante

from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")

Principais componentes do LangChain

A LangChain se destaca por sua ênfase na flexibilidade e na modularidade. Ele desmonta o pipeline de processamento de linguagem natural em componentes separados, permitindo que os desenvolvedores personalizem os fluxos de trabalho de acordo com suas necessidades. Essa adaptabilidade torna a LangChain ideal para a construção de aplicativos de IA em vários cenários e setores.

Componentes e correntes

No LangChain, os componentes são módulos que executam funções específicas no pipeline de processamento de idiomas. Esses componentes podem ser vinculados em "cadeias" para fluxos de trabalho personalizados, como uma cadeia de chatbot de atendimento ao cliente com análise de sentimentos, reconhecimento de intenções e módulos de geração de respostas.

Modelos de prompts

Os modelos de prompts são prompts predefinidos reutilizáveis entre cadeias. Esses modelos podem se tornar dinâmicos e adaptáveis com a inserção de "valores" específicos. Por exemplo, um prompt que solicita o nome de um usuário pode ser personalizado com a inserção de um valor específico. Esse recurso é útil para gerar prompts com base em recursos dinâmicos.

Lojas de vetores

Eles são usados para armazenar e pesquisar informações por meio de embeddings, analisando essencialmente as representações numéricas dos significados dos documentos. O VectorStore funciona como um recurso de armazenamento para essas incorporações, permitindo uma pesquisa eficiente com base na similaridade semântica.

Índices e recuperadores

Os índices funcionam como bancos de dados que armazenam detalhes e metadados sobre os dados de treinamento do modelo, enquanto os recuperadores pesquisam rapidamente esse índice para obter informações específicas. Isso melhora as respostas do modelo, fornecendo contexto e informações relacionadas.

Analisadores de saída

Os analisadores de saída entram em ação para gerenciar e refinar as respostas geradas pelo modelo. Eles podem eliminar conteúdo indesejado, adaptar o formato de saída ou complementar dados extras à resposta. Assim, os analisadores de saída ajudam a extrair resultados estruturados, como objetos JSON, das respostas do modelo de linguagem.

Exemplos de seletores

Os seletores de exemplos no LangChain servem para identificar instâncias apropriadas dos dados de treinamento do modelo, melhorando assim a precisão e a pertinência das respostas geradas. Esses seletores podem ser ajustados para favorecer determinados tipos de exemplos ou filtrar os não relacionados, fornecendo uma resposta de IA personalizada com base na entrada do usuário.

Agentes

Os agentes são instâncias exclusivas do LangChain, cada uma com prompts, memória e cadeia específicos para um caso de uso específico. Eles podem ser implantados em várias plataformas, incluindo web, dispositivos móveis e chatbots, atendendo a um público amplo.

Como criar um aplicativo de modelo de linguagem no LangChain

O LangChain fornece uma classe LLM projetada para fazer interface com vários provedores de modelos de linguagem, como OpenAI, Cohere e Hugging Face. A funcionalidade mais básica de um LLM é a geração de texto. É muito simples criar um aplicativo com o LangChain que recebe um prompt de cadeia de caracteres e retorna a saída.

API_KEY ="..."

from langchain.llms import OpenAI

llm = OpenAI(model_name="text-ada-001", openai_api_key=API_KEY)

print(llm("Tell me a joke about data scientist"))

Saída:

>>> "O que você obtém quando mexe com dados? Um cientista de dados!"

No exemplo acima, estamos usando o modelo text-ada-001 da OpenAI. Se você quiser trocar isso por qualquer modelo de código aberto da HuggingFace, é uma mudança simples:

API_KEY ="..."

from langchain import HuggingFaceHub

llm = HuggingFaceHub(repo_id = "google/flan-t5-xl", huggingfacehub_api_token = API_KEY)

print(llm("Tell me a joke about data scientist"))

Você pode obter o ID do token do hub Hugging Face na sua conta HF.

Se você tiver vários prompts, poderá enviar uma lista de prompts de uma só vez usando o método generate:

llm_response = llm.generate(['Tell me a joke about data scientist',

'Tell me a joke about recruiter',

'Tell me a joke about psychologist'])

Saída:

Este é o aplicativo mais simples que você pode criar usando o LangChain. Ele recebe um prompt, envia-o para um modelo de linguagem de sua escolha e retorna a resposta. Há muitos parâmetros que você pode controlar, como `temperatura`. O parâmetro de temperatura ajusta a aleatoriedade da saída e é definido como 0,7 por padrão.

Gerenciando modelos de prompts para LLMs no LangChain

Os LLMs têm APIs peculiares. Embora possa parecer intuitivo inserir prompts em linguagem natural, na verdade é necessário fazer alguns ajustes no prompt para obter o resultado desejado de um LLM. Esse processo de ajuste é conhecido como engenharia imediata. Quando você tiver um bom prompt, talvez queira usá-lo como modelo para outros fins.

Um PromptTemplate no LangChain permite que você use modelos para gerar um prompt. Isso é útil quando você deseja usar o mesmo esboço de prompt em vários lugares, mas com determinados valores alterados.

USER_INPUT = 'Paris'

from langchain.llms import OpenAI

from langchain import PromptTemplate

llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)

template = """ I am travelling to {location}. What are the top 3 things I can do while I am there. Be very specific and respond as three bullet points """

prompt = PromptTemplate(

input_variables=["location"],

template=template,

)

final_prompt = prompt.format(location=USER_INPUT )

print(f"LLM Output: {llm(final_prompt)}")

Saída:

1. Suba a Torre Eiffel e aprecie a vista deslumbrante da cidade

2. Desfrute de um cruzeiro romântico pelo Rio Sena e admire a bela arquitetura ao longo das margens do rio

3. Explore o Louvre e admire as obras de arte de renome mundial em exposição

Se agora você quiser reutilizar esse prompt para uma cidade diferente, basta alterar a variável USER_INPUT. Agora mudei de Paris para Cancun, Mexico. Veja como a saída foi alterada:

Saída:

1. Relaxar na praia: Aproveite as praias de areia branca e as águas cristalinas do Mar do Caribe.

2. Explore as ruínas maias: Visite sítios arqueológicos antigos, como Chichen Itza, Tulum e Coba, para aprender sobre a história e a cultura dos maias.

3. Faça um tour gastronômico: Experimente os sabores tradicionais e aprenda sobre a culinária local fazendo um tour gastronômico em Cancún.

Combinação de LLMs e prompts em fluxos de trabalho de várias etapas

O encadeamento no contexto do LangChain refere-se ao ato de integrar LLMs a outros elementos para criar um aplicativo. Vários exemplos incluem:

  • Combinação sequencial de vários LLMs usando a saída do primeiro LLM como entrada para o segundo LLM (consulte esta seção)
  • Integração de LLMs com modelos de prompt
  • Mesclar LLMs com dados externos, como para responder a perguntas
  • Incorporação de LLMs com memória de longo prazo, como histórico de bate-papo

Vejamos um exemplo do primeiro cenário em que usaremos a saída do primeiro LLM como entrada para o segundo LLM.

from langchain.llms import OpenAI

from langchain.chains import LLMChain, SimpleSequentialChain

from langchain import PromptTemplate

llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)

# first step in chain

template = "What is the most popular city in {country} for tourists? Just return the name of the city"

first_prompt = PromptTemplate(

input_variables=["country"],

template=template)

chain_one = LLMChain(llm = llm, prompt = first_prompt)

# second step in chain

second_prompt = PromptTemplate(

input_variables=["city"],

template="What are the top three things to do in this: {city} for tourists. Just return the answer as three bullet points.",)

chain_two = LLMChain(llm=llm, prompt=second_prompt)

# Combine the first and the second chain

overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)

final_answer = overall_chain.run("Canada")

Saída:

Neste exemplo específico, criamos uma cadeia com dois componentes. O primeiro componente é responsável por identificar a cidade mais popular correspondente a um determinado país, conforme informado pelo usuário. Em contrapartida, o segundo componente se concentra em fornecer informações sobre as três principais atividades ou atrações disponíveis para os turistas que visitam essa cidade específica.

Se você quiser aprender conceitos mais avançados de criação de aplicativos em LangChain, confira este curso ao vivo sobre Criação de aplicativos de IA com LangChain e GPT no DataCamp.

Conclusão e aprendizado adicional

Há pouco tempo, todos nós ficamos muito impressionados com os recursos impressionantes do ChatGPT. No entanto, o cenário evoluiu rapidamente, e agora temos acesso a novas ferramentas de desenvolvimento, como a LangChain, que nos permitem criar protótipos igualmente notáveis em nossos laptops pessoais em questão de horas.

O LangChain, uma estrutura Python de código aberto, permite que as pessoas criem aplicativos alimentados por LLMs (Language Model Models). Essa estrutura oferece uma interface versátil para vários modelos básicos, facilitando o gerenciamento de prompts e servindo como um hub central para outros componentes, como modelos de prompts, LLMs adicionais, dados externos e outras ferramentas por meio de agentes (no momento da redação).

Se estiver tentando acompanhar todos os avanços da IA generativa e do LLM, assista ao nosso webinar Criando aplicativos de IA com LangChain e GPT. Aqui, você aprenderá os conceitos básicos do uso do LangChain para desenvolver aplicativos de IA, além de como estruturar um aplicativo de IA e como incorporar dados de texto para obter alto desempenho. Você também pode ver nossa folha de dicas sobre o cenário das ferramentas de IA generativa para explorar as diferentes categorias de ferramentas de IA generativa, suas aplicações e sua influência em vários setores.

Perguntas frequentes

O que é LangChain?

O LangChain é uma estrutura de código aberto projetada para facilitar o desenvolvimento de aplicativos alimentados por grandes modelos de linguagem (LLMs). Ele simplifica a criação de aplicativos centrados no LLM, fornecendo ferramentas, componentes e interfaces.

O uso do LangChain é gratuito?

Sim, o LangChain é uma estrutura gratuita e de código aberto, mas o uso de determinados LLMs pode exigir uma assinatura.

A LangChain pode trabalhar com diferentes provedores de modelos?

Sim, o LangChain é compatível com vários provedores de modelos de linguagem, como OpenAI, Cohere e Hugging Face, o que permite flexibilidade no desenvolvimento de aplicativos.

Como posso usar o LangChain com modelos OpenAI?

Depois de instalar o LangChain, você pode integrá-lo aos modelos da OpenAI configurando sua chave de API da OpenAI e usando as interfaces fornecidas para a interação do modelo.

Como faço para gerenciar modelos de prompt no LangChain?

O LangChain usa o site PromptTemplate para gerenciar modelos de prompts, permitindo prompts dinâmicos e reutilizáveis que podem ser adaptados a casos de uso específicos alterando as variáveis de entrada.

O que é encadeamento no LangChain?

O encadeamento refere-se à integração de LLMs com outros elementos para criar um aplicativo, como a combinação sequencial de vários LLMs, a integração de LLMs com modelos de prompt ou a incorporação de dados externos.

O LangChain pode lidar com dados de documentos de várias fontes?

Sim, o LangChain oferece suporte a carregadores de documentos para várias fontes de dados, incluindo texto, CSV, arquivos PDF e plataformas como Slack e Figma, para incorporação em aplicativos LLM.

Temas
Relacionado

blog

Introdução ao LLaMA da Meta AI

O LLaMA, uma estrutura revolucionária de código aberto, tem como objetivo tornar mais acessível a pesquisa de modelos de linguagem de grande porte.
Abid Ali Awan's photo

Abid Ali Awan

8 min

tutorial

Como treinar um LLM com o PyTorch

Domine o processo de treinamento de grandes modelos de linguagem usando o PyTorch, desde a configuração inicial até a implementação final.
Zoumana Keita 's photo

Zoumana Keita

8 min

tutorial

Um guia introdutório para aperfeiçoar os LLMs

O ajuste fino dos modelos de linguagem ampla (LLMs) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de texto. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos por meio do processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Previsões do mercado de ações com LSTM em Python

Descubra as redes LSTM (Long Short-Term Memory) em Python e como você pode usá-las para fazer previsões do mercado de ações!
Thushan Ganegedara's photo

Thushan Ganegedara

30 min

tutorial

Criando um transformador com o PyTorch

Saiba como criar um modelo Transformer usando o PyTorch, uma ferramenta avançada de aprendizado de máquina moderno.
Arjun Sarkar's photo

Arjun Sarkar

26 min

tutorial

Llama.cpp Tutorial: Um guia completo para inferência e implementação eficientes de LLM

Este guia abrangente sobre o Llama.cpp o guiará pelos fundamentos da configuração do seu ambiente de desenvolvimento, compreendendo suas principais funcionalidades e aproveitando seus recursos para resolver casos de uso reais.
Zoumana Keita 's photo

Zoumana Keita

11 min

See MoreSee More