Spaces:
Running
Running
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
import torch | |
# Carga del modelo ligero en español | |
model_name = "mrm8488/t5-base-finetuned-spanish-summarization" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
# Prompt base para BITER | |
base_prompt = ( | |
"Eres BITER, un mentor experto en negocios. Responde SIEMPRE en español, " | |
"con consejos breves, claros y con visión estratégica. Ayudas a emprendedores " | |
"a tomar buenas decisiones. Sé directo, profesional y humano.\n" | |
"Usuario: {pregunta}\n" | |
"BITER:" | |
) | |
# Función de respuesta | |
def responder(pregunta): | |
prompt = base_prompt.format(pregunta=pregunta) | |
input_ids = tokenizer.encode(prompt, return_tensors="pt", truncation=True) | |
# Generar respuesta | |
with torch.no_grad(): | |
output_ids = model.generate( | |
input_ids, | |
max_new_tokens=100, | |
num_beams=4, | |
early_stopping=True | |
) | |
respuesta = tokenizer.decode(output_ids[0], skip_special_tokens=True) | |
return respuesta.strip() | |
# Interfaz Gradio | |
iface = gr.Interface( | |
fn=responder, | |
inputs=gr.Textbox(lines=3, placeholder="¿Cuál es tu duda sobre tu negocio?", label="Tu pregunta"), | |
outputs=gr.Textbox(label="Respuesta de BITER"), | |
title="BITER - Tu Mentor IA para Decisiones de Negocio", | |
description="BITER responde dudas de emprendedores como si fuera un CEO experimentado. Modelo: T5 ligero afinado en español.", | |
examples=[ | |
["¿Cómo puedo validar mi idea de negocio con poco presupuesto?"], | |
["¿Cuál es la mejor estrategia para conseguir mis primeros clientes?"], | |
["¿Debería invertir en publicidad o en SEO?"] | |
], | |
) | |
iface.launch() |