From 576c842301a9fabd7719fdb3539806bf650ae31d Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 22 Aug 2025 15:15:31 +0800 Subject: [PATCH] feat(ai): 新增产品知识点列表接口并优化 AI 思维链输出 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java | 12 ++++++++++-- src/main/java/cc/mrbird/febs/ai/service/AiProductService.java | 2 ++ src/main/java/cc/mrbird/febs/ai/controller/product/ApiProductController.java | 11 +++++++++++ src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkStreamVo.java | 3 +++ src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java | 11 +++++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/controller/product/ApiProductController.java b/src/main/java/cc/mrbird/febs/ai/controller/product/ApiProductController.java index 0fface7..0507a5c 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/product/ApiProductController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/product/ApiProductController.java @@ -4,6 +4,7 @@ import cc.mrbird.febs.ai.req.product.ApiProductPageDto; import cc.mrbird.febs.ai.res.product.ApiProductInfoVo; import cc.mrbird.febs.ai.res.product.ApiProductVo; +import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.ai.service.AiProductService; import cc.mrbird.febs.common.entity.FebsResponse; import io.swagger.annotations.Api; @@ -51,4 +52,14 @@ return aiProductService.productInfo(dto); } + @ApiOperation(value = "知识点列表", notes = "知识点列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiProductPointVo.class) + }) + @PostMapping(value = "/pointInfoList") + public FebsResponse pointInfoList(@RequestBody @Validated ApiProductInfoDto dto) { + + return aiProductService.pointInfoList(dto); + } + } diff --git a/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkStreamVo.java b/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkStreamVo.java index 69be4c1..b6b2c54 100644 --- a/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkStreamVo.java +++ b/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkStreamVo.java @@ -13,4 +13,7 @@ @ApiModelProperty(value = "消息") private String content; + + @ApiModelProperty(value = "思考") + private String reasoningContent; } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java index 1d4a9fa..70400e2 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java @@ -26,4 +26,6 @@ FebsResponse productList(ApiProductPageDto dto); FebsResponse productInfo(ApiProductInfoDto dto); + + FebsResponse pointInfoList(ApiProductInfoDto dto); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java index 566e82f..774df76 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java @@ -7,6 +7,7 @@ import cc.mrbird.febs.ai.req.product.ApiProductPageDto; import cc.mrbird.febs.ai.res.product.ApiProductInfoVo; import cc.mrbird.febs.ai.res.product.ApiProductVo; +import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.ai.service.*; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.util.StrUtil; @@ -15,6 +16,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.util.List; /** * AI产品表 Service实现类 @@ -80,4 +83,12 @@ vo.setProductPointList(aiProductPointService.listByProductId(id)); return new FebsResponse().success().data(vo); } + + @Override + public FebsResponse pointInfoList(ApiProductInfoDto dto) { + String id = dto.getId(); + AiProduct entity = this.getById(id); + List<ApiProductPointVo> apiProductPointVos = aiProductPointService.listByProductId(id); + return new FebsResponse().success().data(apiProductPointVos); + } } 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 7e1e566..fab59c1 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 @@ -379,6 +379,7 @@ .model("ep-20250805124033-lhxbf") .messages(messages) .stream(true) + .thinking(new ChatCompletionRequest.ChatCompletionRequestThinking("enabled")) .temperature(0.7) .topP(0.9) .maxTokens(2048) @@ -396,11 +397,18 @@ return new FebsResponse().success().data("END"); } - Object contentObj = choice.getMessage().getContent(); - String content = contentObj == null ? "" : contentObj.toString(); ApiMemberTalkStreamVo apiMemberTalkStreamVo = new ApiMemberTalkStreamVo(); + // 判断是否触发深度思考,触发则打印模型输出的思维链内容 + ChatMessage message = choice.getMessage(); + if (message.getReasoningContent()!= null &&!message.getReasoningContent().isEmpty()) { + apiMemberTalkStreamVo.setReasoningContent(message.getReasoningContent()); + System.out.print(message.getReasoningContent()); + } + + String content = message.getContent() == null ? "" : message.getContent().toString(); apiMemberTalkStreamVo.setContent(content); + System.out.print(content); return new FebsResponse().success().data(apiMemberTalkStreamVo); }) .onErrorResume(throwable -> { -- Gitblit v1.9.1