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