From 492a4027b6b74336dc48e23caaad775e4b79b8ad Mon Sep 17 00:00:00 2001 From: thzxx Date: Sat, 4 Apr 2026 23:58:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20RAG=E8=AF=B7=E6=B1=82=E5=A2=9E=E5=8A=A0s?= =?UTF-8?q?ystem=20prompt=E9=95=BF=E5=BA=A6=E9=99=90=E5=88=B6(12000?= =?UTF-8?q?=E5=AD=97=E8=8A=82)=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA=E5=92=8C=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/components/input-area.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/js/components/input-area.js b/js/components/input-area.js index f8ca1a2..e40cdda 100644 --- a/js/components/input-area.js +++ b/js/components/input-area.js @@ -427,6 +427,15 @@ export async function sendMessage() { } } + // 限制 system prompt 长度,防止超出上下文窗口 + if (chatParams.system && chatParams.system.length > 12000) { + chatParams.system = chatParams.system.slice(0, 12000) + '\n\n[内容过长,已截断]'; + appendSystemMessage('⚠️ 知识库内容过长,已截断处理'); + } + + console.log('[RAG] chatParams.system 长度:', chatParams.system?.length || 0); + console.log('[RAG] 开始调用 chatStream...'); + await api.chatStream(chatParams, (chunk) => { if (chunk.message) { if (chunk.message.content) { @@ -444,6 +453,11 @@ export async function sendMessage() { } }, abortController); + // 如果流结束但没有任何内容 + if (!assistantContent && !thinkContent) { + appendSystemMessage('⚠️ 模型未返回任何内容,可能是上下文过长或模型不支持当前请求'); + } + const assistantMsg = { role: 'assistant', content: assistantContent || '', @@ -523,8 +537,13 @@ export async function sendMessage() { } let errMsg = `❌ 错误: ${err.message}`; + console.error('[InputArea] 完整错误:', err); if (err.message.includes('Failed to fetch') || err.message.includes('NetworkError')) { errMsg = '❌ 连接失败。请检查:\n1. Ollama 是否正在运行\n2. 地址是否正确\n3. 是否设置了 OLLAMA_ORIGINS="*"'; + } else if (err.message.includes('400')) { + errMsg = '❌ 请求参数错误,可能是知识库内容超出模型上下文限制'; + } else if (err.message.includes('500')) { + errMsg = '❌ Ollama 服务器错误,请检查 Ollama 日志'; } appendSystemMessage(errMsg);