![Configuração do Proxmox SDN passo a passo - Como fazer virtualização](https://optimuscloud.com.br/wp-content/uploads/2024/03/1711013821_Configuracao-do-Proxmox-SDN-passo-a-passo-Como-fazer-150x150.png)
Configuração do Proxmox SDN passo a passo – Como fazer virtualização
21 de março de 2024![Proteja dados confidenciais e evite práticas inadequadas no Apache Kafka](https://optimuscloud.com.br/wp-content/uploads/2024/03/1711028252_Proteja-dados-confidenciais-e-evite-praticas-inadequadas-no-Apache-Kafka-150x150.png)
Proteja dados confidenciais e evite práticas inadequadas no Apache Kafka
21 de março de 2024Neste tutorial, exploraremos a integração do LangChain, uma estrutura de programação para o uso de grandes modelos de linguagem (LLMs) em aplicativos, com o Gemini LLM do Google para construir um aplicativo de perguntas e respostas baseado em PDF.
Antes de prosseguir com o tutorial, certifique-se de ter uma chave de API do Google AI Studio.
Etapa 1: inicializando o ambiente
Crie um ambiente virtual Python e instale os módulos necessários do arquivo requirements.txt.
python -m venv venv source venv/bin/activate
Crie o arquivo requisitos.txt com o conteúdo abaixo:
pypdf2 chromadb google.generativeai langchain-google-genai langchain langchain_community jupyter
pip install -r requirements.txt
Defina uma variável de ambiente para acessar a chave de API implicitamente no código.
export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
Inicie o Jupyter Notebook e comece a usar o código.
Etapa 2: importar módulos
from langchain_google_genai import ChatGoogleGenerativeAI from langchain_google_genai import GoogleGenerativeAIEmbeddings from langchain.prompts import PromptTemplate from langchain_community.document_loaders import PyPDFLoader from langchain_text_splitters import CharacterTextSplitter from langchain.chains.combine_documents import create_stuff_documents_chain from langchain.chains import create_retrieval_chain from langchain.vectorstores import Chroma import os
Etapa 3: inicializar os modelos
Esta etapa carrega o LLM com os modelos Embeddings responsáveis por converter texto em vetores de menor dimensão.
llm = ChatGoogleGenerativeAI(model="gemini-pro") embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
Passo 4: Carregar e Dividir o PDF
Você pode usar qualquer PDF de sua escolha. Mas para este tutorial, carregaremos o manual do funcionário de uma empresa fictícia.
O código abaixo carrega o PDF e o divide em blocos de 250 caracteres, com uma sobreposição de 50 caracteres entre cada bloco.
loader = PyPDFLoader("handbook.pdf") text_splitter = CharacterTextSplitter( separator=".", chunk_size=250, chunk_overlap=50, length_function=len, is_separator_regex=False, ) pages = loader.load_and_split(text_splitter)
Etapa 5: inicializar o VectorDB e configurar o Retriever
Na próxima etapa, converteremos cada pedaço de texto em embeddings e os armazenaremos no banco de dados vetorial Chroma para recuperação. Os parametros search_kwargs={"k": 5}
define as principais correspondências a serem recuperadas de uma pesquisa.
vectordb=Chroma.from_documents(pages,embeddings) retriever = vectordb.as_retriever(search_kwargs={"k": 5})
Etapa 6: definir a cadeia de recuperação
No LangChain, cada componente é montado para formar uma cadeia lógica. Neste cenário, temos o prompt, o LLM e o recuperador como componentes principais. Vamos criar uma corrente a partir deles.
template = """ You are a helpful AI assistant. Answer based on the context provided. context: {context} input: {input} answer: """ prompt = PromptTemplate.from_template(template) combine_docs_chain = create_stuff_documents_chain(llm, prompt) retrieval_chain = create_retrieval_chain(retriever, combine_docs_chain)
Etapa 7: invocar a cadeia
Agora é a hora de testar se todas as peças do quebra-cabeça estão conectadas. Invocaremos a cadeia e verificaremos a resposta.
response=retrieval_chain.invoke({"input":"How do I apply for personal leave?"}) print(response)
Como podemos ver, a chave de resposta tem a resposta esperada da cadeia. Vamos imprimir.
response("answer")
Abaixo está o código completo:
Veja o código no Gist.
A postagem Como construir um aplicativo LLM de perguntas e respostas com LangChain e Gemini apareceu pela primeira vez em The New Stack.