Spaces:
Sleeping
Sleeping
| from llama_index.core import VectorStoreIndex, SimpleDirectoryReader | |
| import gradio as gr | |
| def answer(message, history): | |
| files = [] # Lista para almacenar los archivos del usuario | |
| # Recorre el historial de mensajes para encontrar archivos previamente cargados | |
| for msg in history: | |
| if msg['role'] == "user" and isinstance(msg['content'], tuple): | |
| files.append(msg['content'][0]) # Extrae el nombre del archivo | |
| # Agrega los nuevos archivos enviados con el mensaje actual | |
| for file in message["files"]: | |
| files.append(file) | |
| # Usa SimpleDirectoryReader para cargar el contenido de los archivos | |
| documents = SimpleDirectoryReader(input_files=files).load_data() | |
| # Crea un 铆ndice vectorial a partir de los documentos cargados | |
| index = VectorStoreIndex.from_documents(documents) | |
| # Crea un motor de consulta para buscar dentro del 铆ndice | |
| query_engine = index.as_query_engine() | |
| # Realiza la consulta usando el texto ingresado por el usuario y devuelve la respuesta como string | |
| return str(query_engine.query(message["text"])) | |
| # Define la interfaz de chat de Gradio | |
| demo = gr.ChatInterface( | |
| answer, # Funci贸n que procesa cada mensaje | |
| type="messages", # El historial se maneja como lista de mensajes con roles | |
| title="Llama Index RAG v1", # T铆tulo del chatbot | |
| description="Upload any text or pdf files and ask questions about them!", # Descripci贸n visible para el usuario | |
| textbox=gr.MultimodalTextbox(file_types=[".pdf", ".txt"]), # Caja de entrada que permite texto y archivos | |
| multimodal=True # Habilita el soporte para entrada multimodal (texto + archivos) | |
| ) | |
| # Lanza la aplicaci贸n de Gradio para que se abra en el navegador | |
| demo.launch() | |