Waflon commited on
Commit
4f4d5be
1 Parent(s): f69ae09

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -21
app.py CHANGED
@@ -16,8 +16,19 @@ from langchain_community.vectorstores import FAISS
16
  from langchain_community.document_loaders import HuggingFaceDatasetLoader
17
  from langchain_community.embeddings import HuggingFaceEmbeddings
18
 
19
- with st.status("Cargando Aplicación...", expanded=False) as status:
20
- st.write("Cargando Dataset...")
 
 
 
 
 
 
 
 
 
 
 
21
  #Carga de DATASET
22
  dataset_name = "Waflon/FAQ"
23
  page_content_column = "respuestas"
@@ -27,13 +38,11 @@ with st.status("Cargando Aplicación...", expanded=False) as status:
27
  #Transformado a tipo de dato especifico para esto
28
  docs = text_splitter.split_documents(data)
29
 
30
- st.write("Cargando modelo de Sentence-Transformer...")
31
  #Modelo QA sentence similarity
32
  modelPath = 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2' #español
33
  model_kwargs = {'device':'cpu'} # cuda or cpu
34
  encode_kwargs = {'normalize_embeddings': False}
35
 
36
- st.write("Embeddings...")
37
  #Embeddings que transforman a vectores densos multidimensionales las preguntas del SII
38
  embeddings = HuggingFaceEmbeddings(
39
  model_name=modelPath, # Ruta a modelo Pre entrenado
@@ -41,15 +50,10 @@ with st.status("Cargando Aplicación...", expanded=False) as status:
41
  encode_kwargs=encode_kwargs # Opciones de Encoding
42
  )
43
 
44
- st.write("Base de datos FAISS...")
45
  #DB y retriever
46
  db = FAISS.from_documents(docs[:2], embeddings) # Create a retriever object from the 'db' with a search configuration where it retrieves up to 4 relevant splits/documents.
47
-
48
- st.write("Retriever...")
49
  retriever = db.as_retriever(search_kwargs={"k": 3})
50
- status.update(label="App cargada con exito!", state="complete")
51
 
52
- st.write("Prompt template...")
53
  prompt_template = """Usa los siguientes fragmentos de contextos para responder una pregunta al final. Por favor sigue las siguientes reglas:
54
  1. Si la pregunta requiere vinculos, por favor retornar solamente las vinculos de los vinculos sin respuesta
55
  2. Si no sabes la respuesta, no inventes una respuesta. Solamente di **No pude encontrar la respuesta definitiva, pero tal vez quieras ver los siguientes vinculos** y agregalos a la lista de vinculos.
@@ -73,21 +77,19 @@ with st.status("Cargando Aplicación...", expanded=False) as status:
73
  document_prompt=document_prompt,
74
  callbacks=None,
75
  )
76
- qa = RetrievalQA(
77
  combine_documents_chain=combine_documents_chain,
78
  callbacks=None,
79
  verbose=True,
80
  retriever=retriever,
81
  )
 
82
 
83
-
84
- status.update(label="Finalizado!", state="complete")
85
-
86
- def main():
87
- pregunta = st.text_area('Ingrese su pregunta')
88
- if pregunta:
89
- out = qa(str(pregunta))
90
- st.write(out)
91
-
92
- if __name__ == "__main__":
93
- main()
 
16
  from langchain_community.document_loaders import HuggingFaceDatasetLoader
17
  from langchain_community.embeddings import HuggingFaceEmbeddings
18
 
19
+ # Initialization
20
+ if 'chain' not in st.session_state:
21
+ st.session_state['chain'] = 'dummy'
22
+
23
+ def get_data():
24
+ return st.session_state["chain"]
25
+
26
+
27
+ def add_data(chain):
28
+ st.session_state["chain"]= chain
29
+
30
+ chain = get_data()
31
+ if chain == 'dummy':
32
  #Carga de DATASET
33
  dataset_name = "Waflon/FAQ"
34
  page_content_column = "respuestas"
 
38
  #Transformado a tipo de dato especifico para esto
39
  docs = text_splitter.split_documents(data)
40
 
 
41
  #Modelo QA sentence similarity
42
  modelPath = 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2' #español
43
  model_kwargs = {'device':'cpu'} # cuda or cpu
44
  encode_kwargs = {'normalize_embeddings': False}
45
 
 
46
  #Embeddings que transforman a vectores densos multidimensionales las preguntas del SII
47
  embeddings = HuggingFaceEmbeddings(
48
  model_name=modelPath, # Ruta a modelo Pre entrenado
 
50
  encode_kwargs=encode_kwargs # Opciones de Encoding
51
  )
52
 
 
53
  #DB y retriever
54
  db = FAISS.from_documents(docs[:2], embeddings) # Create a retriever object from the 'db' with a search configuration where it retrieves up to 4 relevant splits/documents.
 
 
55
  retriever = db.as_retriever(search_kwargs={"k": 3})
 
56
 
 
57
  prompt_template = """Usa los siguientes fragmentos de contextos para responder una pregunta al final. Por favor sigue las siguientes reglas:
58
  1. Si la pregunta requiere vinculos, por favor retornar solamente las vinculos de los vinculos sin respuesta
59
  2. Si no sabes la respuesta, no inventes una respuesta. Solamente di **No pude encontrar la respuesta definitiva, pero tal vez quieras ver los siguientes vinculos** y agregalos a la lista de vinculos.
 
77
  document_prompt=document_prompt,
78
  callbacks=None,
79
  )
80
+ chain = RetrievalQA(
81
  combine_documents_chain=combine_documents_chain,
82
  callbacks=None,
83
  verbose=True,
84
  retriever=retriever,
85
  )
86
+ add_data(chain)
87
 
88
+ pregunta = st.text_area('Ingresa algun texto:', value="Que es un APA?")
89
+ tmp_button = st.button("CLICK")
90
+ if tmp_button: #Esperar al boton
91
+ out = chain.invoke(pregunta)
92
+ st.write(out)
93
+ #st.rerun() #Restart app
94
+ else:
95
+ st.stop()