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