general-eval-card / lib /metric-labels.ts
evijit's picture
evijit HF Staff
Embeds: histogram route, leaderboard slices + sort, brand mark; cross-source row dedup
7a54021
Raw
History Blame
1.11 kB
/**
* Shared helpers for turning a leaderboard metric record into a short,
* human-readable label. The upstream pipeline frequently leaves
* display_name blank (e.g. inspect_evals/avg_full_score) or sets every
* metric's display_name to a generic "Score", so naive label resolution
* collapses distinct metrics into duplicate chips. These helpers walk
* the fallback chain (display_name β†’ metric_name β†’ metric_id β†’
* column_key tail) and humanise underscores.
*/
function compactizePath(value: string): string {
const parts = value
.split("/")
.map((part) => part.trim())
.filter(Boolean)
return parts[parts.length - 1] ?? value
}
export function getMetricChipLabel(metric: {
display_name?: string | null
metric_name?: string | null
metric_id?: string | null
column_key?: string | null
}): string {
const candidates = [
metric.display_name,
metric.metric_name,
metric.metric_id,
metric.column_key,
]
for (const c of candidates) {
if (c && String(c).trim()) {
return compactizePath(String(c)).replace(/_/g, " ")
}
}
return "Metric"
}