clavel's picture
Update app.py
5fa6aaf verified
Raw
History Blame
4.22 kB
import gradio as gr
from huggingface_hub import InferenceClient
from transformers import pipeline
title = "Generador y clasificador de coloquialismos cubanos"
description = "Genera texto con el dialecto cubano y detecta expresiones coloquiales cubanas."
article = """
## Modelo:
Se usa el somosnlp-hackathon-2026/patriae-cuban-dialect-model.
## Fine-tuning:
Se utiliz贸 el dataset somosnlp-hackathon-2026/patriae-cuba-literature-dataset para hacer fine-tuning del modelo gia-uh/cecilia-2b-instruct-v1.
## Participantes del equipo Patriae en SomosNLP 2026:
* **Carlos Luis Barn茅s Infante (https://huggingface.co/blacknoize404)**
* **Yisel Clavel Quintero (https://huggingface.co/clavel)**
* **Dionis Lopez (https://huggingface.co/inoid)**
"""
# Cargar el modelo para clasificaci贸n
classifier = pipeline(
"text-classification",
model='somosnlp-hackathon-2026/patriae-cuban-dialect-model'
)
def respond(message, history, system_message, max_tokens, temperature, top_p):
"""
Funci贸n para generar respuestas usando el modelo de chat
"""
# Usar el mismo modelo para generaci贸n (si es compatible)
# Nota: Si el modelo no soporta chat, necesitas usar un endpoint diferente
client = InferenceClient(
model="somosnlp-hackathon-2026/patriae-cuban-dialect-model"
)
messages = [{"role": "system", "content": system_message}]
messages.extend(history)
messages.append({"role": "user", "content": message})
response = ""
try:
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
if message.choices and message.choices[0].delta.content:
token = message.choices[0].delta.content
response += token
yield response
except Exception as e:
yield f"Error: {str(e)}"
def classify_text(text):
"""
Funci贸n para clasificar texto y detectar coloquialismos cubanos
"""
if not text or text.strip() == "":
return "Por favor, ingresa un texto para clasificar."
results = classifier(text)
# Ordenar por score (de mayor a menor)
results.sort(key=lambda x: x['score'], reverse=True)
# Mostrar el resultado m谩s probable
top_result = results[0]
return f"**Clasificaci贸n:** {top_result['label']}\n**Confianza:** {top_result['score']:.2%}"
# Interfaz de Chat
chat_interface = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="Eres un chatbot cubano que ayuda a entender y usar el dialecto cubano.",
label="System message"
),
gr.Slider(minimum=1, maximum=1024, value=150, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
title=title,
description=description,
article=article
)
# Interfaz de Clasificaci贸n
classifier_interface = gr.Interface(
fn=classify_text,
inputs=gr.Textbox(
label="Texto a clasificar",
placeholder="Escribe una frase en cubano...",
lines=3
),
outputs=gr.Markdown(label="Resultado"),
title="Clasificador de coloquialismos cubanos",
description="Detecta si un texto contiene expresiones coloquiales cubanas.",
examples=[
["Nos march谩bamos sin ti, creyendo que se te hab铆an pegado las s谩banas."],
["De Varadero ven铆a para ac谩 porque en su casa las broncas con el padre eran de ampanga."],
["Los pueblos que no se conocen han de darse prisa para conocerse, como quienes van a pelear juntos."],
]
)
# Combinar ambas interfaces en una sola app
with gr.Blocks() as demo:
gr.Markdown(f"# {title}")
gr.Markdown(description)
with gr.Tab("馃挰 Chat"):
chat_interface.render()
with gr.Tab("馃攳 Clasificador"):
classifier_interface.render()
gr.Markdown(article)
if __name__ == "__main__":
demo.launch()