Browse Source

新增接口 大模型问答调整

wangmiaomiao 11 tháng trước cách đây
mục cha
commit
e082b7d111

+ 38 - 0
slibra-admin/src/main/java/com/slibra/web/controller/business/FrontController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONWriter;
 import com.slibra.business.domain.TXinyiChatRecord;
 import com.slibra.business.domain.TXinyiWarningRecord;
 import com.slibra.business.mapper.*;
+import com.slibra.business.req.ChatReq;
 import com.slibra.business.req.DecisionReq;
 import com.slibra.business.service.IFrontService;
 import com.slibra.common.core.controller.BaseController;
@@ -13,6 +14,7 @@ import com.slibra.common.core.page.TableDataInfo;
 import com.slibra.common.exception.ServiceException;
 import com.slibra.common.utils.SecurityUtils;
 import com.slibra.common.utils.StringUtils;
+import com.slibra.common.utils.uuid.IdUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -213,6 +215,42 @@ public class FrontController extends BaseController {
     }
 
 
+    /**
+     * 删除问答记录(单条)
+     * @return
+     */
+    @GetMapping("/bigModel/chat/deleteOneChtById/{id}")
+    public AjaxResult deleteOneChtById(@PathVariable Long id)
+    {
+        log.info("进入了 删除问答记录(单条)  接口");
+        return AjaxResult.success(xinyiChatRecordMapper.deleteTXinyiChatRecordById(id));
+    }
+
+
+    /**
+     * 生成sessionId给聊天接口使用
+     * @return
+     */
+    @GetMapping("/bigModel/chat/generateSessionId")
+    public AjaxResult generateSessionId()
+    {
+        log.info("进入了 生成sessionId给聊天接口使用  接口");
+        return AjaxResult.success(IdUtils.simpleUUID());
+    }
+
+
+    /**
+     * 标记问题是否满意
+     * @return
+     */
+    @GetMapping("/bigModel/chat/isSatisfiedAnswer/{id}")
+    public AjaxResult isSatisfiedAnswer(ChatReq chatReq)
+    {
+        log.info("进入了 标记问题是否满意  接口");
+        return AjaxResult.success(frontService.isSatisfiedAnswer(chatReq));
+    }
+
+
     //--------------------下面是测试的方法--------------------
     @GetMapping("/test/data")
     public void testData(){

+ 13 - 13
slibra-admin/src/main/java/com/slibra/web/controller/business/GRPCController.java

@@ -139,17 +139,17 @@ public class GRPCController extends BaseController {
                     .buildPartial();
             outputStream = response.getOutputStream();
             Iterator<PredictionResponse> predictions = stub.streamPredictions(request);
-            outputStream.write("begin".getBytes());
-            outputStream.flush();
+            /*outputStream.write("begin".getBytes());
+            outputStream.flush();*/
             while (predictions.hasNext()) {
                 String responseStr = predictions.next().getPrediction().toStringUtf8();
                 log.info("决策流式返回的结果是{}", responseStr);
                 responseStr = JSON.parseObject(responseStr).getString("message");
                 if("complete".equals(responseStr)){
                     System.out.println("结尾语句并且是非JSON,无需处理");
-                    //结束语句也流式输出,但是并不记录下来
-                    outputStream.write(responseStr.getBytes());
-                    outputStream.flush();
+                    //结束语句也流式输出,但是并不记录下来  2024年5月24日11:15:23 也不返回前端
+                    /*outputStream.write(responseStr.getBytes());
+                    outputStream.flush();*/
                 }else{
 //                    sb.append(responseStr);
                     resultData.add(responseStr);
@@ -248,8 +248,8 @@ public class GRPCController extends BaseController {
                     .buildPartial();
             outputStream = response.getOutputStream();
             Iterator<PredictionResponse> predictions = stub.streamPredictions(request);
-            outputStream.write("begin".getBytes());
-            outputStream.flush();
+            /*outputStream.write("begin".getBytes());
+            outputStream.flush();*/
             //将结果记录到问答表
             while (predictions.hasNext()) {
                 String responseStr = predictions.next().getPrediction().toStringUtf8();
@@ -257,18 +257,18 @@ public class GRPCController extends BaseController {
                 responseStr = JSON.parseObject(responseStr).getString("message");
                 if("complete".equals(responseStr)){
                     System.out.println("结尾语句并且是非JSON,无需处理");
-                    //结束语句也流式输出,但是并不记录下来
-                    outputStream.write(responseStr.getBytes());
-                    outputStream.flush();
+                    //结束语句也流式输出,但是并不记录下来  2024年5月24日11:15:23 也不返回前端
+                    /*outputStream.write(responseStr.getBytes());
+                    outputStream.flush();*/
                 }else{
                     sb.append(responseStr);
                     outputStream.write(responseStr.getBytes());
                     outputStream.flush();
                 }
             }
-            //把SessionId返回给前端
-            outputStream.write(sessionId.getBytes());
-            outputStream.flush();
+            //把SessionId返回给前端  2024年5月24日11:15:23 也不返回前端
+            /*outputStream.write(sessionId.getBytes());
+            outputStream.flush();*/
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {

+ 3 - 1
slibra-system/src/main/java/com/slibra/business/service/IFrontService.java

@@ -1,9 +1,9 @@
 package com.slibra.business.service;
 
 import com.slibra.business.domain.TXinyiChatRecord;
-import com.slibra.business.domain.TXinyiDaily;
 import com.slibra.business.domain.TXinyiRecommendQa;
 import com.slibra.business.domain.TXinyiWarningRecord;
+import com.slibra.business.req.ChatReq;
 import com.slibra.business.res.XinyiIndustrySimple;
 
 import java.util.List;
@@ -26,4 +26,6 @@ public interface IFrontService
     List<TXinyiRecommendQa> recommendQAList(Integer type);
 
     TXinyiChatRecord qaDetailByWarningId(String warningId);
+
+    String isSatisfiedAnswer(ChatReq chatReq);
 }

+ 19 - 0
slibra-system/src/main/java/com/slibra/business/service/impl/FrontServiceImpl.java

@@ -6,9 +6,12 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.slibra.business.domain.*;
 import com.slibra.business.mapper.*;
+import com.slibra.business.req.ChatReq;
 import com.slibra.business.res.XinyiIndustrySimple;
 import com.slibra.business.service.IFrontService;
+import com.slibra.common.exception.ServiceException;
 import com.slibra.common.utils.DateUtils;
+import com.slibra.common.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -96,6 +99,22 @@ public class FrontServiceImpl implements IFrontService {
         return CollectionUtils.isEmpty(tXinyiChatRecords) ? null : tXinyiChatRecords.get(0);
     }
 
+    @Override
+    public String isSatisfiedAnswer(ChatReq chatReq) {
+        Long id = chatReq.getId();
+        Integer isSatisfied = chatReq.getIsSatisfied();
+        if(Objects.isNull(id) || Objects.isNull(isSatisfied))
+            throw new ServiceException("请输入正确的参数");
+        TXinyiChatRecord tXinyiChatRecord = this.xinyiChatRecordMapper.selectTXinyiChatRecordById(id);
+        if(!Objects.isNull(tXinyiChatRecord)){
+            tXinyiChatRecord.setIsSatisfied(isSatisfied);
+            tXinyiChatRecord.setUpdateBy(SecurityUtils.getUsername());
+            tXinyiChatRecord.setUpdateTime(DateUtils.getNowDate());
+            this.xinyiChatRecordMapper.updateTXinyiChatRecord(tXinyiChatRecord);
+        }
+        return "操作成功";
+    }
+
     private XinyiIndustrySimple calculateData(XinyiIndustrySimple xinyiIndustrySimple, LocalDateTime nowTime) {
         LocalDateTime yesterdaySameTime = nowTime.plusDays(-1);
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtils.YYYYMMDDHH_TS);