From 582857ad3da9fe0e168364323c313e17993e9a17 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 26 Aug 2025 11:03:49 +0800
Subject: [PATCH] fix(ai): 优化 AI 服务调用失败时的错误处理- 在 AiServiceImpl 类中,改进了流式调用 AI 服务失败时的错误响应 - 使用 FebsResponse 的 fail() 方法创建失败响应,增加了错误状态 - 修改了两处错误处理逻辑,提高了错误信息的准确性和可读性

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java |   48 ++++++++++++++++++++++++++----------------------
 1 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
index b059230..cccfe88 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
@@ -15,6 +15,7 @@
 import cc.mrbird.febs.ai.service.AiTalkItemService;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -407,7 +408,7 @@
                     ChatMessage message = choice.getMessage();
                     if (message.getReasoningContent()!= null &&!message.getReasoningContent().isEmpty()) {
                         apiMemberTalkStreamVo.setReasoningContent(message.getReasoningContent());
-                        System.out.print(message.getReasoningContent());
+//                        System.out.print(message.getReasoningContent());
                     }
 
                     String content = message.getContent() == null ? "" : message.getContent().toString();
@@ -417,7 +418,7 @@
                 })
                 .onErrorResume(throwable -> {
                     log.error("流式调用AI服务失败,问题输入: {}", question, throwable);
-                    FebsResponse errorResponse = new FebsResponse().message("AI服务调用失败");
+                    FebsResponse errorResponse = new FebsResponse().fail().message("AI服务调用失败");
                     return Flux.just(errorResponse);
                 });
     }
@@ -425,31 +426,34 @@
     @Override
     public Flux<FebsResponse> answerStreamV2(AiTalkAnswerStream dto) {
         String question = dto.getQuestion();
-        //获取消息记录
-        List<AiTalkItem> aiTalkItems = aiTalkItemService.getListByTalkId(dto.getTalkId());
         log.info("----- standard request -----");
 
+
+        List<ChatMessage> messages = new ArrayList<>();
         final ChatMessage systemMessage = ChatMessage.builder()
                 .role(ChatMessageRole.SYSTEM)
                 .content("你是豆包,是由字节跳动开发的 AI 人工智能助手")
                 .build();
-
-        List<ChatMessage> messages = Arrays.asList(systemMessage);
-        if(CollUtil.isNotEmpty(aiTalkItems)){
-            for (AiTalkItem aiTalkItem : aiTalkItems){
-                if (aiTalkItem.getType() == 1){
-                    ChatMessage userMessage = ChatMessage.builder()
-                            .role(ChatMessageRole.USER)
-                            .content(aiTalkItem.getContext())
-                            .build();
-                    messages.add(userMessage);
-                }
-                if (aiTalkItem.getType() == 2){
-                    ChatMessage assistantMessage = ChatMessage.builder()
-                            .role(ChatMessageRole.ASSISTANT)
-                            .content(aiTalkItem.getContext())
-                            .build();
-                    messages.add(assistantMessage);
+        messages.add(systemMessage);
+        //获取消息记录
+        if (StrUtil.isNotEmpty(dto.getTalkId())){
+            List<AiTalkItem> aiTalkItems = aiTalkItemService.getListByTalkId(dto.getTalkId());
+            if(CollUtil.isNotEmpty(aiTalkItems)){
+                for (AiTalkItem aiTalkItem : aiTalkItems){
+                    if (aiTalkItem.getType() == 1){
+                        ChatMessage memberMessage = ChatMessage.builder()
+                                .role(ChatMessageRole.USER)
+                                .content(aiTalkItem.getContext())
+                                .build();
+                        messages.add(memberMessage);
+                    }
+                    if (aiTalkItem.getType() == 2){
+                        ChatMessage assistantMessage = ChatMessage.builder()
+                                .role(ChatMessageRole.ASSISTANT)
+                                .content(aiTalkItem.getContext())
+                                .build();
+                        messages.add(assistantMessage);
+                    }
                 }
             }
         }
@@ -498,7 +502,7 @@
                 })
                 .onErrorResume(throwable -> {
                     log.error("流式调用AI服务失败,问题输入: {}", question, throwable);
-                    FebsResponse errorResponse = new FebsResponse().message("AI服务调用失败");
+                    FebsResponse errorResponse = new FebsResponse().fail().message("AI服务调用失败");
                     return Flux.just(errorResponse);
                 });
     }

--
Gitblit v1.9.1