rag-filesv1 / app.py
salmg's picture
Create app.py
8085033 verified
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()