Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,36 +1,13 @@
|
|
1 |
-
"""
|
2 |
-
Este script realiza las siguientes tareas:
|
3 |
-
1. Carga archivos desde un directorio especificado utilizando la clase `Loader` del m贸dulo `preprocess`.
|
4 |
-
2. Procesa los archivos mediante limpieza de texto y divisi贸n en fragmentos.
|
5 |
-
3. Genera representaciones vectoriales de los textos utilizando `sentence-transformers`.
|
6 |
-
4. Almacena los vectores en una base de datos Chroma para su posterior recuperaci贸n.
|
7 |
-
5. Inicializa un modelo y ejecuta una interfaz para interactuar con los datos procesados.
|
8 |
-
M贸dulos utilizados:
|
9 |
-
- `preprocess`: Contiene la clase `Loader` para la carga y preprocesamiento de documentos.
|
10 |
-
- `vdb`: Se asume que gestiona la base de datos vectorial.
|
11 |
-
- `model_load`: M贸dulo para cargar el modelo de machine learning.
|
12 |
-
- `st`: Se asume que proporciona la interfaz de usuario.
|
13 |
-
Estructura del c贸digo:
|
14 |
-
1. Define el directorio de los archivos a procesar.
|
15 |
-
2. Carga los archivos y los procesa si el n煤mero de archivos es menor a 2.
|
16 |
-
3. Si hay m煤ltiples archivos, los procesa en un bucle y concatena los fragmentos.
|
17 |
-
4. Genera embeddings utilizando `sentence-transformers/all-MiniLM-L12-v2`.
|
18 |
-
5. Almacena los embeddings en ChromaDB y configura un recuperador basado en similitud.
|
19 |
-
6. Carga el modelo de machine learning.
|
20 |
-
7. Inicia la interfaz de usuario..
|
21 |
-
"""
|
22 |
from langchain_community.vectorstores import Chroma
|
23 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
24 |
-
#from langchain_chroma import Chroma
|
25 |
from tqdm.auto import tqdm
|
26 |
-
#from chromadb.utils import embedding_functions
|
27 |
from src.preprocess import Loader
|
28 |
from src.vdb import EmbeddingGen
|
29 |
import src.model_load
|
30 |
import gradio as gr
|
31 |
|
32 |
-
@spaces.GPU
|
33 |
-
|
34 |
# Definici贸n de directorio
|
35 |
archivo = [r"data/Calculo_Trascendentes_Tempranas_Zill_4t.pdf"]
|
36 |
|
@@ -43,13 +20,13 @@ if __name__=="__main__":
|
|
43 |
else:
|
44 |
textos = []
|
45 |
for i in range(len(archivo)):
|
46 |
-
Load = Loader(archivo)
|
47 |
documentos = Load.load_docs()
|
48 |
textos_limpios = [Load.limpiar_texto(texto=doc) for doc in documentos]
|
49 |
chunks = Load.splitter(texto=textos_limpios, chunk_size=500, chunk_overlap=50)
|
50 |
textos.extend(chunks)
|
51 |
|
52 |
-
# Generaci贸n de embeddings y almacenamiento
|
53 |
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L12-v2")
|
54 |
persist_directory = "./persist_directory"
|
55 |
db = Chroma(persist_directory=persist_directory, embedding_function=embeddings.embed_documents)
|
@@ -57,11 +34,13 @@ if __name__=="__main__":
|
|
57 |
print("Vectorizado terminado")
|
58 |
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 3})
|
59 |
print("Carga del modelo")
|
60 |
-
|
61 |
-
|
|
|
62 |
print("Lanzando interfaz")
|
|
|
63 |
def chatbot_response(message):
|
64 |
-
return
|
65 |
|
66 |
iface = gr.Interface(
|
67 |
fn=chatbot_response,
|
@@ -71,4 +50,8 @@ if __name__=="__main__":
|
|
71 |
description="Interfaz simple de chatbot con Gradio."
|
72 |
)
|
73 |
|
74 |
-
iface.launch(server_port=7860)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
from langchain_community.vectorstores import Chroma
|
2 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
|
|
3 |
from tqdm.auto import tqdm
|
|
|
4 |
from src.preprocess import Loader
|
5 |
from src.vdb import EmbeddingGen
|
6 |
import src.model_load
|
7 |
import gradio as gr
|
8 |
|
9 |
+
@spaces.GPU # Ubica aqu铆 la anotaci贸n correctamente
|
10 |
+
def main():
|
11 |
# Definici贸n de directorio
|
12 |
archivo = [r"data/Calculo_Trascendentes_Tempranas_Zill_4t.pdf"]
|
13 |
|
|
|
20 |
else:
|
21 |
textos = []
|
22 |
for i in range(len(archivo)):
|
23 |
+
Load = Loader(archivo[i])
|
24 |
documentos = Load.load_docs()
|
25 |
textos_limpios = [Load.limpiar_texto(texto=doc) for doc in documentos]
|
26 |
chunks = Load.splitter(texto=textos_limpios, chunk_size=500, chunk_overlap=50)
|
27 |
textos.extend(chunks)
|
28 |
|
29 |
+
# Generaci贸n de embeddings y almacenamiento
|
30 |
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L12-v2")
|
31 |
persist_directory = "./persist_directory"
|
32 |
db = Chroma(persist_directory=persist_directory, embedding_function=embeddings.embed_documents)
|
|
|
34 |
print("Vectorizado terminado")
|
35 |
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 3})
|
36 |
print("Carga del modelo")
|
37 |
+
|
38 |
+
# Carga del modelo
|
39 |
+
qa_chain = src.model_load.load_model()
|
40 |
print("Lanzando interfaz")
|
41 |
+
|
42 |
def chatbot_response(message):
|
43 |
+
return qa_chain(message, retriever)
|
44 |
|
45 |
iface = gr.Interface(
|
46 |
fn=chatbot_response,
|
|
|
50 |
description="Interfaz simple de chatbot con Gradio."
|
51 |
)
|
52 |
|
53 |
+
iface.launch(server_port=7860, share=True) # Aqu铆 puedes asegurarte de que `share=True` est茅 activo
|
54 |
+
|
55 |
+
|
56 |
+
if __name__ == "__main__":
|
57 |
+
main()
|