import gradio as gr import pandas as pd from transformers import pipeline import os # Cargar modelo open source (elige uno según rendimiento y tamaño) modelo = pipeline("text2text-generation", model="google/flan-t5-base") # modelo ligero, sin OpenAI # Variables para almacenar el DataFrame df_global = None def subir_csv(file): global df_global try: df_global = pd.read_csv(file.name) return f"Archivo cargado exitosamente con {df_global.shape[0]} filas y {df_global.shape[1]} columnas." except Exception as e: return f"Error al cargar el archivo: {e}" def analizar_pregunta(pregunta): global df_global if df_global is None: return "Por favor, primero sube un archivo CSV." # Convertimos una vista simple del dataframe a texto para enviarla al LLM df_vista = df_global.head(5).to_string() prompt = f"""Este es un resumen de una tabla:\n{df_vista}\n\nPregunta: {pregunta}\nRespuesta:""" respuesta = modelo(prompt, max_new_tokens=100)[0]['generated_text'] return respuesta gr.Interface( fn=analizar_pregunta, inputs=[ gr.File(label="Sube tu archivo CSV", file_types=[".csv"], file_count="single", type="file", elem_id="file-upload"), gr.Textbox(label="Haz una pregunta sobre la tabla") ], outputs=gr.Textbox(label="Respuesta del modelo"), live=True, title="Análisis Inteligente de CSV (sin OpenAI)", description="Este Space utiliza un modelo open source para interpretar archivos CSV." ).launch()