Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
feat(about): new about page with translation
Browse files- frontend/src/App.jsx +2 -0
- frontend/src/components/Navigation/Navigation.tsx +10 -0
- frontend/src/i18n.tsx +4 -2
- frontend/src/pages/AboutPage/AboutPage.tsx +363 -0
- frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/{defaults.js → defaults.tsx} +19 -3
- frontend/src/pages/LeaderboardPage/components/Leaderboard/utils/columnUtils.jsx +43 -39
- frontend/tsconfig.app.json +1 -0
frontend/src/App.jsx
CHANGED
@@ -20,6 +20,7 @@ import { headerFooterDisplayItem } from "@codegouvfr/react-dsfr/Display";
|
|
20 |
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
21 |
import { LanguageSelect } from "./components/LanguageSelect/LanguageSelect";
|
22 |
import LeaderboardProvider from "./pages/LeaderboardPage/components/Leaderboard/context/LeaderboardContext";
|
|
|
23 |
const queryClient = new QueryClient({
|
24 |
defaultOptions: {
|
25 |
queries: {
|
@@ -107,6 +108,7 @@ function App() {
|
|
107 |
<Routes>
|
108 |
<Route path="/" element={<LeaderboardPage />} />
|
109 |
<Route path="/add" element={<AddModelPage />} />
|
|
|
110 |
{/* <Route path="/quote" element={<QuotePage />} />
|
111 |
<Route path="/vote" element={<VoteModelPage />} /> */}
|
112 |
</Routes>
|
|
|
20 |
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
21 |
import { LanguageSelect } from "./components/LanguageSelect/LanguageSelect";
|
22 |
import LeaderboardProvider from "./pages/LeaderboardPage/components/Leaderboard/context/LeaderboardContext";
|
23 |
+
import AboutPage from "pages/AboutPage/AboutPage";
|
24 |
const queryClient = new QueryClient({
|
25 |
defaultOptions: {
|
26 |
queries: {
|
|
|
108 |
<Routes>
|
109 |
<Route path="/" element={<LeaderboardPage />} />
|
110 |
<Route path="/add" element={<AddModelPage />} />
|
111 |
+
<Route path="/about" element={<AboutPage />} />
|
112 |
{/* <Route path="/quote" element={<QuotePage />} />
|
113 |
<Route path="/vote" element={<VoteModelPage />} /> */}
|
114 |
</Routes>
|
frontend/src/components/Navigation/Navigation.tsx
CHANGED
@@ -68,6 +68,15 @@ const Navigation = () => {
|
|
68 |
},
|
69 |
text: t("submit"),
|
70 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
// {
|
72 |
// isActive: active === 2,
|
73 |
// linkProps: {
|
@@ -208,6 +217,7 @@ const Navigation = () => {
|
|
208 |
|
209 |
const { i18n } = declareComponentKeys<
|
210 |
| "submit"
|
|
|
211 |
>()({ Navigation });
|
212 |
export type I18n = typeof i18n;
|
213 |
|
|
|
68 |
},
|
69 |
text: t("submit"),
|
70 |
},
|
71 |
+
{
|
72 |
+
isActive: active === 2,
|
73 |
+
linkProps: {
|
74 |
+
href: "/about",
|
75 |
+
target: '_self',
|
76 |
+
onClick: handleNavigation(1, "/about")
|
77 |
+
},
|
78 |
+
text: t("about"),
|
79 |
+
},
|
80 |
// {
|
81 |
// isActive: active === 2,
|
82 |
// linkProps: {
|
|
|
217 |
|
218 |
const { i18n } = declareComponentKeys<
|
219 |
| "submit"
|
220 |
+
| "about"
|
221 |
>()({ Navigation });
|
222 |
export type I18n = typeof i18n;
|
223 |
|
frontend/src/i18n.tsx
CHANGED
@@ -46,7 +46,8 @@ export const {
|
|
46 |
"service": "LLM leaderboard for the french language"
|
47 |
},
|
48 |
"Navigation": {
|
49 |
-
"submit": "Submit"
|
|
|
50 |
}
|
51 |
},
|
52 |
/* spell-checker: disable */
|
@@ -66,7 +67,8 @@ export const {
|
|
66 |
"service": "Leaderboard des GML pour le français"
|
67 |
},
|
68 |
"Navigation": {
|
69 |
-
"submit": "Soumettre"
|
|
|
70 |
}
|
71 |
}
|
72 |
/* spell-checker: enable */
|
|
|
46 |
"service": "LLM leaderboard for the french language"
|
47 |
},
|
48 |
"Navigation": {
|
49 |
+
"submit": "Submit",
|
50 |
+
"about": "About"
|
51 |
}
|
52 |
},
|
53 |
/* spell-checker: disable */
|
|
|
67 |
"service": "Leaderboard des GML pour le français"
|
68 |
},
|
69 |
"Navigation": {
|
70 |
+
"submit": "Soumettre",
|
71 |
+
"about": "A propos"
|
72 |
}
|
73 |
}
|
74 |
/* spell-checker: enable */
|
frontend/src/pages/AboutPage/AboutPage.tsx
ADDED
@@ -0,0 +1,363 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import PageHeader from "components/shared/PageHeader";
|
2 |
+
import { Box, Typography, Paper, List, ListItem, ListItemIcon } from "@mui/material";
|
3 |
+
import { LocalizedString, useResolveLocalizedString } from "i18n";
|
4 |
+
import FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';
|
5 |
+
import NavigateNextIcon from '@mui/icons-material/NavigateNext';
|
6 |
+
|
7 |
+
const TEXT = {
|
8 |
+
TITLE: {
|
9 |
+
"en": "About",
|
10 |
+
"fr": "A propos"
|
11 |
+
},
|
12 |
+
PARAGRAPH1: {
|
13 |
+
"en": "As LLMs capabilities improve, so do the social and economic stakes around this technology. Governments and institutions now have a vested interest in understanding AI technologies to assess whether and how they can benefit their economies, industries, and society as a whole.",
|
14 |
+
"fr": "À mesure que les modèles de langage progressent, leurs enjeux économiques et sociétaux prennent de plus en plus d’ampleur. Les gouvernements et institutions doivent désormais s’approprier ces technologies pour en comprendre les implications et évaluer comment elles peuvent contribuer à leurs économies, leurs industries et à la société dans son ensemble."
|
15 |
+
},
|
16 |
+
PARAGRAPH2: {
|
17 |
+
"en": "In this light, the French Coordination Nationale de l'IA, Ministère de l'Éducation nationale, Inria, LNE, and GENCI collaborated with Hugging Face to build a new LLM reference leaderboard for models in the French language, providing a comprehensive and transparent assessment of their performance, capabilities, and limitations.",
|
18 |
+
"fr": "C’est dans cette dynamique que la Coordination Nationale pour l’IA, le Ministère de l’Éducation nationale, Inria, le LNE et GENCI ont collaboré avec Hugging Face pour créer un leaderboard de référence dédié aux modèles de langage en français. Cet outil offre une évaluation de leurs performances, de leurs capacités et aussi de leurs limites."
|
19 |
+
},
|
20 |
+
PARAGRAPH3: {
|
21 |
+
"en": "The collaboration focused on a range of tasks and evaluation metrics, either entirely new or culturally adapted to be specific to the French language and cultural context.",
|
22 |
+
"fr": "La collaboration s’est concentrée sur un ensemble de tâches et d’indicateurs d’évaluation (benchmarks), soit entièrement nouveaux, soit adaptés pour prendre en compte les spécificités linguistiques et culturelles du français."
|
23 |
+
},
|
24 |
+
BUTS: {
|
25 |
+
TITRE: {
|
26 |
+
"en": "Goals",
|
27 |
+
"fr": "Objectifs"
|
28 |
+
},
|
29 |
+
BUT1: {
|
30 |
+
"en": "Improve LLM evaluation and comparison by providing a standardized leaderboard, allowing researchers, developers, and industry stakeholders to benchmark different models on a level playing field, enabling informed decision-making and fostering innovation.",
|
31 |
+
"fr": "Améliorer l’évaluation et la comparaison des modèles de langage, en mettant à disposition un leaderboard standardisé, permettant aux chercheurs, développeurs et industriels de comparer leurs performances sur une base équitable, favorisant ainsi une prise de décision éclairée et stimulant l’innovation."
|
32 |
+
},
|
33 |
+
BUT2: {
|
34 |
+
"en": "Promote the French language and culture by encouraging better integration of French into all AI models. By structuring evaluation around French-language tasks, we hope to incentivize model developers, including international ones, to incorporate more French-language data into their training datasets. In doing so, we also aim to enhance the overall capabilities of these models, improving their performance not just in French, but in multilingual tasks more broadly.",
|
35 |
+
"fr": "Promouvoir la langue et la culture françaises, en encourageant une meilleure intégration du français dans tous les modèles d’IA. En structurant l’évaluation autour de tâches spécifiques en français, nous espérons inciter les développeurs, y compris internationaux, à intégrer davantage de corpus francophones dans leurs données d’entraînement. En retour, cela permettra d’améliorer leurs performances, non seulement en français, mais aussi dans les tâches multilingues de manière plus large."
|
36 |
+
},
|
37 |
+
BUT3: {
|
38 |
+
"en": "Support AI research and development in France and French-speaking countries, encouraging researchers and developers to contribute to the advancement of more accurate, efficient, and effective LLMs.",
|
39 |
+
"fr": "Soutenir la recherche et le développement en IA en France et dans les pays francophones, en encourageant les chercheurs et développeurs à contribuer à l’amélioration des modèles de langage, en les rendant plus précis, efficaces et performants."
|
40 |
+
}
|
41 |
+
},
|
42 |
+
DATASETS: {
|
43 |
+
TITRE: {
|
44 |
+
"en": "The datasets considered include",
|
45 |
+
"fr": "Jeux de données utilisés"
|
46 |
+
},
|
47 |
+
DATASET1: {
|
48 |
+
"en": "GPQA (PhD-level knowledge assessment, professionally translated by Inria),",
|
49 |
+
"fr": "GPQA : évaluation des connaissances au niveau doctorat, traduit par Inria."
|
50 |
+
},
|
51 |
+
DATASET2: {
|
52 |
+
"en": "IFEval (LLMs’ ability to follow instructions, professionally culturally adapted by Inria),",
|
53 |
+
"fr": "IFEval : capacité des modèles à suivre des instructions, traduit et adapté culturellement par Inria."
|
54 |
+
},
|
55 |
+
DATASET3: {
|
56 |
+
"en": "A new dataset built from Baccalauréat (end of French high school exam) data, provided by the Ministère de l'Éducation nationale, extracted and curated by LNE and Inria.",
|
57 |
+
"fr": "Un jeu de données inédit construit à partir des sujets du Baccalauréat (examen de fin d’études secondaires en France), fourni par le Ministère de l’Éducation nationale et extrait par LNE et Inria."
|
58 |
+
},
|
59 |
+
FOOTER: {
|
60 |
+
"en": "GENCI engineers have already conducted evaluations on the French National Jean Zay supercluster, to ensure the robustness of the leaderboard, with researchers providing technical expertise at every step.",
|
61 |
+
"fr": "Les ingénieurs de GENCI ont déjà réalisé des évaluations sur le supercalculateur national Jean Zay, afin d’assurer la robustesse du leaderboard, avec le soutien technique de chercheurs et d’Hugging Face à chaque étape du processus."
|
62 |
+
}
|
63 |
+
},
|
64 |
+
APPROCHE: {
|
65 |
+
TITRE: {
|
66 |
+
"en": "The Leaderboard Approach",
|
67 |
+
"fr": "Approche du Leaderboard"
|
68 |
+
},
|
69 |
+
P1: {
|
70 |
+
"en": "This is just the first iteration of the leaderboard, and new versions will follow as we enrich it with additional benchmarks and evaluation methods.",
|
71 |
+
"fr": "Cette première version du leaderboard marque le début d’un projet évolutif : de nouvelles versions verront le jour, enrichies avec de nouveaux benchmarks et méthodes d’évaluation."
|
72 |
+
},
|
73 |
+
P2: {
|
74 |
+
"en": "To ensure the robustness of the leaderboard, we first conducted internal evaluations on a selection of models. However, in the current leaderboard, these models remain anonymous. This is intentional—we want to maintain the spirit of the leaderboard: developers (you!) should submit your own models.",
|
75 |
+
"fr": "Pour garantir la solidité et la fiabilité de l’outil, nous avons dans un premier temps réalisé des évaluations internes sur une sélection de modèles. Toutefois, dans cette version initiale, ces modèles sont anonymisés. Ce choix est volontaire : nous souhaitons rester fidèles à l’esprit du leaderboard et encourager les développeurs (vous !) à soumettre leurs propres modèles."
|
76 |
+
},
|
77 |
+
P3: {
|
78 |
+
"en": "Once we reach a sufficient number of submissions, we will publish the first official ranking. Please bear with us—since evaluations are conducted using public computing resources (thanks to the incredible work of GENCI on the Jean Zay supercomputer), model evaluations might take some time.",
|
79 |
+
"fr": "Une fois qu’un nombre suffisant de modèles aura été soumis, nous publierons le premier classement officiel. Merci pour votre patience : les évaluations sont réalisées sur des ressources de calcul publiques (grâce au travail remarquable du GENCI sur le supercalculateur Jean Zay), ce qui peut nécessiter un certain délai pour traiter les soumissions."
|
80 |
+
},
|
81 |
+
P4: {
|
82 |
+
"en": "Finally, it is important to note that this is an OpenLLM leaderboard—we will only evaluate open-source models.",
|
83 |
+
"fr": "Enfin, il est important de préciser que ce leaderboard est un OpenLLM leaderboard : seuls les modèles open source seront évalués."
|
84 |
+
},
|
85 |
+
},
|
86 |
+
ACTEURS: {
|
87 |
+
TITRE: {
|
88 |
+
"en": "Stakeholders and contribution",
|
89 |
+
"fr": "Les acteurs du projet"
|
90 |
+
},
|
91 |
+
P1: {
|
92 |
+
"en": "This leaderboard is the result of a collaborative effort between several key organizations, each playing a crucial role in its development and execution:",
|
93 |
+
"fr": "Ce leaderboard est le fruit d’une mobilisation collective impliquant plusieurs partenaires clés :"
|
94 |
+
},
|
95 |
+
I1: {
|
96 |
+
"en": "Coordination Nationale pour l’IA (CNIA): As the entity leading France’s national AI strategy, the national coordination for AI structured the leaderboard project, establishing it as a key deliverable within the Trustworthy AI pillar of the national strategy. It coordinated the various partners and contributed to the selection of strategic benchmarks, including the integration of Baccalauréat exam data, creating a unique benchmark for French-language AI models.",
|
97 |
+
"fr": "Coordination Nationale pour l’IA (CNIA) : au pilotage de la stratégie nationale pour l’IA, la CNIA a structuré le projet du leaderboard, en l’inscrivant comme un livrable clé de l’axe IA de confiance de la stratégie française. Elle a coordonné les partenaires et contribué à l’identification des benchmarks stratégiques, dont l’intégration des données du Baccalauréat pour un benchmark inédit en français."
|
98 |
+
},
|
99 |
+
I2: {
|
100 |
+
"en": "Inria: Led the operational management of the project, including mobilizing a specialized translation provider to ensure high-quality linguistic adaptation. INRIA engineers also worked on data extraction from Baccalauréat exams and contributed to the backend/frontend development of the leaderboard.",
|
101 |
+
"fr": "Inria : pilotage opérationnel du projet, avec le recours à un prestataire de traduction spécialisé pour garantir une adaptation linguistique optimale. Des ingénieurs ont également été mobilisés pour l’extraction des données du Baccalauréat, ainsi que pour le développement et la consolidation du back-end/front-end de la plateforme."
|
102 |
+
},
|
103 |
+
I3: {
|
104 |
+
"en": "GENCI: Conducted test evaluations on the French National Jean Zay supercomputer, ensuring the robustness of the results. So far, evaluations have been performed on a dozen models of various sizes, a crucial element for ensuring the leaderboard's reliability. This includes models such as Mistral Large, Llama 70B, as well as smaller models, including trending models like Qwen.",
|
105 |
+
"fr": "GENCI : réalisation des évaluations tests sur le supercalculateur national Jean Zay, garantissant la robustesse des résultats. Nous avons d’ores et déjà évalué une dizaine de modèles de tailles variées, un élément clé pour assurer la fiabilité du leaderboard. Cela inclut des modèles comme Mistral Large, Llama 70B, ainsi que des modèles plus légers, notamment des modèles en forte croissance comme Qwen."
|
106 |
+
},
|
107 |
+
I4: {
|
108 |
+
"en": "LNE (Laboratoire National de Métrologie et d’Essais): Conducted data verification and extraction, essential for building the final benchmarks.",
|
109 |
+
"fr": "LNE (Laboratoire National de Métrologie et d’Essais) : travail de vérification et d’extraction des données pertinentes, essentiel pour la création des benchmarks finaux."
|
110 |
+
},
|
111 |
+
I5: {
|
112 |
+
"en": "Ministère de l’Éducation nationale: Provided access to Baccalauréat data, enabling the creation of an unprecedented dataset that serves as a valuable benchmark",
|
113 |
+
"fr": "Ministère de l’Éducation nationale : mise à disposition des données du Baccalauréat, ayant permis de construire un jeu de données inédit, qui constitue un benchmark de référence."
|
114 |
+
},
|
115 |
+
I6: {
|
116 |
+
"en": "And of course Hugging Face: Hosting the evaluation platform and provided technical expertise all along the way.",
|
117 |
+
"fr": "Et bien sûr Hugging Face : hébergement de la plateforme d’évaluation et expertise technique tout au long du projet."
|
118 |
+
},
|
119 |
+
},
|
120 |
+
}
|
121 |
+
|
122 |
+
const AboutPage = () => {
|
123 |
+
|
124 |
+
const {resolveLocalizedString} = useResolveLocalizedString();
|
125 |
+
|
126 |
+
return (
|
127 |
+
<Box sx={{ width: "100%", maxWidth: 1200, margin: "0 auto", padding: 4 }}>
|
128 |
+
<Box
|
129 |
+
sx={{
|
130 |
+
width: "100%",
|
131 |
+
ph: 2,
|
132 |
+
display: "flex",
|
133 |
+
flexDirection: "column",
|
134 |
+
}}
|
135 |
+
>
|
136 |
+
|
137 |
+
<PageHeader
|
138 |
+
title={resolveLocalizedString(TEXT.TITLE)}
|
139 |
+
subtitle=""
|
140 |
+
/>
|
141 |
+
|
142 |
+
<Paper
|
143 |
+
elevation={0}
|
144 |
+
sx={{
|
145 |
+
p: 3,
|
146 |
+
border: "1px solid",
|
147 |
+
borderColor: "grey.200",
|
148 |
+
backgroundColor: "transparent",
|
149 |
+
borderRadius: 2,
|
150 |
+
mb: 6
|
151 |
+
}}
|
152 |
+
>
|
153 |
+
<Box sx={{mb: 2}}>
|
154 |
+
<Typography variant="body1">
|
155 |
+
{resolveLocalizedString(TEXT.PARAGRAPH1)}
|
156 |
+
</Typography>
|
157 |
+
<br/>
|
158 |
+
<Typography variant="body1">
|
159 |
+
{resolveLocalizedString(TEXT.PARAGRAPH2)}
|
160 |
+
</Typography>
|
161 |
+
<br/>
|
162 |
+
<Typography variant="body1">
|
163 |
+
{resolveLocalizedString(TEXT.PARAGRAPH3)}
|
164 |
+
</Typography>
|
165 |
+
</Box>
|
166 |
+
|
167 |
+
</Paper>
|
168 |
+
|
169 |
+
<Paper
|
170 |
+
elevation={1}
|
171 |
+
sx={{
|
172 |
+
p: 3,
|
173 |
+
border: "1px solid",
|
174 |
+
borderColor: "grey.200",
|
175 |
+
backgroundColor: "transparent",
|
176 |
+
borderRadius: 2,
|
177 |
+
mb: 6
|
178 |
+
}}
|
179 |
+
>
|
180 |
+
<Box sx={{mb: 2}}>
|
181 |
+
<Typography variant="h6">
|
182 |
+
{resolveLocalizedString(TEXT.BUTS.TITRE)}
|
183 |
+
</Typography>
|
184 |
+
<Typography variant="body1">
|
185 |
+
<List>
|
186 |
+
<ListItem>
|
187 |
+
<ListItemIcon>
|
188 |
+
<NavigateNextIcon/>
|
189 |
+
</ListItemIcon>
|
190 |
+
{resolveLocalizedString(TEXT.BUTS.BUT1)}
|
191 |
+
</ListItem>
|
192 |
+
<ListItem>
|
193 |
+
<ListItemIcon>
|
194 |
+
<NavigateNextIcon/>
|
195 |
+
</ListItemIcon>
|
196 |
+
{resolveLocalizedString(TEXT.BUTS.BUT2)}
|
197 |
+
</ListItem>
|
198 |
+
<ListItem>
|
199 |
+
<ListItemIcon>
|
200 |
+
<NavigateNextIcon/>
|
201 |
+
</ListItemIcon>
|
202 |
+
{resolveLocalizedString(TEXT.BUTS.BUT3)}
|
203 |
+
</ListItem>
|
204 |
+
</List>
|
205 |
+
|
206 |
+
</Typography>
|
207 |
+
</Box>
|
208 |
+
|
209 |
+
</Paper>
|
210 |
+
|
211 |
+
<Paper
|
212 |
+
elevation={0}
|
213 |
+
sx={{
|
214 |
+
p: 3,
|
215 |
+
border: "1px solid",
|
216 |
+
borderColor: "grey.200",
|
217 |
+
backgroundColor: "transparent",
|
218 |
+
borderRadius: 2,
|
219 |
+
mb: 6
|
220 |
+
}}
|
221 |
+
>
|
222 |
+
<Box sx={{mb: 2}}>
|
223 |
+
<Typography variant="h6">
|
224 |
+
{resolveLocalizedString(TEXT.DATASETS.TITRE)}
|
225 |
+
</Typography>
|
226 |
+
<Typography variant="body1">
|
227 |
+
<List>
|
228 |
+
<ListItem>
|
229 |
+
<ListItemIcon>
|
230 |
+
<NavigateNextIcon/>
|
231 |
+
</ListItemIcon>
|
232 |
+
{resolveLocalizedString(TEXT.DATASETS.DATASET1)}
|
233 |
+
</ListItem>
|
234 |
+
<ListItem>
|
235 |
+
<ListItemIcon>
|
236 |
+
<NavigateNextIcon/>
|
237 |
+
</ListItemIcon>
|
238 |
+
{resolveLocalizedString(TEXT.DATASETS.DATASET2)}
|
239 |
+
</ListItem>
|
240 |
+
<ListItem>
|
241 |
+
<ListItemIcon>
|
242 |
+
<NavigateNextIcon/>
|
243 |
+
</ListItemIcon>
|
244 |
+
{resolveLocalizedString(TEXT.DATASETS.DATASET3)}
|
245 |
+
</ListItem>
|
246 |
+
</List>
|
247 |
+
</Typography>
|
248 |
+
<br/>
|
249 |
+
<Typography variant="body1">
|
250 |
+
{resolveLocalizedString(TEXT.DATASETS.FOOTER)}
|
251 |
+
</Typography>
|
252 |
+
</Box>
|
253 |
+
|
254 |
+
</Paper>
|
255 |
+
|
256 |
+
<Paper
|
257 |
+
elevation={1}
|
258 |
+
sx={{
|
259 |
+
p: 3,
|
260 |
+
border: "1px solid",
|
261 |
+
borderColor: "grey.200",
|
262 |
+
backgroundColor: "transparent",
|
263 |
+
borderRadius: 2,
|
264 |
+
mb: 6
|
265 |
+
}}
|
266 |
+
>
|
267 |
+
<Box sx={{mb: 2}}>
|
268 |
+
<Typography variant="h6">
|
269 |
+
{resolveLocalizedString(TEXT.APPROCHE.TITRE)}
|
270 |
+
</Typography>
|
271 |
+
<br/>
|
272 |
+
<Typography variant="body1">
|
273 |
+
{resolveLocalizedString(TEXT.APPROCHE.P1)}
|
274 |
+
</Typography>
|
275 |
+
<br/>
|
276 |
+
<Typography variant="body1">
|
277 |
+
{resolveLocalizedString(TEXT.APPROCHE.P2)}
|
278 |
+
</Typography>
|
279 |
+
<br/>
|
280 |
+
<Typography variant="body1">
|
281 |
+
{resolveLocalizedString(TEXT.APPROCHE.P3)}
|
282 |
+
</Typography>
|
283 |
+
<br/>
|
284 |
+
<Typography variant="body1">
|
285 |
+
{resolveLocalizedString(TEXT.APPROCHE.P4)}
|
286 |
+
</Typography>
|
287 |
+
</Box>
|
288 |
+
|
289 |
+
</Paper>
|
290 |
+
|
291 |
+
<Paper
|
292 |
+
elevation={0}
|
293 |
+
sx={{
|
294 |
+
p: 3,
|
295 |
+
border: "1px solid",
|
296 |
+
borderColor: "grey.200",
|
297 |
+
backgroundColor: "transparent",
|
298 |
+
borderRadius: 2,
|
299 |
+
mb: 6
|
300 |
+
}}
|
301 |
+
>
|
302 |
+
<Box sx={{mb: 2}}>
|
303 |
+
<Typography variant="h6">
|
304 |
+
{resolveLocalizedString(TEXT.ACTEURS.TITRE)}
|
305 |
+
</Typography>
|
306 |
+
<br/>
|
307 |
+
<Typography variant="body1">
|
308 |
+
{resolveLocalizedString(TEXT.ACTEURS.P1)}
|
309 |
+
</Typography>
|
310 |
+
<br/>
|
311 |
+
<Typography variant="body1">
|
312 |
+
<List>
|
313 |
+
<ListItem>
|
314 |
+
<ListItemIcon>
|
315 |
+
<NavigateNextIcon/>
|
316 |
+
</ListItemIcon>
|
317 |
+
{resolveLocalizedString(TEXT.ACTEURS.I1)}
|
318 |
+
</ListItem>
|
319 |
+
<ListItem>
|
320 |
+
<ListItemIcon>
|
321 |
+
<NavigateNextIcon/>
|
322 |
+
</ListItemIcon>
|
323 |
+
{resolveLocalizedString(TEXT.ACTEURS.I2)}
|
324 |
+
</ListItem>
|
325 |
+
<ListItem>
|
326 |
+
<ListItemIcon>
|
327 |
+
<NavigateNextIcon/>
|
328 |
+
</ListItemIcon>
|
329 |
+
{resolveLocalizedString(TEXT.ACTEURS.I3)}
|
330 |
+
</ListItem>
|
331 |
+
<ListItem>
|
332 |
+
<ListItemIcon>
|
333 |
+
<NavigateNextIcon/>
|
334 |
+
</ListItemIcon>
|
335 |
+
{resolveLocalizedString(TEXT.ACTEURS.I4)}
|
336 |
+
</ListItem>
|
337 |
+
<ListItem>
|
338 |
+
<ListItemIcon>
|
339 |
+
<NavigateNextIcon/>
|
340 |
+
</ListItemIcon>
|
341 |
+
{resolveLocalizedString(TEXT.ACTEURS.I5)}
|
342 |
+
</ListItem>
|
343 |
+
<ListItem>
|
344 |
+
<ListItemIcon>
|
345 |
+
<NavigateNextIcon/>
|
346 |
+
</ListItemIcon>
|
347 |
+
{resolveLocalizedString(TEXT.ACTEURS.I6)}
|
348 |
+
</ListItem>
|
349 |
+
</List>
|
350 |
+
|
351 |
+
</Typography>
|
352 |
+
</Box>
|
353 |
+
|
354 |
+
</Paper>
|
355 |
+
|
356 |
+
|
357 |
+
</Box>
|
358 |
+
</Box>
|
359 |
+
|
360 |
+
);
|
361 |
+
};
|
362 |
+
|
363 |
+
export default AboutPage;
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/{defaults.js → defaults.tsx}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
import { MODEL_TYPE_ORDER } from "./modelTypes";
|
|
|
2 |
|
3 |
// Time constants (in milliseconds)
|
4 |
const TIME = {
|
@@ -96,6 +97,21 @@ const COLUMN_SIZES = {
|
|
96 |
CHAT_TEMPLATE: 140,
|
97 |
};
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
// Column definitions with organized structure
|
100 |
const COLUMNS = {
|
101 |
FIXED: {
|
@@ -103,7 +119,7 @@ const COLUMNS = {
|
|
103 |
group: "fixed",
|
104 |
size: COLUMN_SIZES.RANK,
|
105 |
defaultVisible: true,
|
106 |
-
label:
|
107 |
},
|
108 |
"model.type_icon": {
|
109 |
group: "fixed",
|
@@ -115,13 +131,13 @@ const COLUMNS = {
|
|
115 |
group: "fixed",
|
116 |
size: COLUMN_SIZES.MODEL,
|
117 |
defaultVisible: true,
|
118 |
-
label:
|
119 |
},
|
120 |
"model.average_score": {
|
121 |
group: "fixed",
|
122 |
size: COLUMN_SIZES.AVERAGE_SCORE,
|
123 |
defaultVisible: true,
|
124 |
-
label:
|
125 |
},
|
126 |
},
|
127 |
EVALUATION: {
|
|
|
1 |
import { MODEL_TYPE_ORDER } from "./modelTypes";
|
2 |
+
import { LocalizedString, resolveLocalizedString } from "i18n";
|
3 |
|
4 |
// Time constants (in milliseconds)
|
5 |
const TIME = {
|
|
|
97 |
CHAT_TEMPLATE: 140,
|
98 |
};
|
99 |
|
100 |
+
const RANK : LocalizedString = {
|
101 |
+
"en": "Rank",
|
102 |
+
"fr": "Rang"
|
103 |
+
}
|
104 |
+
|
105 |
+
const MODEL : LocalizedString = {
|
106 |
+
"en": "Model",
|
107 |
+
"fr": "Modèle"
|
108 |
+
}
|
109 |
+
|
110 |
+
const SCORE : LocalizedString = {
|
111 |
+
"en": "Average Score",
|
112 |
+
"fr": "Score moyen"
|
113 |
+
}
|
114 |
+
|
115 |
// Column definitions with organized structure
|
116 |
const COLUMNS = {
|
117 |
FIXED: {
|
|
|
119 |
group: "fixed",
|
120 |
size: COLUMN_SIZES.RANK,
|
121 |
defaultVisible: true,
|
122 |
+
label: RANK,
|
123 |
},
|
124 |
"model.type_icon": {
|
125 |
group: "fixed",
|
|
|
131 |
group: "fixed",
|
132 |
size: COLUMN_SIZES.MODEL,
|
133 |
defaultVisible: true,
|
134 |
+
label: MODEL,
|
135 |
},
|
136 |
"model.average_score": {
|
137 |
group: "fixed",
|
138 |
size: COLUMN_SIZES.AVERAGE_SCORE,
|
139 |
defaultVisible: true,
|
140 |
+
label: SCORE,
|
141 |
},
|
142 |
},
|
143 |
EVALUATION: {
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/utils/columnUtils.jsx
CHANGED
@@ -18,6 +18,7 @@ import {
|
|
18 |
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
|
19 |
import { alpha } from "@mui/material/styles";
|
20 |
import InfoIconWithTooltip from "../../../../../components/shared/InfoIconWithTooltip";
|
|
|
21 |
|
22 |
const DatabaseIcon = () => (
|
23 |
<svg
|
@@ -279,45 +280,48 @@ const getDetailsUrl = (modelName) => {
|
|
279 |
return `https://huggingface.co/datasets/open-llm-leaderboard/${formattedName}-details`;
|
280 |
};
|
281 |
|
282 |
-
const HeaderLabel = ({ label, tooltip, className, isSorted }) =>
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
|
|
|
|
|
|
321 |
|
322 |
const InfoIcon = ({ tooltip }) => (
|
323 |
<Box
|
|
|
18 |
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
|
19 |
import { alpha } from "@mui/material/styles";
|
20 |
import InfoIconWithTooltip from "../../../../../components/shared/InfoIconWithTooltip";
|
21 |
+
import { useResolveLocalizedString } from "i18n";
|
22 |
|
23 |
const DatabaseIcon = () => (
|
24 |
<svg
|
|
|
280 |
return `https://huggingface.co/datasets/open-llm-leaderboard/${formattedName}-details`;
|
281 |
};
|
282 |
|
283 |
+
const HeaderLabel = ({ label, tooltip, className, isSorted }) => {
|
284 |
+
|
285 |
+
const { resolveLocalisedString } = useResolveLocalizedString();
|
286 |
+
|
287 |
+
return (<Tooltip
|
288 |
+
title={label}
|
289 |
+
arrow
|
290 |
+
placement="top"
|
291 |
+
enterDelay={1000}
|
292 |
+
componentsProps={getTooltipStyle}
|
293 |
+
>
|
294 |
+
<Typography
|
295 |
+
className={className}
|
296 |
+
sx={{
|
297 |
+
fontWeight: 600,
|
298 |
+
color: isSorted ? "primary.main" : "grey.700",
|
299 |
+
flex: 1,
|
300 |
+
transition: "max-width 0.2s ease",
|
301 |
+
maxWidth: "100%",
|
302 |
+
...(label === "Rank" || label === "Type"
|
303 |
+
? {
|
304 |
+
overflow: "visible",
|
305 |
+
whiteSpace: "normal",
|
306 |
+
textOverflow: "clip",
|
307 |
+
textAlign: "center",
|
308 |
+
}
|
309 |
+
: {
|
310 |
+
overflow: "hidden",
|
311 |
+
textOverflow: "ellipsis",
|
312 |
+
whiteSpace: "nowrap",
|
313 |
+
}),
|
314 |
+
"@media (hover: hover)": {
|
315 |
+
".MuiTableCell-root:hover &": {
|
316 |
+
maxWidth: tooltip ? "calc(100% - 48px)" : "100%",
|
317 |
+
},
|
318 |
+
},
|
319 |
+
}}
|
320 |
+
>
|
321 |
+
{label}
|
322 |
+
</Typography>
|
323 |
+
</Tooltip>);
|
324 |
+
};
|
325 |
|
326 |
const InfoIcon = ({ tooltip }) => (
|
327 |
<Box
|
frontend/tsconfig.app.json
CHANGED
@@ -19,6 +19,7 @@
|
|
19 |
|
20 |
/* Linting */
|
21 |
"strict": true,
|
|
|
22 |
"noUnusedLocals": true,
|
23 |
"noUnusedParameters": true,
|
24 |
"noFallthroughCasesInSwitch": true,
|
|
|
19 |
|
20 |
/* Linting */
|
21 |
"strict": true,
|
22 |
+
"noImplicitAny": false,
|
23 |
"noUnusedLocals": true,
|
24 |
"noUnusedParameters": true,
|
25 |
"noFallthroughCasesInSwitch": true,
|