Spaces:
Sleeping
Sleeping
File size: 1,441 Bytes
ebd68ab | 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 | function modelType(model) {
return model?.kind || model?.type || "llm";
}
export function getProviderCustomModelRows({
customModels = [],
modelAliases = {},
providerAlias,
builtInModels = [],
type = "llm",
includeLegacyAliases = true,
}) {
const builtInIds = new Set(builtInModels.map((model) => model.id));
const seenFullModels = new Set();
const rows = [];
for (const model of customModels) {
if (!model?.id || model.providerAlias !== providerAlias) continue;
const rowType = modelType(model);
if (type && rowType !== type) continue;
if (builtInIds.has(model.id)) continue;
const fullModel = `${providerAlias}/${model.id}`;
if (seenFullModels.has(fullModel)) continue;
seenFullModels.add(fullModel);
rows.push({
id: model.id,
name: model.name || model.id,
fullModel,
source: "custom",
type: rowType,
});
}
if (!includeLegacyAliases) return rows;
const prefix = `${providerAlias}/`;
for (const [alias, fullModel] of Object.entries(modelAliases || {})) {
if (typeof fullModel !== "string" || !fullModel.startsWith(prefix)) continue;
const id = fullModel.slice(prefix.length);
if (!id || builtInIds.has(id) || seenFullModels.has(fullModel)) continue;
seenFullModels.add(fullModel);
rows.push({
id,
alias,
fullModel,
source: "legacyAlias",
type: type || "llm",
});
}
return rows;
}
|