Spaces:
Paused
Paused
| const CANONICAL_MODELS = Object.freeze([ | |
| "qwen3-max", | |
| "qwen3-vl-plus", | |
| "qwen3-coder-plus", | |
| "qwen3-omni-flash", | |
| "qwen-plus-2025-09-11", | |
| "qwen3-235b-a22b", | |
| "qwen3-30b-a3b", | |
| "qwen3-coder-30b-a3b-instruct", | |
| "qwen-max-latest", | |
| "qwen-plus-2025-01-25", | |
| "qwq-32b", | |
| "qwen-turbo-2025-02-11", | |
| "qwen2.5-omni-7b", | |
| "qvq-72b-preview-0310", | |
| "qwen2.5-vl-32b-instruct", | |
| "qwen2.5-14b-instruct-1m", | |
| "qwen2.5-coder-32b-instruct", | |
| "qwen2.5-72b-instruct" | |
| ]); | |
| const CANONICAL_MODEL_SET = new Set(CANONICAL_MODELS); | |
| const ALIAS_GROUPS = Object.freeze({ | |
| "qwen3-max": [ | |
| "qwen-max", | |
| "Qwen3-Max", | |
| "Qwen3-Maximum", | |
| "qwen3-max-preview", | |
| "Qwen3-Max-Preview" | |
| ], | |
| "qwen3-vl-plus": [ | |
| "qwen-vl", | |
| "qwen-vl-plus", | |
| "qwen-vl-plus-latest", | |
| "qwen-vl-max", | |
| "qwen-vl-max-latest", | |
| "Qwen3-VL-235B-A22B", | |
| "qwen3-vl-235b-a22b" | |
| ], | |
| "qwen3-coder-plus": [ | |
| "qwen3-coder", | |
| "qwen-coder-plus", | |
| "qwen-coder-plus-latest", | |
| "Qwen3-Coder-Plus", | |
| "qwen2.5-coder-3b-instruct", | |
| "qwen2.5-coder-1.5b-instruct", | |
| "qwen2.5-coder-0.5b-instruct", | |
| "Qwen3-Coder" | |
| ], | |
| "qwen3-omni-flash": [ | |
| "qwen3-omni", | |
| "qwen3-omni-latest", | |
| "Qwen3-omni-flash", | |
| "Qwen3-Omni-Flash", | |
| "Qwen3-Omni" | |
| ], | |
| "qwen-plus-2025-09-11": [ | |
| "qwen-plus", | |
| "qwen-plus-latest", | |
| "Qwen3-Next", | |
| "Qwen3-Next-80B-A3B", | |
| "Qwen3-Next-80B-A3Bб", | |
| "qwen3-next", | |
| "qwen3-next-80b-a3b" | |
| ], | |
| "qwen3-235b-a22b": [ | |
| "qwen3", | |
| "qwen-3", | |
| "qwen3-235b", | |
| "Qwen3-235B-A22B", | |
| "Qwen3-235B-A22B-2507", | |
| "qwen3-235b-a22b-2507" | |
| ], | |
| "qwen3-30b-a3b": [ | |
| "qwen3-plus", | |
| "qwen3-30b", | |
| "Qwen3-30B-A3B", | |
| "Qwen3-30B-A3B-2507", | |
| "qwen3-30b-a3b-2507" | |
| ], | |
| "qwen3-coder-30b-a3b-instruct": [ | |
| "qwen3-coder-flash", | |
| "Qwen3-Coder-Flash", | |
| "qwen3-coder-30b", | |
| "Qwen3-Coder-30B-A3B-Instruct" | |
| ], | |
| "qwen-max-latest": [ | |
| "Qwen2.5-Max", | |
| "qwen2.5-max" | |
| ], | |
| "qwen-plus-2025-01-25": [ | |
| "Qwen2.5-Plus", | |
| "qwen2.5-plus" | |
| ], | |
| "qwq-32b": [ | |
| "qwq", | |
| "QwQ-32B", | |
| "qwq-32b-preview" | |
| ], | |
| "qwen-turbo-2025-02-11": [ | |
| "qwen-turbo", | |
| "qwen-turbo-latest", | |
| "Qwen2.5-Turbo" | |
| ], | |
| "qwen2.5-omni-7b": [ | |
| "qwen2.5-omni", | |
| "Qwen2.5-Omni-7B", | |
| "qwen-omni-7b" | |
| ], | |
| "qvq-72b-preview-0310": [ | |
| "qvq", | |
| "QVQ-Max", | |
| "qvq-72b" | |
| ], | |
| "qwen2.5-vl-32b-instruct": [ | |
| "qwen2.5-vl", | |
| "Qwen2.5-VL-32B-Instruct" | |
| ], | |
| "qwen2.5-14b-instruct-1m": [ | |
| "qwen2.5-14b", | |
| "qwen2.5-coder-14b-instruct", | |
| "Qwen2.5-14B-Instruct-1M" | |
| ], | |
| "qwen2.5-coder-32b-instruct": [ | |
| "qwen2.5-coder", | |
| "qwen2.5-coder-plus", | |
| "Qwen2.5-Coder-32B-Instruct" | |
| ], | |
| "qwen2.5-72b-instruct": [ | |
| "qwen2.5-72b", | |
| "Qwen2.5-72B-Instruct" | |
| ] | |
| }); | |
| const buildModelMapping = () => { | |
| const mapping = Object.create(null); | |
| for (const model of CANONICAL_MODELS) { | |
| mapping[model] = model; | |
| } | |
| for (const [target, aliases] of Object.entries(ALIAS_GROUPS)) { | |
| if (!CANONICAL_MODEL_SET.has(target)) { | |
| continue; | |
| } | |
| for (const alias of aliases) { | |
| if (!alias) continue; | |
| mapping[alias] = target; | |
| } | |
| } | |
| return Object.freeze(mapping); | |
| }; | |
| export const MODEL_MAPPING = buildModelMapping(); | |
| /** | |
| * Получить соответствующую доступную модель | |
| * @param {string} requestedModel - Запрошенная модель | |
| * @param {string} defaultModel - Модель по умолчанию | |
| * @returns {string} - Доступная модель | |
| */ | |
| export function getMappedModel(requestedModel, defaultModel = "qwen-max-latest") { | |
| if (!requestedModel) return defaultModel; | |
| // Проверяем точное соответствие в словаре | |
| if (MODEL_MAPPING[requestedModel]) { | |
| return MODEL_MAPPING[requestedModel]; | |
| } | |
| // Проверяем, является ли запрошенная модель уже доступной | |
| const availableModels = Object.values(MODEL_MAPPING); | |
| if (availableModels.includes(requestedModel)) { | |
| return requestedModel; | |
| } | |
| // Возвращаем модель по умолчанию, если соответствие не найдено | |
| return defaultModel; | |
| } |