Skip to content

Commit e5fe3ef

Browse files
authored
feat: minor frontend metrics/slack-help/model-logos
* add frontend changes for logo/tweaks/help * added metrics badge
1 parent 9758cae commit e5fe3ef

7 files changed

Lines changed: 117 additions & 10 deletions

File tree

frontend/src/components/Footer.astro

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ import BackToTop from "@components/BackToTop.astro";
1818
</div>
1919

2020
<div class="flex items-center gap-3">
21+
<a
22+
href="https://swissai-initiative.slack.com/archives/C07DHJFRE2X"
23+
target="_blank"
24+
rel="noopener noreferrer"
25+
class="inline-flex items-center gap-1.5 text-sm font-medium px-3 py-1.5 rounded-lg bg-indigo-50 text-indigo-600 hover:bg-indigo-100 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50 transition-colors"
26+
>
27+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
28+
<path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.527 2.527 0 0 1 2.52-2.52h6.315A2.528 2.528 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>
29+
</svg>
30+
Get Help
31+
</a>
32+
<span class="text-slate-300 dark:text-slate-600">|</span>
2133
<button
2234
id="light-theme-button"
2335
aria-label="Light theme"

frontend/src/components/Header.astro

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,17 @@ import { SITE } from "@consts";
6262
>
6363
Research
6464
</Link>
65+
<a
66+
href="https://swissai-initiative.slack.com/archives/C07DHJFRE2X"
67+
target="_blank"
68+
rel="noopener noreferrer"
69+
class="inline-flex items-center gap-1.5 text-sm font-medium px-3 py-1.5 rounded-lg bg-indigo-50 text-indigo-600 hover:bg-indigo-100 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50 transition-colors"
70+
>
71+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
72+
<path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.527 2.527 0 0 1 2.52-2.52h6.315A2.528 2.528 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>
73+
</svg>
74+
Get Help
75+
</a>
6576
</nav>
6677

6778
<!-- Mobile Menu Button -->
@@ -133,6 +144,17 @@ import { SITE } from "@consts";
133144
>
134145
Research
135146
</Link>
147+
<a
148+
href="https://swissai-initiative.slack.com/archives/C07DHJFRE2X"
149+
target="_blank"
150+
rel="noopener noreferrer"
151+
class="inline-flex items-center gap-1.5 text-sm font-medium px-3 py-1.5 rounded-lg bg-indigo-50 text-indigo-600 hover:bg-indigo-100 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50 transition-colors w-fit"
152+
>
153+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
154+
<path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.527 2.527 0 0 1 2.52-2.52h6.315A2.528 2.528 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>
155+
</svg>
156+
Get Help
157+
</a>
136158
</nav>
137159
</Container>
138160
</header>

