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)