Jelajahi Sumber

文心一言api

zhijiezhao 9 bulan lalu
induk
melakukan
392095d202

+ 2 - 0
src/main/java/com/caimei365/user/mapper/ChatMapper.java

@@ -25,4 +25,6 @@ public interface ChatMapper {
     void updateChatDialogue(ChatDialogueVo chatDialogueVo);
 
     List<ChatHistoryMessage> findHistoryQuestion(@Param("chatId") Integer chatId, @Param("userId") Integer userId);
+
+    Integer findLogCount(Integer userId);
 }

+ 8 - 1
src/main/java/com/caimei365/user/service/impl/ChatLogServiceImpl.java

@@ -26,6 +26,10 @@ public class ChatLogServiceImpl implements ChatLogService {
     @Override
     public ResponseJson<ChatCompletionResponse> getAnswer(Integer userId, String question) {
         log.info("dto------------->" + question);
+        Integer count = chatMapper.findLogCount(userId);
+        if (count > 10) {
+            return ResponseJson.error(-3, "今日对话轮次上限");
+        }
         ApiRequest chatRequest = new ApiRequest();
         ApiRequest.Message message = new ApiRequest.Message();
         question = question + ",内容不超过350字";
@@ -106,7 +110,7 @@ public class ChatLogServiceImpl implements ChatLogService {
     @Override
     public ResponseJson<ChatCompletionResponse> getSecondAnswer(Integer chatId, Integer userId, String question) {
         List<ChatHistoryMessage> historyMessage = chatMapper.findHistoryQuestion(chatId, userId);
-        if(historyMessage.size()<1){
+        if (historyMessage.size() < 1) {
             return ResponseJson.error("无历史记录");
         }
         ObjectMapper objectMapper = new ObjectMapper();
@@ -122,6 +126,9 @@ public class ChatLogServiceImpl implements ChatLogService {
             ApiRequest.Message resMes = new ApiRequest.Message();
             resMes.role("assistant").content(chatResp.getResult());
             messages.add(resMes);
+            if (messages.size() >= 20) {
+                return ResponseJson.error(-2, "超出对话轮次上限");
+            }
             /**
              * 正常轮次提问
              */

+ 10 - 3
src/main/resources/mapper/ChatMapper.xml

@@ -29,10 +29,10 @@
     <select id="findHistoryMessage" resultType="com.caimei365.user.model.dto.ChatHistoryMessage">
         select REPLACE(ccd.text, ',内容不超过350字', '') as message, ccd.identity, ccd.addTime
         from cm_chat_details ccd
-        left join cm_chat_dialogue ccdd on ccdd.id = ccd.chatId
+                 left join cm_chat_dialogue ccdd on ccdd.id = ccd.chatId
         where ccdd.userId = #{userId}
           and ccd.chatId = #{id}
-        ORDER BY ADDTIME ASC,identity ASC
+        ORDER BY ADDTIME ASC, identity ASC
     </select>
 
     <update id="updateChatDialogue">
@@ -44,10 +44,17 @@
     <select id="findHistoryQuestion" resultType="com.caimei365.user.model.dto.ChatHistoryMessage">
         select ccd.text as message, ccd.identity, ccd.addTime
         from cm_chat_details ccd
-        left join cm_chat_dialogue ccdd on ccdd.id = ccd.chatId
+                 left join cm_chat_dialogue ccdd on ccdd.id = ccd.chatId
         where ccdd.userId = #{userId}
           and ccd.chatId = #{chatId}
         ORDER BY ADDTIME DESC, identity ASC
         limit 2
     </select>
+
+    <select id="findLogCount" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM cm_chat_dialogue
+        WHERE DATE(ADDTIME) = CURDATE()
+          AND userId = #{userId}
+    </select>
 </mapper>