frontend/src/components/ui/ModelCard.svelte

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script lang="ts">
22
import { getModelLogo } from '../../lib/modelLogos';
3+
import { getModelMetricsUrl } from '../../lib/modelMetrics';
34
45
interface ModelCardProps {
56
entry: {
@@ -17,6 +18,7 @@
1718
1819
// Get the logo URL for this model
1920
const logoUrl = getModelLogo(entry.data.title);
21+
const metricsUrl = getModelMetricsUrl(entry.data.title);
2022
2123
let copied = false;
2224
@@ -68,6 +70,18 @@ class="relative group flex flex-nowrap py-3 px-4 pr-10 rounded-lg border border-
6870
</svg>
6971
{/if}
7072
</button>
73+
{#if metricsUrl}
74+
<a
75+
href={metricsUrl}
76+
target="_blank"
77+
rel="noopener noreferrer"
78+
on:click|stopPropagation
79+
class="metrics-badge"
80+
title="View metrics dashboard"
81+
>
82+
Metrics
83+
</a>
84+
{/if}
7185
{#if entry.data.instanceCount > 1}
7286
<span class="instance-count" title="Number of launched instances for higher throughput">
7387
x{entry.data.instanceCount}
@@ -104,6 +118,21 @@ class="relative group flex flex-nowrap py-3 px-4 pr-10 rounded-lg border border-
104118
border-radius: 4px;
105119
}
106120
121+
.metrics-badge {
122+
background-color: #16a34a;
123+
color: white;
124+
font-weight: bold;
125+
font-size: 0.75em;
126+
padding: 0 6px;
127+
border-radius: 4px;
128+
text-decoration: none;
129+
flex-shrink: 0;
130+
}
131+
132+
.metrics-badge:hover {
133+
background-color: #15803d;
134+
}
135+
107136
@keyframes check-bounce {
108137
0% {
109138
transform: scale(1);

frontend/src/components/ui/ModelList.svelte

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import { getApiUrl } from "../../lib/config";
55
66
let models = [];
7+
let modelCount = 0;
78
let loading = true;
89
let error = null;
910
onMount(async () => {
@@ -27,6 +28,7 @@
2728
existing.count++;
2829
}
2930
31+
modelCount = modelsMap.size;
3032
models = Array.from(modelsMap.values()).map(groupedModel => ({
3133
data: {
3234
title: groupedModel.id,
@@ -46,6 +48,17 @@
4648
</script>
4749

4850
<div>
51+
<div class="text-center mb-8">
52+
<h2 class="text-3xl font-bold text-slate-900 dark:text-white mb-4">
53+
Available Models
54+
{#if !loading && !error}
55+
<span style="display:inline-flex;align-items:center;justify-content:center;font-size:0.65em;font-weight:bold;line-height:1;padding:0.15em 0.5em;border-radius:4px;background-color:#6366f1;color:#fff;vertical-align:middle;margin-left:0.3em">{modelCount}</span>
56+
{/if}
57+
</h2>
58+
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto">
59+
Access state-of-the-art language models from leading AI research organizations
60+
</p>
61+
</div>
4962
{#if loading}
5063
<div class="loading">Loading...</div>
5164
{:else if error}

frontend/src/lib/modelLogos.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ const orgLogos: Record<string, string | null> = {
3939
'hf': 'https://huggingface.co/front/assets/huggingface_logo-noborder.svg',
4040
'openai': 'https://cdn-avatars.huggingface.co/v1/production/uploads/68783facef79a05727260de3/UPX5RQxiPGA-ZbBmArIKq.png',
4141
'Snowflake': 'https://cdn-avatars.huggingface.co/v1/production/uploads/64dc52cf858f8a41c12fc819/O9-MWzRjWzbNP_DQlMb-7.png',
42-
'zai-org': 'https://cdn-avatars.huggingface.co/v1/production/uploads/62dc173789b4cf157d36ebee/i_pxzM2ZDo3Ub-BEgIkE9.png'
42+
'zai-org': 'https://cdn-avatars.huggingface.co/v1/production/uploads/62dc173789b4cf157d36ebee/i_pxzM2ZDo3Ub-BEgIkE9.png',
43+
'moonshotai': "https://cdn-avatars.huggingface.co/v1/production/uploads/641c1e77c3983aa9490f8121/X1yT2rsaIbR9cdYGEVu0X.jpeg",
44+
"BAAI": "https://cdn-avatars.huggingface.co/v1/production/uploads/1664511063789-632c234f42c386ebd2710434.png",
45+
"MiniMaxAI": "https://cdn-avatars.huggingface.co/v1/production/uploads/676e38ad04af5bec20bc9faf/dUd-LsZEX0H_d4qefO_g6.jpeg",
46+
"codellama": "https://cdn-avatars.huggingface.co/v1/production/uploads/5ff5d596f244529b3ec0fb89/d3KMtMG5-XAS2uhbp82Qz.png",
47+
"arcee-ai": "https://cdn-avatars.huggingface.co/v1/production/uploads/6435718aaaef013d1aec3b8b/GZPnGkfMn8Ino6JbkL4fJ.png",
48+
"cais": "https://cdn-avatars.huggingface.co/v1/production/uploads/5fbfd09ee366524fe8e97cd3/rQf-w-qSxQgwmXAA3YBfe.jpeg"
4349
};
4450

4551
// Specific model mappings for arena data and custom models

frontend/src/lib/modelMetrics.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const SGLANG_BASE = "https://metrics.swissai.svc.cscs.ch/d/sglang-monitoring/sglang-monitoring?orgId=1&from=now-15m&to=now&timezone=browser&refresh=5s&var-model=";
2+
const VLLM_BASE = "https://metrics.swissai.svc.cscs.ch/d/vllm-master-v2/vllm-monitoring-v2?orgId=1&from=now-15m&to=now&timezone=browser&refresh=5s&var-model_name=";
3+
4+
type Engine = "sglang" | "vllm";
5+
6+
const modelEngines: Record<string, Engine> = {
7+
"swiss-ai/Apertus-8B-Instruct-2509": "sglang",
8+
"zai-org/GLM-4.7-Flash": "sglang",
9+
"Snowflake/snowflake-arctic-embed-l-v2.0": "vllm",
10+
"cais/HarmBench-Llama-2-13b-cls": "vllm",
11+
"meta-llama/Llama-3.3-70B-Instruct": "vllm",
12+
"meta-llama/Llama-Guard-4-12B": "vllm",
13+
"swiss-ai/Apertus-70B-Instruct-2509": "vllm",
14+
};
15+
16+
/**
17+
* Get the metrics dashboard URL for a model, or null if none exists
18+
*/
19+
export function getModelMetricsUrl(modelName: string): string | null {
20+
const engine = modelEngines[modelName];
21+
if (!engine) return null;
22+
23+
const encoded = encodeURIComponent(modelName);
24+
return engine === "sglang"
25+
? `${SGLANG_BASE}${encoded}`
26+
: `${VLLM_BASE}${encoded}`;
27+
}

frontend/src/pages/index.astro

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,21 +159,19 @@ const sponsors = [
159159
</svg>
160160
Swiss AI Chat
161161
</a>
162+
<a href="https://swissai-initiative.slack.com/archives/C07DHJFRE2X" target="_blank" rel="noopener noreferrer"
163+
class="group flex items-center justify-center gap-3 bg-white hover:bg-slate-50 dark:bg-slate-800 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 font-semibold py-4 px-8 rounded-xl shadow-lg hover:shadow-xl border border-slate-200 dark:border-slate-700 transition-all duration-300 transform hover:-translate-y-1">
164+
<svg class="w-6 h-6 group-hover:scale-110 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
165+
<path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.527 2.527 0 0 1 2.52-2.52h6.315A2.528 2.528 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>
166+
</svg>
167+
Get Help
168+
</a>
162169
</div>
163170
</div>
164171
</section>
165172

166173
<!-- Available Models Section -->
167174
<section class="animate space-y-8">
168-
<div class="text-center">
169-
<h2 class="text-3xl font-bold text-slate-900 dark:text-white mb-4">
170-
Available Models
171-
</h2>
172-
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto mb-8">
173-
Access state-of-the-art language models from leading AI research organizations
174-
</p>
175-
</div>
176-
177175
<div class="card p-8">
178176
<ModelList client:load />
179177
</div>

0 commit comments

Comments
 (0)