Ver código fonte

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

zrd 3 semanas atrás
pai
commit
f91b07cca0

+ 2 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/message/AiChatMessageSendRespVO.java

@@ -30,6 +30,8 @@ public class AiChatMessageSendRespVO {
         private String content;
         private String event;
         private Long stateId;
+        
+        private String difyConversationId;
         @Schema(description = "知识库段落编号数组", example = "[1,2,3]")
         private List<Long> segmentIds;
 

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

@@ -302,8 +302,11 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
                 userId, conversation.getRoleId(), MessageType.ASSISTANT, kcb, sendReqVO.getUseContext(),
                 knowledgeSegments, sendReqVO.getContentType(), sendReqVO.getStateId());
         
-        if (StrUtil.isBlank(conversation.getDifyConversationId())) {
-            result.setReceive(BeanUtils.toBean(assistantMessage, AiChatMessageSendRespVO.Message.class));
+        if (StrUtil.isBlank(conversation.getDifyConversationId()) && StrUtil.equals(conversation.getDifyConversationId(), "0")) {
+            AiChatMessageSendRespVO.Message rs = BeanUtils.toBean(assistantMessage,
+                    AiChatMessageSendRespVO.Message.class);
+            rs.setDifyConversationId("0");
+            result.setReceive(rs);
             return Flux.just(success(result))
                     ;
         }
@@ -317,6 +320,7 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
             AiChatMessageSendRespVO.Message receive = BeanUtils.toBean(assistantMessage,
                     AiChatMessageSendRespVO.Message.class);
             receive.setEvent(chunk.getEvent());
+            receive.setDifyConversationId(difyId.toString());
             result.setReceive(receive);
             // 响应结果
             return success(result);