File size: 1,560 Bytes
26a5c82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import gradio as gr
from transformers import pipeline

# Cargamos el modelo de texto por defecto (auto selecciona uno si no especificas)
chatbot = pipeline("text-generation")

# Historial del chat (simple lista de tuplas)
def responder(mensaje, historial):
    if historial is None:
        historial = []
    # Preparamos el prompt (concatenamos las últimas interacciones)
    contexto = ""
    for entrada, salida in historial[-3:]:
        contexto += f"Humano: {entrada}\nBot: {salida}\n"
    contexto += f"Humano: {mensaje}\nBot:"

    # Generamos respuesta
    respuesta = chatbot(
        contexto,
        max_new_tokens=120,
        pad_token_id=50256,
        do_sample=True,
        temperature=0.7,
        top_p=0.9
    )[0]["generated_text"]

    # Cortamos el texto para quedarnos solo con la parte del bot
    respuesta = respuesta.split("Bot:")[-1].strip()
    historial.append((mensaje, respuesta))
    return historial, historial


# Interfaz con Gradio
with gr.Blocks(theme="gradio/soft") as demo:
    gr.Markdown("## 💬 Chatbot básico con modelo predeterminado de Hugging Face")
    gr.Markdown("Escribe lo que quieras y el bot intentará responderte (sin API, sin lujos).")

    chatbot_ui = gr.Chatbot(label="Chatbot")
    entrada = gr.Textbox(placeholder="Escribe un mensaje y presiona Enter...")
    estado = gr.State([])

    entrada.submit(responder, [entrada, estado], [chatbot_ui, estado])
    entrada.submit(lambda: "", None, entrada)  # limpia el campo de entrada

# Ejecutar app
if __name__ == "__main__":
    demo.launch()