From 64b904dd07d8fa5cd872607c5ba0c54bc12168d9 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:56:48 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=AF=E6=8F=B4=E4=B8=8D=E6=8E=A5?= =?UTF-8?q?=E5=8F=97=20system=20role=20=E7=9A=84=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=EF=BC=88DeepSeek-R1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/llm.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/llm.js b/app/llm.js index db7217b..5dcd129 100644 --- a/app/llm.js +++ b/app/llm.js @@ -16,9 +16,16 @@ export async function chat(systemPrompt, userContent) { }; if (provider === 'claude') headers['anthropic-version'] = '2023-06-01'; + // 部分模型(如 DeepSeek-R1)不支援 system role,改合併到 user message + const NO_SYSTEM_ROLE_MODELS = ['deepseek-ai/deepseek-r1', 'deepseek-r1']; + const isNoSystemRole = NO_SYSTEM_ROLE_MODELS.some(m => model.toLowerCase().includes(m.toLowerCase())); + const messages = isNoSystemRole + ? [{ role: 'user', content: `${systemPrompt}\n\n${userContent}` }] + : [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }]; + const resp = await axios.post( `${baseURL.replace(/\/$/, '')}/chat/completions`, - { model, messages: [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }], temperature: 0.2 }, + { model, messages, temperature: 0.2 }, { headers, timeout: 120000, httpsAgent } ); return resp.data.choices[0].message.content;