|
|
import os |
|
|
import gradio as gr |
|
|
|
|
|
|
|
|
MAX_NEW_TOKENS = 100 |
|
|
TEMPERATURE = 0.5 |
|
|
TOP_P = 0.95 |
|
|
TOP_K = 50 |
|
|
REPETITION_PENALTY = 1.05 |
|
|
|
|
|
|
|
|
|
|
|
model = None |
|
|
tokenizer = None |
|
|
|
|
|
def load_model(): |
|
|
global model, tokenizer |
|
|
return model, tokenizer |
|
|
|
|
|
|
|
|
def generate_response(input_text, max_tokens, temperature, top_p, repetition_penalty): |
|
|
global model, tokenizer |
|
|
|
|
|
if model is None or tokenizer is None: |
|
|
model, tokenizer = load_model() |
|
|
|
|
|
|
|
|
return "Adios" |
|
|
|
|
|
def chat_interface(message, history, system_message, max_tokens, temperature, top_p, repetition_penalty): |
|
|
|
|
|
prompt = f"{message}" |
|
|
if system_message: |
|
|
prompt = f"{system_message}\n{message}" |
|
|
|
|
|
response = generate_response( |
|
|
prompt, |
|
|
max_tokens, |
|
|
temperature, |
|
|
top_p, |
|
|
repetition_penalty |
|
|
) |
|
|
return response |
|
|
|
|
|
demo = gr.ChatInterface( |
|
|
chat_interface, |
|
|
title="Sabiduría Popular - Refranes", |
|
|
description="Esta aplicación explica el significado de refranes en español utilizando un modelo de lenguaje. Escribe un refrán y el modelo te explicará su significado.", |
|
|
examples=[ |
|
|
["A caballo regalado no le mires el diente"], |
|
|
["Más vale pájaro en mano que ciento volando"], |
|
|
["Quien a buen árbol se arrima, buena sombra le cobija"], |
|
|
["No por mucho madrugar amanece más temprano"] |
|
|
], |
|
|
additional_inputs=[ |
|
|
gr.Textbox( |
|
|
value="Eres un experto en sabiduría popular española. Tu tarea es explicar el significado de refranes en español de manera clara y concisa.", |
|
|
label="System message" |
|
|
), |
|
|
gr.Slider( |
|
|
minimum=1, |
|
|
maximum=500, |
|
|
value=MAX_NEW_TOKENS, |
|
|
step=1, |
|
|
label="Max new tokens" |
|
|
), |
|
|
gr.Slider( |
|
|
minimum=0.1, |
|
|
maximum=2.0, |
|
|
value=TEMPERATURE, |
|
|
step=0.1, |
|
|
label="Temperature" |
|
|
), |
|
|
gr.Slider( |
|
|
minimum=0.1, |
|
|
maximum=1.0, |
|
|
value=TOP_P, |
|
|
step=0.05, |
|
|
label="Top-p (nucleus sampling)" |
|
|
), |
|
|
gr.Slider( |
|
|
minimum=1.0, |
|
|
maximum=2.0, |
|
|
value=REPETITION_PENALTY, |
|
|
step=0.05, |
|
|
label="Repetition penalty" |
|
|
), |
|
|
], |
|
|
theme="soft" |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
print("Iniciando la aplicación. El modelo se cargará con la primera consulta.") |
|
|
demo.launch() |