Spaces:
Sleeping
Sleeping
import os | |
import streamlit as st | |
from tasks.data_ingestion_task.data_ingestion_task import DataIngestionTask | |
from tasks.query_handling_task.query_handling_task import QueryHandlingTask | |
from utils.llama_index_utils import setup_directories | |
# Title Section | |
st.title("(PDF) Chat con documentos de Procesos 🗒️") | |
# Subtitle Section | |
st.markdown("Retrieval-Augmented Generation") | |
st.markdown("iniciar chat ...🚀") | |
# Session State Initialization | |
if 'messages' not in st.session_state: | |
st.session_state.messages = [{'role': 'assistant', "content": 'Hola! Selecciona un pdf para cargar, y hazme una pregunta.'}] | |
# Sidebar Section | |
with st.sidebar: | |
st.image('image_logo.jpeg', use_column_width=True) | |
st.title("Menu:") | |
uploaded_file = st.file_uploader("Sube un archivo PDF y dale click al botón enviar y procesar.") | |
if st.button("Enviar y Procesar"): | |
if uploaded_file is not None: | |
with st.spinner("Procesando..."): | |
# Ensure the data directory exists | |
data_dir, persist_dir = setup_directories() | |
# Save the uploaded file in the data directory | |
filepath = os.path.join(data_dir, "saved_pdf.pdf") | |
with open(filepath, "wb") as f: | |
f.write(uploaded_file.getbuffer()) | |
# Use DataIngestionTask to process the PDF | |
ingestion_task = DataIngestionTask( | |
config_path='tasks/data_ingestion_task/config.txt', | |
input_structure_path='tasks/data_ingestion_task/input_structure.json', | |
output_structure_path='tasks/data_ingestion_task/output_structure.json' | |
) | |
ingestion_task.execute({}) | |
st.success("PDF processed successfully") | |
else: | |
st.error("Please upload a PDF file before processing.") | |
st.subheader("Select Model:") | |
model_selected = st.session_state.get('model_selected', '') | |
col1, col2 = st.columns(2) | |
if col1.button("GEMMA", key="gemmabtn"): | |
st.session_state.model_selected = "GEMMA" | |
if col2.button("GEMINI", key="geminibtn"): | |
st.session_state.model_selected = "GEMINI" | |
if model_selected: | |
st.write(f"Selected Model: **{model_selected}**") | |
# Chat Input Section | |
user_prompt = st.chat_input("Pregunta acerca del contenido en el archivo PDF:") | |
if user_prompt: | |
st.session_state.messages.append({'role': 'user', "content": user_prompt}) | |
# Use QueryHandlingTask to handle the query | |
query_task = QueryHandlingTask( | |
config_path='tasks/query_handling_task/config.txt', | |
input_structure_path='tasks/query_handling_task/input_structure.json', | |
output_structure_path='tasks/query_handling_task/output_structure.json' | |
) | |
response = query_task.execute({'query': user_prompt}) | |
st.session_state.messages.append({'role': 'assistant', "content": response}) | |
# Chat Message Display | |
for message in st.session_state.messages: | |
with st.chat_message(message['role']): | |
st.write(message['content']) | |