From c4ca7e4282276b3459732dd21ad5183034a3ce09 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 8 Feb 2026 23:47:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E8=A7=A3=E6=A8=A1=E5=9E=8B=E6=B5=81?= =?UTF-8?q?=E5=BC=8F=E5=8D=A1=E6=AD=BB=E5=AF=BC=E8=87=B4=E7=AB=99=E7=82=B9?= =?UTF-8?q?=E5=81=B6=E5=8F=91=E6=97=A0=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(chat)/api/chat/route.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index 23f8a49..6b915ff 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -994,6 +994,7 @@ export async function POST(request: Request) { // 获取语言模型实例 let languageModel; let actualModelId: string; + let resolvedModelSupportsImageGen = false; if (isUUID) { // 从数据库获取动态配置的模型 @@ -1055,6 +1056,7 @@ export async function POST(request: Request) { // 对于动态模型,我们需要从数据库获取 modelId const finalModelData = await getAiModelById({ id: targetModelId }); actualModelId = finalModelData?.modelId ?? targetModelId; + resolvedModelSupportsImageGen = Boolean(finalModelData?.supportsImageGen); } else { // 使用预定义的模型 languageModel = myProvider.languageModel(finalModelId); @@ -2456,6 +2458,10 @@ export async function POST(request: Request) { } // 常规文本模型使用 streamText + const streamRequestTimeoutMs = resolvedModelSupportsImageGen ? 180_000 : 90_000; + const shouldDisableSmoothStream = + resolvedModelSupportsImageGen || isVolcanoVideoModel; + const result = streamText({ model: languageModel, system: systemPrompt({ selectedChatModel: finalModelId, requestHints }), @@ -2463,8 +2469,11 @@ export async function POST(request: Request) { stopWhen: stepCountIs(5), experimental_activeTools: finalModelId === "chat-model-reasoning" || isVolcanoVideoModel ? [] : activeTools, - experimental_transform: smoothStream({ chunking: "word" }), + experimental_transform: shouldDisableSmoothStream + ? undefined + : smoothStream({ chunking: "word" }), tools: isVolcanoVideoModel ? {} : tools, // 🆕 视频模型禁用工具 + abortSignal: AbortSignal.timeout(streamRequestTimeoutMs), experimental_telemetry: { isEnabled: isProductionEnvironment, functionId: "stream-text",