File size: 4,065 Bytes
ec80aa7
 
7d9d48e
 
 
ec80aa7
 
 
 
 
 
7d9d48e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ec80aa7
 
7d9d48e
 
ec80aa7
 
 
7d9d48e
 
 
 
ec80aa7
7d9d48e
 
 
 
 
7346895
7d9d48e
 
 
 
7346895
7d9d48e
 
ec80aa7
7d9d48e
 
 
ec80aa7
 
 
7d9d48e
6d36002
7d9d48e
 
 
 
 
 
 
 
 
 
 
 
 
 
ec80aa7
 
7d9d48e
ec80aa7
7d9d48e
 
7346895
 
 
ec80aa7
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from dataclasses import dataclass
from enum import Enum
from typing import Dict, List
from src.evaluation.questions import EXAM_QUESTIONS
from src.envs import QUEUE_REPO, RESULTS_REPO, REPO_ID, EXAM_QUESTIONS_REPO, HF_DATASETS_BASE_URL

@dataclass
class Task:
    benchmark: str
    metric: str
    col_name: str
    display_name: str

def create_tasks_enum():
    """Create Tasks enum dynamically from dataset themes"""
    task_dict = {}
    for sanitized_theme, questions in EXAM_QUESTIONS.items():
        original_theme = questions[0]['theme']
        task_dict[sanitized_theme] = Task(
            benchmark=sanitized_theme,
            metric="accuracy",
            col_name=f"{original_theme} Test",
            display_name=original_theme
        )

    # Add overall score
    task_dict['overall'] = Task(
        benchmark="overall",
        metric="accuracy",
        col_name="Overall Score",
        display_name="Overall Score"
    )
    
    return Enum('Tasks', task_dict)

Tasks = create_tasks_enum()

NUM_FEWSHOT = 0

TITLE = """<h1 align="center" id="space-title">馃弳 SAS Opposition Exam Leaderboard</h1>"""

INTRODUCTION_TEXT = """
Este leaderboard eval煤a modelos de lenguaje natural simulando la experiencia real de un opositor al Servicio Andaluz de Salud (SAS).
Al igual que un alumno opositor, los modelos deben responder a preguntas tipo test del temario oficial, demostrando su comprensi贸n y conocimiento de las materias evaluadas.
"""

LLM_BENCHMARKS_TEXT = f"""
## C贸mo funciona

Los modelos son evaluados exactamente igual que un opositor real: respondiendo preguntas tipo test del temario oficial del SAS, sin acceso a material de consulta durante la prueba.
Para consultar el temario completo y el proceso de oposici贸n, puede visitar la [p谩gina oficial del SAS](https://www.sspa.juntadeandalucia.es/servicioandaluzdesalud/profesionales/ofertas-de-empleo/oferta-de-empleo-publico-puestos-base/oep-extraordinaria-decreto-ley-122022-centros-sas/cuadro-de-evolucion-concurso-oposicion-centros-sas).

## Datasets del Proyecto
El proyecto utiliza tres datasets principales, todos disponibles en Hugging Face:
- [Dataset de Preguntas de Examen]({HF_DATASETS_BASE_URL}/{EXAM_QUESTIONS_REPO}): Contiene las preguntas tipo test utilizadas para la evaluaci贸n
- [Dataset de Solicitudes]({HF_DATASETS_BASE_URL}/{QUEUE_REPO}): Almacena las solicitudes de evaluaci贸n de modelos
- [Dataset de Resultados]({HF_DATASETS_BASE_URL}/{RESULTS_REPO}): Contiene los resultados de las evaluaciones realizadas

## Proceso de Evaluaci贸n
- Cada modelo se enfrenta a preguntas tipo test, similar al examen real de oposici贸n
- Las preguntas son de opci贸n m煤ltiple con una 煤nica respuesta correcta
- La puntuaci贸n se calcula como porcentaje de aciertos, igual que en la oposici贸n real

## Reproducibilidad
El c贸digo de evaluaci贸n est谩 disponible en este repositorio. Para reproducir resultados:

1. Env铆a tu modelo a trav茅s de la pesta帽a "Submit here!"
2. Puedes usar modelos de Hugging Face Hub o de OpenRouter
3. Los resultados se calcular谩n autom谩ticamente y se a帽adir谩n al leaderboard
"""

EVALUATION_QUEUE_TEXT = """
## Opciones para evaluar tu modelo

### 1) Usando Hugging Face Hub:
- Aseg煤rate de que tu modelo est谩 disponible en el Hub
- El modelo debe poder cargarse usando AutoModelForCausalLM y AutoTokenizer
- Necesitar谩s proporcionar el nombre del modelo y la revisi贸n

### 2) Usando OpenRouter:
- Necesitar谩s una API key de OpenRouter
- Proporciona el nombre exacto del modelo como aparece en OpenRouter
- No necesitas hospedar el modelo, OpenRouter se encarga de eso

### Requisitos generales:
- Los modelos deben poder generar texto en espa帽ol
- Deben poder entender y responder preguntas de opci贸n m煤ltiple
- Se recomienda usar modelos con capacidad de razonamiento general
"""

CITATION_BUTTON_LABEL = "Citar estos resultados"
CITATION_BUTTON_TEXT = r"""
@misc{sas-exam-leaderboard,
    title={SAS Opposition Exam Leaderboard},
    year={2025},
    url={https://huggingface.co/spaces/alberti/leaderboard}
}
"""