Spaces:
Build error
Build error
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 |
|