Administrator
2025-09-02 b278f87c6e9bbd0fadfc3f7097e54cc72a162480
feat(ai): 新增 AI 流式回答功能 V3 版本

- 添加 AiPromptEnum 枚举类,用于定义 AI 提示语
- 在 AiService 接口中新增 getSystemSetAiType 方法,用于获取系统设置的 AI 类型
- 在 AiServiceImpl 中实现 getSystemSetAiType 方法,从数据字典中获取 AI 类型
- 修改 AiTalkAnswerStream 类,移除 type 字段
- 在 AiTalkService 接口中新增 answerStreamV3 方法,用于流式回答 V3 版本
- 实现 AiTalkServiceImpl 中的 answerStreamV3 方法,支持流式回答 V3 版本
- 在 ApiAiTalkController 中添加 answerStreamV3 控制器方法,处理 V3 版本流式回答请求
- 更新 LlmStrategyContextEnum 枚举类,添加 LLM_STRATEGY 系统设置 AI 模型平台类型
1 files modified
6 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/TestController.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/TestController.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.ai.mapper.AiMemberMapper;
import cc.mrbird.febs.ai.req.talk.AiTalkAnswerStream;
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo;
import cc.mrbird.febs.ai.service.AiService;
import cc.mrbird.febs.ai.strategy.enumerates.LlmStrategyEnum;
import cc.mrbird.febs.ai.strategy.LlmStrategyFactory;
import cc.mrbird.febs.ai.strategy.param.LlmStrategyDto;
@@ -55,6 +56,7 @@
    private final MallMemberMapper mallMemberMapper;
    private final AiMemberMapper aiMemberMapper;
    private final AiService aiService;
    private final RedisUtils redisUtils;
    private final LlmStrategyFactory llmStrategyFactory;
    @ApiOperation(value = "登录测试", notes = "登录测试")
@@ -164,7 +166,7 @@
            llmStrategyDto.setContent(dto.getQuestion());
            llmStrategyDtoList.add(llmStrategyDto);
        }
        String modelName = LlmStrategyEnum.getName(dto.getType());
        String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType());
        return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreaming(llmStrategyDtoList);
    }
@@ -193,7 +195,7 @@
            llmStrategyDto.setContent(dto.getQuestion());
            llmStrategyDtoList.add(llmStrategyDto);
        }
        String modelName = LlmStrategyEnum.getName(dto.getType());
        String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType());
        return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeNonStreaming(llmStrategyDtoList);
    }