Skip to content

Commit 85a7929

Browse files
committed
fix(stats): map lab aliases
1 parent 5c9e4ff commit 85a7929

2 files changed

Lines changed: 29 additions & 6 deletions

File tree

packages/stats/app/src/routes/model-catalog.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,17 @@ export const getModelCatalog = query(async () => {
6363
}, "getModelCatalog")
6464

6565
export function findModelCatalogEntry(catalog: ModelCatalog, model: string, lab?: string) {
66-
const normalizedId = lab ? `${catalogSlug(lab)}/${catalogSlug(model)}` : model.trim().toLowerCase()
66+
const normalizedId = lab ? `${catalogLabSlug(lab)}/${catalogSlug(model)}` : model.trim().toLowerCase()
6767
const leaf = catalogSlug(model)
6868
return (
6969
catalog.models.find((entry) => entry.id.toLowerCase() === normalizedId) ??
70-
catalog.models.find((entry) => (lab ? entry.lab === catalogSlug(lab) : true) && entry.slug === leaf) ??
70+
catalog.models.find((entry) => (lab ? entry.lab === catalogLabSlug(lab) : true) && entry.slug === leaf) ??
7171
catalog.models.find((entry) => entry.slug === leaf)
7272
)
7373
}
7474

7575
export function findModelCatalogLab(catalog: ModelCatalog, lab: string) {
76-
const id = catalogSlug(lab)
76+
const id = catalogLabSlug(lab)
7777
return catalog.labs.find((entry) => entry.id === id)
7878
}
7979

@@ -95,6 +95,8 @@ export function formatCatalogLabName(lab: string) {
9595
xai: "xAI",
9696
xiaomi: "Xiaomi",
9797
zai: "Z.ai",
98+
qwen: "Qwen",
99+
zhipu: "Zhipu",
98100
zhipuai: "Zhipu",
99101
}
100102
return known[catalogSlug(lab)] ?? lab.replace(/[-_]/g, " ").replace(/\b\w/g, (letter) => letter.toUpperCase())
@@ -273,6 +275,17 @@ function catalogIdKey(value: string) {
273275
return value.split("/").map(catalogSlug).join("/")
274276
}
275277

278+
function catalogLabSlug(value: string) {
279+
const slug = catalogSlug(value)
280+
const aliases: Record<string, string> = {
281+
moonshot: "moonshotai",
282+
qwen: "alibaba",
283+
zhipu: "zhipuai",
284+
zai: "zhipuai",
285+
}
286+
return aliases[slug] ?? slug
287+
}
288+
276289
function isRecord(value: unknown): value is Record<string, unknown> {
277290
return typeof value === "object" && value !== null && !Array.isArray(value)
278291
}

packages/stats/core/src/domain/home.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -823,15 +823,14 @@ function resolveModelProvider(model: string, rows: StatMetricRow[], providerPara
823823
}
824824

825825
function providerMatches(provider: string, providerParam: string) {
826-
return modelSlug(provider) === modelSlug(providerParam)
826+
return providerSlug(provider) === providerSlug(providerParam)
827827
}
828828

829829
function resolveProviderName(providerParam: string, rows: StatMetricRow[]) {
830830
const input = providerParam.trim()
831831
if (!input) return undefined
832-
const inputSlug = modelSlug(input)
833832
return aggregateByModel(rows)
834-
.filter((item) => modelSlug(item.provider) === inputSlug)
833+
.filter((item) => providerMatches(item.provider, input))
835834
.toSorted((a, b) => b.totalTokens - a.totalTokens || a.provider.localeCompare(b.provider))[0]?.provider
836835
}
837836

@@ -848,6 +847,17 @@ function modelKey(provider: string, model: string) {
848847
return `${provider}\u0000${model}`
849848
}
850849

850+
function providerSlug(value: string) {
851+
const slug = modelSlug(value)
852+
const aliases: Record<string, string> = {
853+
alibaba: "qwen",
854+
moonshotai: "moonshot",
855+
qwen: "qwen",
856+
zhipuai: "zhipu",
857+
}
858+
return aliases[slug] ?? slug
859+
}
860+
851861
function costPerMillion(costMicrocents: number, tokens: number) {
852862
if (tokens <= 0 || costMicrocents <= 0) return 0
853863
return round((microcentsToDollars(costMicrocents) / tokens) * TOKEN_SCALE, 2)

0 commit comments

Comments
 (0)