Atualmente, os LLMs (modelos grandes de linguagem, large language models) estão se popularizando numa velocidade surpreendente. ChatGPT e Gemini são alguns exemplos de sistemas de inteligência artificial que rodam em cima de LLMs como o GPT-3.5, GPT-4 e Gemini Pro.
Tecnicamente, LLMs são redes neurais do tipo deep learning treinadas em imensidões de dados de texto. Esse treinamento permite que os LLMs aprendam a responder questões, realizar traduções e sumarizações e gerar conteúdos de texto com qualidade equivalente à humana.
LLMs para Criar Aplicativos de IA
Para desenvolvedores, LLMs como o modelo Gemini Pro possuem um enorme potencial na criação de aplicativos de IA. Mas existe um desafio para essa implementação.
LLMs não são aplicativos autônomos. Eles são modelos estatísticos pré-treinados que devem ser integrados a um aplicativo para desempenhar suas finalidades eficientemente. E essa integração frequentemente esbarra em dificuldades técnicas. Mas, felizmente, existe um framework excelente para facilitar a integração de aplicativos de IA com LLMs: LangChain. Neste post, faremos uma introdução de como integrar o LangChain com os modelos Gemini através da Gemini API acessada diretamente com Python.
O que é LangChain?
LangChain é um framework de código aberto criado por Harrison Chase em 2022. Ele oferece um conjunto de ferramentas, componentes e interfaces para simplificar o processo de construção de aplicativos alimentados por LLMs.
Existe uma biblioteca LangChain para Python e outra para JavaScript. LangChain permite que desenvolvedores criem, implantem e gerenciem aplicativos com tecnologia LLM com blocos de construção intuitivos e uma abordagem humana.
A grande vantagem do LangChain é que ele atua como uma interface genérica para praticamente qualquer LLM. Evidentemente, sua integração com a Gemini API já está disponível. Mas, por enquanto, a documentação é pequena. Portanto, faremos uma demonstração breve.
LangChain com Gemini API
Para usar LangChain em combinação com a Gemini API, é necessário ter uma chave de acesso (API key) e instalar as bibliotecas google-generativeai e langchain-google-genai como mostrado abaixo.
pip install google-generativeai langchain-google-genai
Num código Python, para usar LangChain com a Gemini API, primeiro é preciso importar os pacotes necessários e inserir a sua API key. Na linha 5, substitua SUA API KEY pela sua chave.
import os
import google.generativeai as genai
from langchain_google_genai import ChatGoogleGenerativeAI
os.environ['GOOGLE_API_KEY'] = "SUA API KEY"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
LangChain com Gemini API: Modelo Pro
Em seguida, especificamos o modelo que será utilizado. LangChain tem suporte para usar tanto o Gemini-Pro quanto o modelo Gemini-Pro-Vision. Usaremos o Gemini-Pro primeiro.
llm = ChatGoogleGenerativeAI(model="gemini-pro")
Após isso, as interações podem proceder por meio de prompts. No trecho de código abaixo mostramos um exemplo.
response = llm.invoke("Explique IA para um adolescente em 2 linhas.")
print(response.content)
E essa é a resposta obtida para nosso prompt.
1. IA é uma tecnologia que envolve criar máquinas com inteligência semelhante à humana.
2. Os computadores com IA podem aprender com os dados, resolver problemas e até mesmo entender a linguagem natural.
LangChain possui inúmeras vantagens que facilitam muito a criação de aplicativos de IA. Uma delas é a possibilidade de realizar várias interações simultâneas com a função batch. Com a Gemini API, isso pode ser implementado como mostrado abaixo.
batch_responses = llm.batch(
[
"Explique em 2 linhas quem foi Roque Santeiro?",
"Explique em 5 linhas como esquiar na neve?",
]
)
for response in batch_responses:
print(response.content)
Roque Santeiro foi um personagem fictício de telenovela brasileira, criado por Dias Gomes, exibida pela Rede Globo em 1985.
1. Escolha uma estação de esqui com pistas adequadas ao seu nível de habilidade.
2. Alugue ou compre equipamentos de esqui, incluindo esquis, botas, bastões e capacete.
3. Pegue aulas de esqui com um instrutor qualificado para aprender as técnicas básicas.
4. Pratique em pistas leves e conforme for melhorando, avance para pistas mais desafiadoras.
5. Mantenha-se hidratado, use protetor solar e respeite os limites do seu corpo.
LangChain para Acessar o Modelo Gemini-Pro-Vision
O LangChain também acessa a Gemini API para usar o modelo Pro-Vision para interações com prompts de textos e imagens. Para essas interações multimodais, além das bibliotecas instaladas no início do post, é preciso ter a biblioteca Pillow (para instruções de instalação clique aqui ou aqui).
O uso modelo Pro-Vision com LangChain é simples. Num código Python, importe as bibliotecas necessárias como demonstrado abaixo. Não se esqueça de inserir sua API key (linha 7).
import os
import google.generativeai as genai
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage
from PIL import Image
os.environ['GOOGLE_API_KEY'] = "SUA API KEY"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
Após importar as bibliotecas, o modelo Pro-Vision precisa ser definido como o LLM que será usado.
llm = ChatGoogleGenerativeAI(model="gemini-pro-vision")
Segundo a documentação no site do LangChain, o Gemini Pro-Vision pode ser usado com prompts de imagens em chats. Isso pode ser feito como mostrado abaixo. Na linha 9, não se esqueça de inserir corretamente a localização de sua imagem. Use qualquer foto.
message = HumanMessage(
content=[
{
"type": "text",
"text": "Descreva a imagem em aproximadamente 100 palavras",
},
{
"type": "image_url",
"image_url": Image.open("SUA IMAGEM AQUI")
},
]
)
llm.invoke([message])
Essa foi a foto que usamos.
E aqui está a resposta obtida.
A imagem mostra um gatinho cinza e branco cheirando uma margarida branca. O gatinho está sentado na grama verde e parece estar aproveitando o sol. A imagem é muito fofa e mostra a beleza da natureza.
Conclusão
LangChain é um ótimo framework para integrações de LLMs com aplicativos de IA. Ele acabou de ser integrado à Gemini API, e isso tem um potencial imenso para desenvolvedores. Porém, a documentação ainda é concisa. Por isso, neste post, fizemos uma introdução breve. Quem quer aprender mais sobre LangChain, uma sugestão é assistir o curso ministrado pelo Andrew Ng em conjunto com Harrison Chase. O curso está sendo oferecido de graça, mas por um tempo limitado.