Amiel's picture
Upload folder using huggingface_hub
676fc08 verified
import { shuffle } from "radash";
export function multiApiKeyPolling(apiKeys = "") {
return shuffle(apiKeys.split(","))[0];
}
export function isThinkingModel(model: string) {
return (
model.includes("thinking") ||
model.startsWith("gemini-2.5-pro") ||
model.startsWith("gemini-2.5-flash")
);
}
export function isNetworkingModel(model: string) {
return (
(model.startsWith("gemini-2.0-flash") &&
!model.includes("lite") &&
!model.includes("thinking") &&
!model.includes("image")) ||
model.startsWith("gemini-2.5-pro") ||
model.startsWith("gemini-2.5-flash")
);
}
export function isOpenRouterFreeModel(model: string) {
return model.endsWith(":free");
}
export function filterThinkingModelList(modelList: string[]) {
const thinkingModelList: string[] = [];
const nonThinkingModelList: string[] = [];
modelList.forEach((model) => {
if (isThinkingModel(model)) {
thinkingModelList.push(model);
} else {
nonThinkingModelList.push(model);
}
});
return [thinkingModelList, nonThinkingModelList];
}
export function filterNetworkingModelList(modelList: string[]) {
const networkingModelList: string[] = [];
const nonNetworkingModelList: string[] = [];
modelList.filter((model) => {
if (isNetworkingModel(model)) {
networkingModelList.push(model);
} else {
nonNetworkingModelList.push(model);
}
});
return [networkingModelList, nonNetworkingModelList];
}
export function filterOpenRouterModelList(modelList: string[]) {
const freeModelList: string[] = [];
const paidModelList: string[] = [];
modelList.filter((model) => {
if (isOpenRouterFreeModel(model)) {
freeModelList.push(model);
} else {
paidModelList.push(model);
}
});
return [freeModelList, paidModelList];
}
export function filterDeepSeekModelList(modelList: string[]) {
const thinkingModelList: string[] = [];
const nonThinkingModelList: string[] = [];
modelList.filter((model) => {
if (model.includes("reasoner")) {
thinkingModelList.push(model);
} else {
nonThinkingModelList.push(model);
}
});
return [thinkingModelList, nonThinkingModelList];
}
export function filterOpenAIModelList(modelList: string[]) {
const networkingModelList: string[] = [];
const nonNetworkingModelList: string[] = [];
modelList.filter((model) => {
if (
model.startsWith("gpt-4o") ||
model.startsWith("gpt-4.1") ||
!model.includes("nano")
) {
networkingModelList.push(model);
} else {
nonNetworkingModelList.push(model);
}
});
return [networkingModelList, nonNetworkingModelList];
}
export function filterPollinationsModelList(modelList: string[]) {
const recommendModelList: string[] = [];
const normalModelList: string[] = [];
modelList.filter((model) => {
if (
model.startsWith("openai") ||
model.startsWith("deepseek") ||
model.startsWith("searchgpt")
) {
recommendModelList.push(model);
} else {
normalModelList.push(model);
}
});
return [recommendModelList, normalModelList];
}
export function filterMistralModelList(modelList: string[]) {
const recommendModelList: string[] = [];
const normalModelList: string[] = [];
modelList.filter((model) => {
if (model.includes("large-latest") || model.includes("medium-latest")) {
recommendModelList.push(model);
} else {
normalModelList.push(model);
}
});
return [recommendModelList, normalModelList];
}
export function getCustomModelList(customModelList: string[]) {
const availableModelList: string[] = [];
const disabledModelList: string[] = [];
customModelList.forEach((model) => {
if (model.startsWith("+")) {
availableModelList.push(model.substring(1));
} else if (model.startsWith("-")) {
disabledModelList.push(model.substring(1));
} else {
availableModelList.push(model);
}
});
return { availableModelList, disabledModelList };
}