Administrator
2025-08-25 d057a70510e571935299ed12c2eb420ff1233f94
refactor(ai): 优化对话流 V2 版本的处理逻辑

- 将会话记录的获取逻辑移至条件判断内,减少不必要的调用
- 添加对 talkId 的非空判断,提高代码健壮性
- 移除了 AiTalkAnswerStream 中的 @NotBlank 注解,简化参数校验
2 files modified
38 ■■■■ changed files
src/main/java/cc/mrbird/febs/ai/req/talk/AiTalkAnswerStream.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java 37 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/talk/AiTalkAnswerStream.java
@@ -13,7 +13,6 @@
@ApiModel(value = "AiTalkAnsStream", description = "参数")
public class AiTalkAnswerStream {
    @NotBlank(message = "会话ID不能为空")
    @ApiModelProperty(value = "会话ID", example = "10")
    private String talkId;
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;
@@ -425,8 +426,6 @@
    @Override
    public Flux<FebsResponse> answerStreamV2(AiTalkAnswerStream dto) {
        String question = dto.getQuestion();
        //获取消息记录
        List<AiTalkItem> aiTalkItems = aiTalkItemService.getListByTalkId(dto.getTalkId());
        log.info("----- standard request -----");
        final ChatMessage systemMessage = ChatMessage.builder()
@@ -435,21 +434,25 @@
                .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);
        //获取消息记录
        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 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);
                    }
                }
            }
        }