diff --git a/Yi.Ai.Vue3/src/components/ModelSelect/index.vue b/Yi.Ai.Vue3/src/components/ModelSelect/index.vue index d70b15b2..ef8e2e69 100644 --- a/Yi.Ai.Vue3/src/components/ModelSelect/index.vue +++ b/Yi.Ai.Vue3/src/components/ModelSelect/index.vue @@ -17,6 +17,7 @@ const scrollbarRef = ref(); const activeProviderGroup = ref(''); const activeApiGroup = ref(''); const isScrolling = ref(false); +const filterPremiumOnly = ref(false); // 是否只显示尊享模型 // 检查模型是否可用 function isModelAvailable(item: GetSessionListVO) { @@ -95,18 +96,18 @@ const currentModelName = computed( () => modelStore.currentModelInfo && modelStore.currentModelInfo.modelName, ); -// API 类型映射 -const apiTypeNameMap: Record = { - Completions: 'OpenAI Chat Completion', - Responses: 'OpenAI Responses API', - Messages: 'Anthropic Claude API', - GenerateContent: 'Google Gemini API', -}; +// 过滤后的模型列表 +const filteredModelList = computed(() => { + if (filterPremiumOnly.value) { + return modelStore.modelList.filter(model => model.isPremiumPackage); + } + return modelStore.modelList; +}); // 按 API 类型分组 const groupedByApiType = computed(() => { const groups: Record = {}; - modelStore.modelList.forEach((model) => { + filteredModelList.value.forEach((model) => { const apiType = model.modelApiType || 'Completions'; if (!groups[apiType]) { groups[apiType] = []; @@ -119,7 +120,7 @@ const groupedByApiType = computed(() => { // 按 厂商 (Provider) 分组 const groupedByProvider = computed(() => { const groups: Record = {}; - modelStore.modelList.forEach((model) => { + filteredModelList.value.forEach((model) => { const provider = model.providerName || 'Other'; if (!groups[provider]) { groups[provider] = []; @@ -311,8 +312,17 @@ function getWrapperClass(item: GetSessionListVO) { align-center >
- -
+ +
+ +
+ 仅看尊享模型 +
+ 前往模型库 @@ -330,7 +340,7 @@ function getWrapperClass(item: GetSessionListVO) {
@@ -402,11 +412,11 @@ function getWrapperClass(item: GetSessionListVO) {
-
+
@@ -415,7 +425,7 @@ function getWrapperClass(item: GetSessionListVO) {