From d987400a5b1b455821e186f15f11c20e0b605ac4 Mon Sep 17 00:00:00 2001 From: Wang Defa <1+wangdefa@noreply.gitea.bcde.io> Date: Thu, 16 Jul 2026 12:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=A1=B5=E6=96=B0=E5=A2=9EAI?= =?UTF-8?q?=20Tab:=E4=BF=9D=E9=99=A9=E4=B8=9D/grok=E5=B7=A5=E5=85=B7/?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=B2=BB=E7=90=86=E8=BF=81=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/aigateway.ts | 6 + src/components/settings/AiSettingsTab.vue | 232 ++++++++++++++++++ src/components/settings/BlacklistAddModal.vue | 137 +++++++++++ src/types/api.ts | 12 + src/views/AiGatewayView.vue | 129 +--------- src/views/SettingsView.vue | 5 + 6 files changed, 396 insertions(+), 125 deletions(-) create mode 100644 src/components/settings/AiSettingsTab.vue create mode 100644 src/components/settings/BlacklistAddModal.vue diff --git a/src/api/aigateway.ts b/src/api/aigateway.ts index f334013..a06e98c 100644 --- a/src/api/aigateway.ts +++ b/src/api/aigateway.ts @@ -1,6 +1,7 @@ import { request } from './request' import type { AiCallLog, + AiCatalogModel, AiChannel, AiContentLog, AiKey, @@ -98,6 +99,11 @@ export function listAiModels(): Promise { return request<{ items: AiModel[] }>('/ai-models').then((r) => r.items) } +/** 聚合模型目录(含能力,启用渠道去重;不受「过滤弃用」影响),黑名单添加弹窗用 */ +export function listAiModelCatalog(): Promise { + return request<{ items: AiCatalogModel[] }>('/ai-model-catalog').then((r) => r.items) +} + // ---- 网关全局设置 ---- export function getAiSettings(): Promise { diff --git a/src/components/settings/AiSettingsTab.vue b/src/components/settings/AiSettingsTab.vue new file mode 100644 index 0000000..3cf1dd6 --- /dev/null +++ b/src/components/settings/AiSettingsTab.vue @@ -0,0 +1,232 @@ + + + diff --git a/src/components/settings/BlacklistAddModal.vue b/src/components/settings/BlacklistAddModal.vue new file mode 100644 index 0000000..3105392 --- /dev/null +++ b/src/components/settings/BlacklistAddModal.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/types/api.ts b/src/types/api.ts index 7f87a83..53976e2 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -978,6 +978,18 @@ export interface AiModelCacheItem { /** AI 网关全局设置 */ export interface AiSettings { filterDeprecated: boolean + /** Responses 流式保险丝:instructions+tools 合计超阈值改非流式上游并合成 SSE */ + streamGuardEnabled: boolean + streamGuardKB: number + /** grok(xai. 前缀)服务端搜索工具默认注入;请求已带同名工具时不覆盖 */ + grokWebSearch: boolean + grokXSearch: boolean +} + +/** 聚合模型目录条目(黑名单添加弹窗):能力为 CHAT / EMBEDDING / RERANK / TTS */ +export interface AiCatalogModel { + name: string + capability: string } export interface AiModelBlacklistItem { diff --git a/src/views/AiGatewayView.vue b/src/views/AiGatewayView.vue index 882312c..5f49914 100644 --- a/src/views/AiGatewayView.vue +++ b/src/views/AiGatewayView.vue @@ -1,30 +1,21 @@ @@ -186,18 +121,9 @@ async function unbanModel(b: AiModelBlacklistItem) {
可用模型
-
按厂商分组;点击厂商展开,点击模型名复制,✕ 加入黑名单
-
-
- - {{ models.data.value?.length ?? '…' }} 个 +
按厂商分组;点击厂商展开,点击模型名复制
+ {{ models.data.value?.length ?? '…' }} 个
{{ id }} -
-
- -
-
同步与探测均过滤;点击移出,重新同步渠道后恢复入池
-
- -
-
-
暂无可用模型:请先添加渠道并探测(需租户订阅 GenAI 提供区域)
diff --git a/src/views/SettingsView.vue b/src/views/SettingsView.vue index 72ae6a6..4bc5cdd 100644 --- a/src/views/SettingsView.vue +++ b/src/views/SettingsView.vue @@ -20,6 +20,7 @@ import AppInputNumber from '@/components/AppInputNumber.vue' import FootNote from '@/components/FootNote.vue' import FormField from '@/components/FormField.vue' import AboutTab from '@/components/settings/AboutTab.vue' +import AiSettingsTab from '@/components/settings/AiSettingsTab.vue' import AccountSecurityCard from '@/components/settings/AccountSecurityCard.vue' import NotifyChannelCard from '@/components/settings/NotifyChannelCard.vue' import NotifyTemplateModal from '@/components/settings/NotifyTemplateModal.vue' @@ -339,6 +340,7 @@ async function sendTest() { + @@ -658,6 +660,9 @@ async function sendTest() { + + +