Просмотр исходного кода

refactor(ai): 优化 AI聊天消息响应

zrd 3 недель назад
Родитель
Сommit
d6099aa2f6

+ 11 - 8
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatMessageServiceImpl.java

@@ -233,9 +233,13 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
         model.setModel("dify");
         model.setId(99L);
         // 3. 插入 user 发送消息
-        AiChatMessageDO userMessage = createChatMessage(conversation.getId(), null, model,
+        AiChatMessageDO userMessage = new AiChatMessageDO();
+        if (!StrUtil.contains(sendReqVO.getContent(), "ecologicalValueCalculate")) {
+            userMessage = createChatMessage(conversation.getId(), null, model,
                 userId, conversation.getRoleId(), MessageType.USER, sendReqVO.getContent(), sendReqVO.getUseContext(),
-                null, sendReqVO.getContentType(), sendReqVO.getStateId());
+                    null, sendReqVO.getContentType(), sendReqVO.getStateId());
+        }
+        
         String apiKey = DictFrameworkUtils.parseDictDataValue("ai_key", "多轮对话");
         JSONObject requestBody = new JSONObject();
         String kcb = "";
@@ -300,6 +304,7 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
         // 3.2 流式返回
         StringBuffer contentBuffer = new StringBuffer();
         StringBuffer difyId = new StringBuffer();
+        
         AiChatMessageDO assistantMessage = createChatMessage(conversation.getId(), userMessage.getId(), model,
                 userId, conversation.getRoleId(), MessageType.ASSISTANT, kcb, sendReqVO.getUseContext(),
                 knowledgeSegments, sendReqVO.getContentType(), sendReqVO.getStateId());
@@ -328,11 +333,9 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
             return success(result);
         }).doOnComplete(() -> {
             // 忽略租户,因为 Flux 异步无法透传租户
-            if (!StrUtil.contains(contentBuffer.toString(), "ecologicalValueCalculate")) {
-                assistantMessage.setContent(contentBuffer.toString());
-            } else {
-                assistantMessage.setContent("选中");
-            }
+            
+            assistantMessage.setContent(contentBuffer.toString());
+            
             
             // 1.2 保存消息
             //更新 创建时间 方便排序
@@ -342,7 +345,7 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
             AiChatConversationUpdateMyReqVO updateReqVO = new AiChatConversationUpdateMyReqVO();
             updateReqVO.setId(conversation.getId());
             updateReqVO.setDifyConversationId(difyId.toString());
-            if (!StrUtil.contains(assistantMessage.getContent(), "><")) {
+            if (!StrUtil.contains(assistantMessage.getContent(), "enterpriseCard")) {
                 updateReqVO.setTitle(StrUtil.subPre(sendReqVO.getContent(), 20));
             }
             TenantUtils.executeIgnore(() ->