diff --git a/document/content/docs/self-host/upgrading/4-14/41410.mdx b/document/content/docs/self-host/upgrading/4-14/41410.mdx index 40d6b98619..fad9102123 100644 --- a/document/content/docs/self-host/upgrading/4-14/41410.mdx +++ b/document/content/docs/self-host/upgrading/4-14/41410.mdx @@ -27,4 +27,5 @@ description: 'FastGPT V4.14.10 更新说明' 1. 子工作流的全局变量默认值未生效。 2. agent 模式下已配的 rerank 模型不显示。 -3. bge-m3 embedding 向量模型输出都为 0 的问题。 \ No newline at end of file +3. bge-m3 embedding 向量模型输出都为 0 的问题。 +4. MCP 并发调用时,连接异常导致调用失败。 \ No newline at end of file diff --git a/document/data/doc-last-modified.json b/document/data/doc-last-modified.json index d491202068..c4031f0c0c 100644 --- a/document/data/doc-last-modified.json +++ b/document/data/doc-last-modified.json @@ -220,7 +220,7 @@ "document/content/docs/self-host/upgrading/4-14/4140.mdx": "2026-03-03T17:39:47+08:00", "document/content/docs/self-host/upgrading/4-14/4141.en.mdx": "2026-03-03T17:39:47+08:00", "document/content/docs/self-host/upgrading/4-14/4141.mdx": "2026-03-03T17:39:47+08:00", - "document/content/docs/self-host/upgrading/4-14/41410.mdx": "2026-03-30T10:05:42+08:00", + "document/content/docs/self-host/upgrading/4-14/41410.mdx": "2026-03-30T22:11:30+08:00", "document/content/docs/self-host/upgrading/4-14/4142.en.mdx": "2026-03-03T17:39:47+08:00", "document/content/docs/self-host/upgrading/4-14/4142.mdx": "2026-03-03T17:39:47+08:00", "document/content/docs/self-host/upgrading/4-14/4143.en.mdx": "2026-03-03T17:39:47+08:00", diff --git a/packages/global/core/ai/model.schema.ts b/packages/global/core/ai/model.schema.ts index 598b17a621..a9fb970235 100644 --- a/packages/global/core/ai/model.schema.ts +++ b/packages/global/core/ai/model.schema.ts @@ -45,7 +45,10 @@ const BaseModelItemSchema = z.object({ // If has requestUrl, it will request the model directly requestUrl: z.string().optional(), - requestAuth: z.string().optional() + requestAuth: z.string().optional(), + + // Test mode: when enabled, classify/extract/tool call/evaluation scenarios are disabled + testMode: z.boolean().optional() // test mode flag }); type BaseModelItemType = z.infer; @@ -65,9 +68,6 @@ export const LLMModelItemSchema = PriceTypeSchema.extend(BaseModelItemSchema.sha vision: z.boolean().optional(), reasoning: z.boolean().optional(), - // Test mode: when enabled, classify/extract/tool call/evaluation scenarios are disabled - testMode: z.boolean().optional(), // test mode flag - functionCall: z.boolean(), toolChoice: z.boolean(), diff --git a/packages/service/core/app/mcp.ts b/packages/service/core/app/mcp.ts index aad0da6a12..8ce0959862 100644 --- a/packages/service/core/app/mcp.ts +++ b/packages/service/core/app/mcp.ts @@ -60,7 +60,7 @@ export class MCPClient { await this.client.connect(transport); return this.client; } catch (error) { - logger.debug('StreamableHTTP connect failed, falling back to SSE', { url: this.url, error }); + await this.client.close().catch(() => {}); await this.client.connect( new SSEClientTransport(new URL(this.url), { requestInit: { diff --git a/packages/web/i18n/en/account.json b/packages/web/i18n/en/account.json index 5e2131e0a6..b1c671b97f 100644 --- a/packages/web/i18n/en/account.json +++ b/packages/web/i18n/en/account.json @@ -95,7 +95,7 @@ "model.show_stop_sign": "Display stop sequence parameters", "model.show_top_p": "Show Top-p parameters", "model.test_mode": "Mark as test model", - "model.test_mode_tip": "After being turned on, the model is only used for AI dialogue and is not used for other model processing scenarios such as knowledge base file processing, text extraction, application evaluation, problem classification, tool calling nodes, etc.", + "model.test_mode_tip": "When enabled, the model will have a Beta logo added when selected.", "model.test_model": "Model testing", "model.tool_choice": "Tool choice", "model.tool_choice_tag": "ToolCall", diff --git a/packages/web/i18n/zh-CN/account.json b/packages/web/i18n/zh-CN/account.json index 8294e50ab0..c92393bbf9 100644 --- a/packages/web/i18n/zh-CN/account.json +++ b/packages/web/i18n/zh-CN/account.json @@ -95,7 +95,7 @@ "model.show_stop_sign": "展示停止序列参数", "model.show_top_p": "展示 Top-p 参数", "model.test_mode": "标记为测试模型", - "model.test_mode_tip": "开启后,该模型仅用于 AI 对话,不用于知识库文件处理、文本提取、应用评测、问题分类、工具调用节点等其他模型处理场景。", + "model.test_mode_tip": "开启后,该模型在选择时候,将会增加 Beta 标志。", "model.test_model": "模型测试", "model.tool_choice": "支持工具调用", "model.tool_choice_tag": "工具调用", diff --git a/packages/web/i18n/zh-Hant/account.json b/packages/web/i18n/zh-Hant/account.json index d1b1e386ad..8969066de3 100644 --- a/packages/web/i18n/zh-Hant/account.json +++ b/packages/web/i18n/zh-Hant/account.json @@ -95,7 +95,7 @@ "model.show_stop_sign": "展示停止序列參數", "model.show_top_p": "展示 Top-p 參數", "model.test_mode": "標記為測試模型", - "model.test_mode_tip": "開啟後,此模型僅用於 AI 對話,不用於知識庫文件處理、文字擷取、應用評測、問題分類、工具呼叫節點等其他模型處理場景。", + "model.test_mode_tip": "開啟後,該模型在選擇時候,將會增加 Beta 標誌。", "model.test_model": "模型測試", "model.tool_choice": "支援工具呼叫", "model.tool_choice_tag": "工具呼叫", diff --git a/projects/app/src/components/Select/AIModelSelector.tsx b/projects/app/src/components/Select/AIModelSelector.tsx index 7d8e28e308..822dd6e5e2 100644 --- a/projects/app/src/components/Select/AIModelSelector.tsx +++ b/projects/app/src/components/Select/AIModelSelector.tsx @@ -19,7 +19,7 @@ type Props = SelectProps & { }; const isTestModeModel = (model?: SystemModelItemType) => { - return !!(model && 'testMode' in model && model.testMode); + return !!model?.testMode; }; const SelectorActiveTestModeTip = React.memo(function SelectorActiveTestModeTip() { diff --git a/projects/app/src/components/core/ai/ModelTable/index.tsx b/projects/app/src/components/core/ai/ModelTable/index.tsx index 8a455a5fec..835831f2f2 100644 --- a/projects/app/src/components/core/ai/ModelTable/index.tsx +++ b/projects/app/src/components/core/ai/ModelTable/index.tsx @@ -154,7 +154,7 @@ const ModelTable = ({ permissionConfig = false }: { permissionConfig?: boolean } return { model: item.model, name: item.name, - testMode: 'testMode' in item ? item.testMode : undefined, + testMode: item.testMode, avatar: provider.avatar, providerId: provider.id, providerName: provider.name, diff --git a/projects/app/src/pageComponents/account/model/AddModelBox.tsx b/projects/app/src/pageComponents/account/model/AddModelBox.tsx index bb118da211..b9aed90a35 100644 --- a/projects/app/src/pageComponents/account/model/AddModelBox.tsx +++ b/projects/app/src/pageComponents/account/model/AddModelBox.tsx @@ -1150,14 +1150,12 @@ export const ModelEditModal = ({ )} {isTTSModel && } {CustomApi} - {isLLMModel && ( - - )} + diff --git a/projects/app/src/pageComponents/account/model/ModelConfigTable.tsx b/projects/app/src/pageComponents/account/model/ModelConfigTable.tsx index 4011149e4e..e739700b71 100644 --- a/projects/app/src/pageComponents/account/model/ModelConfigTable.tsx +++ b/projects/app/src/pageComponents/account/model/ModelConfigTable.tsx @@ -394,7 +394,7 @@ const ModelTable = ({ Tab }: { Tab: React.ReactNode }) => { > {showModelId ? item.model : item.name} - {Boolean('testMode' in item && item.testMode) && } + {item.testMode && } diff --git a/projects/app/src/pages/api/core/ai/model/list.ts b/projects/app/src/pages/api/core/ai/model/list.ts index dec475a730..392a50f372 100644 --- a/projects/app/src/pages/api/core/ai/model/list.ts +++ b/projects/app/src/pages/api/core/ai/model/list.ts @@ -48,15 +48,13 @@ async function handler( priceTiers: model.priceTiers, isActive: model.isActive ?? false, isCustom: model.isCustom ?? false, + testMode: model?.testMode, // Tag contextToken: 'maxContext' in model ? model.maxContext : 'maxToken' in model ? model.maxToken : undefined, vision: 'vision' in model ? model.vision : undefined, - toolChoice: 'toolChoice' in model ? model.toolChoice : undefined, - - // LLM Model - testMode: 'testMode' in model ? model.testMode : undefined + toolChoice: 'toolChoice' in model ? model.toolChoice : undefined })); }