trebep / app.py
Segoedu's picture
Create app.py
7d95e47 verified
raw history blame
No virus
2.27 kB
import streamlit as st
import os
from groq import Groq
from PyPDF2 import PdfReader
from datetime import datetime
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.embeddings import HuggingFaceEmbeddings
#from langchain.vectorstores import FAISS
from langchain_community.vectorstores import FAISS
from langchain_groq import ChatGroq
#from langchain.chat_models import ChatOpenAI
from langchain.chains.question_answering import load_qa_chain
from langchain.chains import RetrievalQA
st.set_page_config('Opositor')
st.header("Pregunta al trebep")
# CARGAMOS LLM
os.environ["GROQ_API_KEY"] = "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"
model = 'llama3-8b-8192'
llm = ChatGroq(model = model)
# CARGAMOS MODELO DE EMBEDDING
model_name = 'intfloat/multilingual-e5-small'
embedding = HuggingFaceEmbeddings(model_name=model_name)
# CARGAMOS EL VECTORSTORE DE PINECONE
index_name = "boe-intfloat-multilingual-e5-base"
namespace = "trebep"
vectorstore = PineconeVectorStore(index_name=index_name, namespace=names, embedding=embedding)
# CREAMOS EL RETRIEVAL
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(),
#return_source_documents=True,
#verbose=True
)
# Función para mostrar logs
def mostrar_logs(logs,hints):
# Crear un contenedor desplegable
with st.expander("Chunks"):
for hint in hints:
st.write(hint.page_content)
st.write("-" * 30)
st.sidebar.header("Registro de preguntas")
for entry in logs:
st.sidebar.write(f"**Pregunta: {entry['Pregunta']}**")
st.sidebar.write(f"Respuesta: {entry['Respuesta']}")
# Lista para almacenar preguntas y respuestas
logs = []
if pdf_obj:
user_question = st.text_input("¡A jugar! Haz una pregunta sobre tu PDF:")
if user_question:
# Obtenemos la respuesta
respuesta = qa.invoke(user_question)
# Mostrar la variable en color verde
st.subheader("Respuesta")
st.write(f":green[{str(respuesta)}]")
# Guardar pregunta y respuesta en los logs
logs.append({"Pregunta": user_question, "Respuesta": respuesta})
# Mostrar logs actualizados
mostrar_logs(logs,docs)