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 }; }