Segoedu commited on
Commit
7d95e47
1 Parent(s): f703b0c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -0
app.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+
4
+ from groq import Groq
5
+ from PyPDF2 import PdfReader
6
+ from datetime import datetime
7
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
8
+ from langchain_community.embeddings import HuggingFaceEmbeddings
9
+ #from langchain.vectorstores import FAISS
10
+ from langchain_community.vectorstores import FAISS
11
+ from langchain_groq import ChatGroq
12
+ #from langchain.chat_models import ChatOpenAI
13
+ from langchain.chains.question_answering import load_qa_chain
14
+ from langchain.chains import RetrievalQA
15
+
16
+ st.set_page_config('Opositor')
17
+ st.header("Pregunta al trebep")
18
+
19
+ # CARGAMOS LLM
20
+ os.environ["GROQ_API_KEY"] = "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"
21
+ model = 'llama3-8b-8192'
22
+ llm = ChatGroq(model = model)
23
+
24
+ # CARGAMOS MODELO DE EMBEDDING
25
+ model_name = 'intfloat/multilingual-e5-small'
26
+ embedding = HuggingFaceEmbeddings(model_name=model_name)
27
+
28
+ # CARGAMOS EL VECTORSTORE DE PINECONE
29
+ index_name = "boe-intfloat-multilingual-e5-base"
30
+ namespace = "trebep"
31
+ vectorstore = PineconeVectorStore(index_name=index_name, namespace=names, embedding=embedding)
32
+
33
+ # CREAMOS EL RETRIEVAL
34
+ qa = RetrievalQA.from_chain_type(
35
+ llm=llm,
36
+ chain_type="stuff",
37
+ retriever=vectorstore.as_retriever(),
38
+ #return_source_documents=True,
39
+ #verbose=True
40
+ )
41
+
42
+ # Función para mostrar logs
43
+ def mostrar_logs(logs,hints):
44
+ # Crear un contenedor desplegable
45
+ with st.expander("Chunks"):
46
+ for hint in hints:
47
+ st.write(hint.page_content)
48
+ st.write("-" * 30)
49
+
50
+ st.sidebar.header("Registro de preguntas")
51
+ for entry in logs:
52
+ st.sidebar.write(f"**Pregunta: {entry['Pregunta']}**")
53
+ st.sidebar.write(f"Respuesta: {entry['Respuesta']}")
54
+
55
+
56
+ # Lista para almacenar preguntas y respuestas
57
+ logs = []
58
+
59
+ if pdf_obj:
60
+ user_question = st.text_input("¡A jugar! Haz una pregunta sobre tu PDF:")
61
+ if user_question:
62
+
63
+ # Obtenemos la respuesta
64
+ respuesta = qa.invoke(user_question)
65
+
66
+ # Mostrar la variable en color verde
67
+ st.subheader("Respuesta")
68
+ st.write(f":green[{str(respuesta)}]")
69
+
70
+ # Guardar pregunta y respuesta en los logs
71
+ logs.append({"Pregunta": user_question, "Respuesta": respuesta})
72
+
73
+ # Mostrar logs actualizados
74
+ mostrar_logs(logs,docs)