From a7df4ed29d1ee27ac6cb92d2b6758f44c39f3671 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Mon, 18 Dec 2023 11:17:18 +0800 Subject: [PATCH] feat: ai --- .../system/controller/ChatGptController.java | 4 +-- .../system/service/IImContentService.java | 2 +- .../service/impl/ImContentServiceImpl.java | 27 +++++++++++-------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java index f3fde9b0..7629a883 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java @@ -46,10 +46,10 @@ public class ChatGptController { @Inner(false) @PostMapping("/chat/completions") - public R chatCompletions(@Valid @RequestBody ImContent imContent) { + public R chatCompletions(@Valid @RequestBody ImContent imContent, @RequestParam boolean contextEnable) { SecurityUtils.openInterfaceTemporaryLoginSession(imContent.getSendUserId()); iImContentService.rateLimitRequestHandler(); - return R.ok(iImContentService.chatCompletions(imContent)); + return R.ok(iImContentService.chatCompletions(imContent, contextEnable)); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IImContentService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IImContentService.java index bd48bb57..ba7c8fe1 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IImContentService.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IImContentService.java @@ -31,7 +31,7 @@ public interface IImContentService extends IService { * @param * @return */ - ImContent chatCompletions(ImContent imContent); + ImContent chatCompletions(ImContent imContent, boolean contextEnable); /** * 语音转文字 diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java index fdc4d91c..29caf1aa 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java @@ -1,7 +1,9 @@ package com.cloud.kicc.system.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -74,20 +76,23 @@ public class ImContentServiceImpl extends ServiceImpl imContents = super.list(Wrappers.lambdaQuery().eq(ImContent::getSessionId, imContent.getSessionId()) .last(String.format("LIMIT %s", openAiConfigProperties.getContextMessageMaxCount())) .orderByDesc(ImContent::getSendTime)); + List completionMessages = ListUtil.empty(); - // 历史上下文消息 - List historyMessages = imContents.stream().map(item -> { - ChatMessage chatMessage = new ChatMessage(); - chatMessage.setRole(StrUtil.equals(item.getSendUserId(), imContent.getSendUserId()) ? ChatMessageRole.USER.value() : ChatMessageRole.ASSISTANT.value()); - chatMessage.setContent(item.getContent()); - return chatMessage; - }).collect(Collectors.toList()); - CollUtil.reverse(historyMessages); + if (BooleanUtil.isTrue(contextEnable)) { + // 历史上下文消息 + completionMessages = imContents.stream().map(item -> { + ChatMessage chatMessage = new ChatMessage(); + chatMessage.setRole(StrUtil.equals(item.getSendUserId(), imContent.getSendUserId()) ? ChatMessageRole.USER.value() : ChatMessageRole.ASSISTANT.value()); + chatMessage.setContent(item.getContent()); + return chatMessage; + }).collect(Collectors.toList()); + CollUtil.reverse(completionMessages); + } if (StrUtil.isNotBlank(imContent.getContent())) { // 保存用户发送聊天记录 @@ -99,10 +104,10 @@ public class ImContentServiceImpl extends ServiceImpl choiceList = chatCompletionResult.getChoices(); if (choiceList.isEmpty()) {