Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -13,10 +13,10 @@ import random
|
|
13 |
import uuid
|
14 |
from streamlit_pdf_viewer import pdf_viewer # Visor de PDF integrado en Streamlit
|
15 |
|
16 |
-
# Inicializa el cliente de ChromaDB
|
17 |
client = initialize_client()
|
18 |
|
19 |
-
# Frases sarcásticas para
|
20 |
sarcastic_lines = [
|
21 |
"Cocinando el PDF... 🍳",
|
22 |
"Esto puede tomar un momento; estoy convenciendo al PDF de que coopere... 🤔",
|
@@ -49,6 +49,7 @@ st.markdown("Sube tu PDF en formato de texto y haz preguntas sobre su contenido.
|
|
49 |
uploaded_file = st.file_uploader("Subir PDF", type="pdf")
|
50 |
|
51 |
if uploaded_file:
|
|
|
52 |
document_id = generate_document_id()
|
53 |
st.success("¡Archivo subido con éxito! Podemos comenzar.")
|
54 |
|
@@ -61,19 +62,19 @@ if uploaded_file:
|
|
61 |
st.subheader("PDF Subido")
|
62 |
pdf_viewer(pdf_bytes)
|
63 |
|
64 |
-
# Paso 2: Procesar PDF
|
65 |
with st.spinner("Procesando..."):
|
66 |
st.markdown(random.choice(sarcastic_lines))
|
67 |
pages_and_text = read_pdf(pdf_bytes)
|
68 |
st.success("¡PDF procesado con éxito!")
|
69 |
|
70 |
-
# Paso 3: Dividir texto en chunks
|
71 |
with st.spinner("Dividiendo en secciones..."):
|
72 |
st.markdown(random.choice(sarcastic_lines))
|
73 |
processed_chunks = process_chunks(pages_and_text)
|
74 |
st.success("¡Texto dividido en chunks!")
|
75 |
|
76 |
-
# Paso 4: Generar embeddings
|
77 |
with st.spinner("Creando embeddings..."):
|
78 |
st.markdown(random.choice(sarcastic_lines))
|
79 |
embeddings_df = embed_text_chunks(processed_chunks)
|
@@ -86,13 +87,14 @@ if uploaded_file:
|
|
86 |
st.success(f"¡Embeddings guardados para el documento con ID: {document_id}")
|
87 |
|
88 |
# Paso 6: Interacción con el chat
|
|
|
89 |
query = st.chat_input("Pregunta algo sobre el documento")
|
90 |
|
91 |
if query:
|
92 |
with st.spinner("Buscando respuestas..."):
|
93 |
-
|
|
|
94 |
response = query_llm(query, user_id, document_id)
|
95 |
-
|
96 |
# Agrega la interacción al historial
|
97 |
st.session_state.qa_history.append({"question": query, "answer": response})
|
98 |
|
|
|
13 |
import uuid
|
14 |
from streamlit_pdf_viewer import pdf_viewer # Visor de PDF integrado en Streamlit
|
15 |
|
16 |
+
# Inicializa el cliente de ChromaDB (base de datos vectorial)
|
17 |
client = initialize_client()
|
18 |
|
19 |
+
# Frases sarcásticas para mostrar al usuario mientras procesa
|
20 |
sarcastic_lines = [
|
21 |
"Cocinando el PDF... 🍳",
|
22 |
"Esto puede tomar un momento; estoy convenciendo al PDF de que coopere... 🤔",
|
|
|
49 |
uploaded_file = st.file_uploader("Subir PDF", type="pdf")
|
50 |
|
51 |
if uploaded_file:
|
52 |
+
# Genera un ID único de documento
|
53 |
document_id = generate_document_id()
|
54 |
st.success("¡Archivo subido con éxito! Podemos comenzar.")
|
55 |
|
|
|
62 |
st.subheader("PDF Subido")
|
63 |
pdf_viewer(pdf_bytes)
|
64 |
|
65 |
+
# Paso 2: Procesar PDF (extraer texto)
|
66 |
with st.spinner("Procesando..."):
|
67 |
st.markdown(random.choice(sarcastic_lines))
|
68 |
pages_and_text = read_pdf(pdf_bytes)
|
69 |
st.success("¡PDF procesado con éxito!")
|
70 |
|
71 |
+
# Paso 3: Dividir texto en oraciones y chunks
|
72 |
with st.spinner("Dividiendo en secciones..."):
|
73 |
st.markdown(random.choice(sarcastic_lines))
|
74 |
processed_chunks = process_chunks(pages_and_text)
|
75 |
st.success("¡Texto dividido en chunks!")
|
76 |
|
77 |
+
# Paso 4: Generar embeddings localmente
|
78 |
with st.spinner("Creando embeddings..."):
|
79 |
st.markdown(random.choice(sarcastic_lines))
|
80 |
embeddings_df = embed_text_chunks(processed_chunks)
|
|
|
87 |
st.success(f"¡Embeddings guardados para el documento con ID: {document_id}")
|
88 |
|
89 |
# Paso 6: Interacción con el chat
|
90 |
+
# Campo de texto para que el usuario haga su pregunta
|
91 |
query = st.chat_input("Pregunta algo sobre el documento")
|
92 |
|
93 |
if query:
|
94 |
with st.spinner("Buscando respuestas..."):
|
95 |
+
# Opcional: si quieres ver cuál es el contexto extraído, puedes llamar a:
|
96 |
+
# context = query_chroma_db(user_id, document_id, query)
|
97 |
response = query_llm(query, user_id, document_id)
|
|
|
98 |
# Agrega la interacción al historial
|
99 |
st.session_state.qa_history.append({"question": query, "answer": response})
|
100 |
|