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() { + + +