Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
|
| 2 |
+
import gradio as gr
|
| 3 |
+
|
| 4 |
+
def answer(message, history):
|
| 5 |
+
files = [] # Lista para almacenar los archivos del usuario
|
| 6 |
+
|
| 7 |
+
# Recorre el historial de mensajes para encontrar archivos previamente cargados
|
| 8 |
+
for msg in history:
|
| 9 |
+
if msg['role'] == "user" and isinstance(msg['content'], tuple):
|
| 10 |
+
files.append(msg['content'][0]) # Extrae el nombre del archivo
|
| 11 |
+
|
| 12 |
+
# Agrega los nuevos archivos enviados con el mensaje actual
|
| 13 |
+
for file in message["files"]:
|
| 14 |
+
files.append(file)
|
| 15 |
+
|
| 16 |
+
# Usa SimpleDirectoryReader para cargar el contenido de los archivos
|
| 17 |
+
documents = SimpleDirectoryReader(input_files=files).load_data()
|
| 18 |
+
|
| 19 |
+
# Crea un 铆ndice vectorial a partir de los documentos cargados
|
| 20 |
+
index = VectorStoreIndex.from_documents(documents)
|
| 21 |
+
|
| 22 |
+
# Crea un motor de consulta para buscar dentro del 铆ndice
|
| 23 |
+
query_engine = index.as_query_engine()
|
| 24 |
+
|
| 25 |
+
# Realiza la consulta usando el texto ingresado por el usuario y devuelve la respuesta como string
|
| 26 |
+
return str(query_engine.query(message["text"]))
|
| 27 |
+
|
| 28 |
+
# Define la interfaz de chat de Gradio
|
| 29 |
+
demo = gr.ChatInterface(
|
| 30 |
+
answer, # Funci贸n que procesa cada mensaje
|
| 31 |
+
type="messages", # El historial se maneja como lista de mensajes con roles
|
| 32 |
+
title="Llama Index RAG v1", # T铆tulo del chatbot
|
| 33 |
+
description="Upload any text or pdf files and ask questions about them!", # Descripci贸n visible para el usuario
|
| 34 |
+
textbox=gr.MultimodalTextbox(file_types=[".pdf", ".txt"]), # Caja de entrada que permite texto y archivos
|
| 35 |
+
multimodal=True # Habilita el soporte para entrada multimodal (texto + archivos)
|
| 36 |
+
)
|
| 37 |
+
|
| 38 |
+
# Lanza la aplicaci贸n de Gradio para que se abra en el navegador
|
| 39 |
+
demo.launch()
|