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