From 25ece52385c53f7683ea0510ae49bb9c72bba67b Mon Sep 17 00:00:00 2001
From: Liuyang <2746366019@qq.com>
Date: Tue, 11 Mar 2025 17:37:33 +0800
Subject: [PATCH] =?UTF-8?q?refactor(llm):=20=E9=87=8D=E6=9E=84=E5=AF=B9?=
=?UTF-8?q?=E8=AF=9D=E6=9C=8D=E5=8A=A1=E4=BB=A5=E6=8F=90=E5=8D=87=E7=9F=A5?=
=?UTF-8?q?=E8=AF=86=E5=BA=93=E5=88=A9=E7=94=A8=E6=95=88=E7=8E=87-=20?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E7=B3=BB=E7=BB=9F=E8=A7=92=E8=89=B2?=
=?UTF-8?q?=E5=AE=9A=E4=B9=89=EF=BC=8C=E6=98=8E=E7=A1=AE=E4=BA=86=E5=9F=BA?=
=?UTF-8?q?=E4=BA=8E=E9=99=90=E5=AE=9A=E7=9F=A5=E8=AF=86=E5=BA=93=E7=9A=84?=
=?UTF-8?q?=E9=97=AE=E7=AD=94=E5=8A=A9=E6=89=8B=E8=A7=92=E8=89=B2=20-=20?=
=?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BA=86=E8=BE=93=E5=85=A5=E8=A7=84=E8=8C=83?=
=?UTF-8?q?=E5=92=8C=E5=93=8D=E5=BA=94=E8=A7=84=E5=88=99=EF=BC=8C=E6=8F=90?=
=?UTF-8?q?=E9=AB=98=E4=BA=86=E5=AF=B9=E8=AF=9D=E5=A4=84=E7=90=86=E7=9A=84?=
=?UTF-8?q?=E7=81=B5=E6=B4=BB=E6=80=A7=20-=20=E4=BC=98=E5=8C=96=E4=BA=86?=
=?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E4=B8=BA=E7=A9=BA=E6=97=B6=E7=9A=84?=
=?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D?=
=?UTF-8?q?=E4=BA=86=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=20-=E8=B0=83=E6=95=B4=E4=BA=86=E6=B6=88?=
=?UTF-8?q?=E6=81=AF=E6=A0=BC=E5=BC=8F=EF=BC=8C=E4=BD=BF=E7=94=A8=20XML=20?=
=?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=8C=85=E8=A3=B9=E7=9F=A5=E8=AF=86=E5=BA=93?=
=?UTF-8?q?=E5=86=85=E5=AE=B9=EF=BC=8C=E6=8F=90=E9=AB=98=E4=BA=86=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E4=BC=A0=E9=80=92=E7=9A=84=E5=87=86=E7=A1=AE=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../conversation/ConversationServiceImpl.java | 32 +++----------------
1 file changed, 4 insertions(+), 28 deletions(-)
diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java
index a744d8c2d..4c4dfdc03 100644
--- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java
+++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java
@@ -365,32 +365,7 @@ public class ConversationServiceImpl implements ConversationService {
&& Objects.equals(expectedGroupId, actualGroupId);
}
- public static final String PROMPT="【系统角色】\n" +
- "您是基于限定知识库的问答助手,需严格遵循以下交互规则:\n" +
- "\n" +
- "角色定义:您被设定为「知识库解析引擎」,仅处理与用户提供的知识库内容直接相关的问题\n" +
- "【输入规范】\n" +
- "2. 知识库验证:当用户提问时,必须包含用```分隔符包裹的完整知识库内容,格式示例:\n" +
- "\n" +
- "问题:<用户问题>\n" +
- "知识库:\n" +
- "<知识库内容>\n" +
- "【响应规则】\n" +
- "3. 内容匹配:仅当知识库中存在与问题直接相关的明确信息时,方可生成回答。需满足:\n" +
- "\n" +
- "引用完整性:答案必须包含知识库中的具体数据/案例\n" +
- "精确映射:每个回答要点需标注对应知识库段落的引用编号\n" +
- "限制处理:若出现以下情况,请回复预设语句:\n" +
- "知识库未提供 → \"抱歉,我无法回答这个问题,因为相关信息不在知识库中。\"\n" +
- "问题超出知识库范围 → \"该问题超出当前知识库支持范围\"\n" +
- "检测到推测请求 → \"根据规则,我无法进行推测或想象\"\n" +
- "【安全机制】\n" +
- "4. 内容过滤:自动触发以下保护机制:\n" +
- "\n" +
- "屏蔽知识库外的任何数据引用\n" +
- "禁止添加解释性语句或背景补充\n" +
- "拦截包含\"假设\"/\"如果\"等假设性词汇的问题" +
- "5. 如果存在 [知识库内容] 这个标签,但是 [内容为空] ,返回 “抱歉,我无法回答这个问题,因为相关信息不在知识库中”";
+ public static final String PROMPT="Use the following context as your learned knowledge, inside XML tags.\\n\\n\\n{{#context#}}\\n\\n\\nWhen answer to user:\\n- If you don't know, just say that you don't know.\\n- If you don't know when you are not sure, ask for clarification.\\nAvoid mentioning that you obtained the information from the context.\\nAnd answer according to the language of the user's question.\\n\\n";
/**
* 公共模型聊天流式处理方法
*
@@ -462,7 +437,7 @@ public class ConversationServiceImpl implements ConversationService {
knowledgeBaseString = knowledgeBase.toString();
if (org.apache.commons.lang3.StringUtils.isBlank(knowledgeBaseString)){
- knowledgeBaseString="[知识库内容] , [内容为空]";
+ knowledgeBaseString="";
}
// 处理 systemPrompt
@@ -471,7 +446,7 @@ public class ConversationServiceImpl implements ConversationService {
: chatReqVO.getSystemPrompt() + "\n" + PROMPT;
}
- String mess = systemPrompt + knowledgeBaseString;
+ String mess = systemPrompt + ""+knowledgeBaseString+"";
// 查询历史记录消息,并将查询出来的知识信息放入到 role = system 的消息中
List messageHistoryList = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1);
@@ -561,6 +536,7 @@ public class ConversationServiceImpl implements ConversationService {
if (rateWordVO!=null){
words.add(rateWordVO);
}
+
}
if (CollectionUtils.isEmpty(words)){
paragraphHitRateListVO.setWordList(Collections.emptyList());