mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-30 04:30:48 +00:00
84 lines
2.1 KiB
TypeScript
84 lines
2.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Qwen
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { AuthType, DEFAULT_QWEN_MODEL } from '@qwen-code/qwen-code-core';
|
|
|
|
export type AvailableModel = {
|
|
id: string;
|
|
label: string;
|
|
description?: string;
|
|
isVision?: boolean;
|
|
};
|
|
|
|
export const MAINLINE_VLM = 'vision-model';
|
|
export const MAINLINE_CODER = DEFAULT_QWEN_MODEL;
|
|
|
|
export const AVAILABLE_MODELS_QWEN: AvailableModel[] = [
|
|
{
|
|
id: MAINLINE_CODER,
|
|
label: MAINLINE_CODER,
|
|
description: 'Optimized for code generation and understanding',
|
|
},
|
|
{
|
|
id: MAINLINE_VLM,
|
|
label: MAINLINE_VLM,
|
|
description: 'Vision model with multimodal capabilities',
|
|
isVision: true,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* Get available Qwen models filtered by vision model preview setting
|
|
*/
|
|
export function getFilteredQwenModels(
|
|
visionModelPreviewEnabled: boolean,
|
|
): AvailableModel[] {
|
|
if (visionModelPreviewEnabled) {
|
|
return AVAILABLE_MODELS_QWEN;
|
|
}
|
|
return AVAILABLE_MODELS_QWEN.filter((model) => !model.isVision);
|
|
}
|
|
|
|
/**
|
|
* Currently we use the single model of `OPENAI_MODEL` in the env.
|
|
* In the future, after settings.json is updated, we will allow users to configure this themselves.
|
|
*/
|
|
export function getOpenAIAvailableModelFromEnv(): AvailableModel | null {
|
|
const id = process.env['OPENAI_MODEL']?.trim();
|
|
return id ? { id, label: id } : null;
|
|
}
|
|
|
|
export function getAvailableModelsForAuthType(
|
|
authType: AuthType,
|
|
): AvailableModel[] {
|
|
switch (authType) {
|
|
case AuthType.QWEN_OAUTH:
|
|
return AVAILABLE_MODELS_QWEN;
|
|
case AuthType.USE_OPENAI: {
|
|
const openAIModel = getOpenAIAvailableModelFromEnv();
|
|
return openAIModel ? [openAIModel] : [];
|
|
}
|
|
default:
|
|
// For other auth types, return empty array for now
|
|
// This can be expanded later according to the design doc
|
|
return [];
|
|
}
|
|
}
|
|
|
|
/**
|
|
/**
|
|
* Hard code the default vision model as a string literal,
|
|
* until our coding model supports multimodal.
|
|
*/
|
|
export function getDefaultVisionModel(): string {
|
|
return MAINLINE_VLM;
|
|
}
|
|
|
|
export function isVisionModel(modelId: string): boolean {
|
|
return AVAILABLE_MODELS_QWEN.some(
|
|
(model) => model.id === modelId && model.isVision,
|
|
);
|
|
}
|