From 1f26ec911ccb1fd4231edc01ef1a72a6ecbe7690 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Feb 2026 16:03:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20auto-title=20API=20?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 正确访问 model 和 provider 对象结构 2. 直接使用返回的 provider 信息,无需再次查询 Co-authored-by: Cursor --- app/api/canvas/auto-title/route.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/api/canvas/auto-title/route.ts b/app/api/canvas/auto-title/route.ts index 4a28c8e..eb4e439 100644 --- a/app/api/canvas/auto-title/route.ts +++ b/app/api/canvas/auto-title/route.ts @@ -22,14 +22,14 @@ export async function POST(request: NextRequest) { } // 从数据库获取支持视觉的模型(查找包含 qwen-vl 或 vision 的模型) - const models = await getEnabledAiModelsWithProvider(); - console.log("[Auto-title] Available models count:", models.length); - console.log("[Auto-title] All model IDs:", models.map(m => m.modelId)); + const modelsData = await getEnabledAiModelsWithProvider(); + console.log("[Auto-title] Available models count:", modelsData.length); + console.log("[Auto-title] All model IDs:", modelsData.map(m => m.model.modelId)); // 查找千问VL模型(支持多种命名格式) - const visionModel = models.find(m => { - const id = m.modelId?.toLowerCase() || ''; - const name = m.displayName?.toLowerCase() || ''; + const visionModelData = modelsData.find(m => { + const id = m.model.modelId?.toLowerCase() || ''; + const name = m.model.displayName?.toLowerCase() || ''; return id.includes('qwen-vl') || id.includes('qwen3-vl') || id.includes('qwen2.5-vl') || @@ -38,15 +38,16 @@ export async function POST(request: NextRequest) { name.includes('视觉'); }); - console.log("[Auto-title] Found vision model:", visionModel?.modelId, visionModel?.displayName); + console.log("[Auto-title] Found vision model:", visionModelData?.model.modelId, visionModelData?.model.displayName); - if (!visionModel || !visionModel.providerId) { + if (!visionModelData) { console.log("[Auto-title] No vision model found, using default title"); return NextResponse.json({ title: "未命名画布" }); } - // 获取 provider 配置 - const provider = await getAiProviderById(visionModel.providerId); + // 直接使用返回的 provider 信息 + const provider = visionModelData.provider; + const visionModel = visionModelData.model; if (!provider || !provider.apiKey || !provider.baseUrl) { console.log("[Auto-title] Provider not configured"); return NextResponse.json({ title: "未命名画布" });