BBS-3 / app.py
Danielbrdz's picture
Upload 2 files
6389500 verified
import gradio as gr
import pandas as pd
import plotly.express as px
headers = [
"Modelo",
"Promedio",
"Español Mexicano",
"Español España",
"Español Argentino",
"Español Cubano",
"Español Colombiano",
"Español Chileno"
]
data = [
["Gemini 2.5 Flash", 55.56, 53.33, 65.00, 40.00, 46.67, 66.67, 61.67],
["Gemini 2.5 Flash Lite", 51.94, 43.33, 61.67, 41.67, 41.67, 70.00, 53.33],
["Kimi K2 Instruct 0905", 47.22, 43.33, 53.33, 41.67, 45.00, 50.00, 50.00],
["DeepSeek V3.1 Terminus", 46.94, 43.33, 50.00, 38.33, 41.67, 56.67, 51.67],
["Llama 4 Maverick", 43.89, 40.00, 43.33, 38.33, 36.67, 58.33, 46.67],
["Qwen 3 Next 80b", 40.00, 35.00, 38.33, 36.67, 35.00, 53.33, 41.67],
["Qwen 3 235b A22b", 39.72, 36.67, 48.33, 30.00, 35.00, 48.33, 40.00],
["GPT OSS 120b", 38.89, 30.00, 35.00, 28.33, 31.67, 55.00, 53.33],
["Qwen 3 32b", 36.67, 30.00, 35.00, 35.00, 40.00, 41.67, 38.33],
["Llama 3.1 8b", 26.67, 25.00, 26.67, 30.00, 28.33, 23.33, 26.67]
]
df_results = pd.DataFrame(data, columns=headers)
intro_md = """
# BBS 3: Barcenas Benchmark Spanish
### Evaluación de LLMs en Diferentes Variantes del Español
"""
info_text = """
### 📚 Acerca de BBS 3
Bienvenido a la tercera edición del **Barcenas Benchmark Spanish (BBS 3)**.
#### 🎯 Objetivo
El propósito de este benchmark es evaluar y comparar el rendimiento de Modelos de Lenguaje de Gran Tamaño (LLMs) específicamente en su capacidad para entender y generar diversas **variantes dialectales del idioma español**.
En esta versión, se ha incorporado además la evaluación de conocimiento cultural, necesitará identificar que tweet corresponde a cierta variante del español.
#### 🔬 Metodología
* **Modelos Evaluados:** Se utilizaron APIs de Cerebras, Nvidia y Google (Gemini) para ejecutar las pruebas.
* **Protocolo de Prueba:** Se presentó a cada LLM una serie de 60 preguntas por cada variante del español. Las preguntas son de opción múltiple (tipo test: A, B, C, D) y consisten en identificar qué tweet o frase corresponde mejor a un dialecto específico (mexicano, español peninsular, argentino, etc.).
* **Configuración:** Se utilizó una temperatura de `0.3` y un Top-p de `1.0` para garantizar consistencia.
* **Métrica:** Se calculó el promedio de precisión sobre todas las variantes evaluadas.
#### 📊 Interpretación de Resultados Preliminares
* **Dominio de Gemini:** Los modelos de la familia Gemini muestran un rendimiento superior consistente en la detección de matices dialectales del español, superando notablemente a sus competidores en esta fase.
* **Desempeño de Qwen y Modelos Abiertos:** A pesar de su buen rendimiento general en otros benchmarks, los modelos Qwen y el modelo open source GPT OSS 120b muestran dificultades con las sutilezas regionales del español. En el caso del modelo OSS, esto podría deberse a una alta dependencia de datos sintéticos en su entrenamiento, que a menudo carecen de riqueza cultural.
#### 🚀 Próximos Pasos
* **Expansión:** Inclusión de modelos propietarios de OpenAI (GPT-5), Anthropic (Claude 4.5) y xAI (Grok 4) conforme los recursos de API lo permitan.
---
**Agradecimientos:**
* A **Ismael Medina Muñoz** (Solutions Architect en Databricks) por la idea de investigar el rendimiento en español en los LLMs.
* A los autores del paper *"Es igual pero no es lo mismo: ¿Distinguen los LLMs las variedades del español?"*, cuyo trabajo sirvió de inspiración para segmentos de BBS 3.
**Hecho con ❤️ por Danielbrdz**
"""
def create_plot(df):
fig = px.bar(
df,
x="Promedio",
y="Modelo",
orientation='h',
title="Rendimiento Promedio por Modelo",
text="Promedio",
color="Promedio",
color_continuous_scale="Viridis"
)
fig.update_layout(yaxis={'categoryorder':'total ascending'})
fig.update_traces(texttemplate='%{text:.2f}', textposition='outside')
return fig
custom_css = """
h1 {
text-align: center;
display: block;
}
h3 {
text-align: center;
display: block;
}
.gradio-container {
font-family: 'Helvetica Neue', Arial, sans-serif;
}
"""
theme = gr.themes.Soft(
primary_hue="orange",
secondary_hue="slate",
)
with gr.Blocks(theme=theme, css=custom_css) as demo:
gr.Markdown(intro_md)
with gr.Tabs():
with gr.Tab("🏆 Resultados (Leaderboard)"):
with gr.Row():
plot = gr.Plot(value=create_plot(df_results), label="Comparativa Visual")
with gr.Row():
gr.Markdown("### 📋 Tabla Detallada")
with gr.Row():
gr.DataFrame(
value=df_results,
headers=headers,
datatype=["str"] + ["number"] * 7,
interactive=False,
wrap=True,
column_widths=["200px"]
)
with gr.Tab("ℹ️ Metodología e Info"):
with gr.Column(variant="panel"):
gr.Markdown(info_text)
demo.launch()