Browse Source

fix: 模型修复token限制

master
wangxiang 2 years ago
parent
commit
2c965b095e
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 2
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java
  2. 15
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java
  3. 3
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/util/AiUtil.java

2
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java

@ -55,6 +55,6 @@ public class OpenAiConfigProperties { @@ -55,6 +55,6 @@ public class OpenAiConfigProperties {
private String systemRule = "是与AI助手的对话。助手乐于助人,富有创造力,聪明限制每次回答在120字以内不得超过120字。";
/** Context Window Max */
private String contextMessageMaxCount = "15";
private String contextMessageMaxCount = "14";
}

15
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
package com.cloud.kicc.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
@ -77,12 +78,6 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -77,12 +78,6 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
if (StrUtil.isBlank(imContent.getContent())) {
throw new CheckedException("提问内容不能为空请检查!");
}
// 保存用户发送聊天记录
imContent.setSendUserId(SecurityUtils.getCasUser().getId());
imContent.setSendTime(LocalDateTime.now());
imContent.setReceiveUserId(imContent.getReceiveUserId());
imContent.setReceiveTime(LocalDateTime.now());
super.save(imContent);
// 查询当前历史消息,进行AI上下文消息合并
List<ImContent> imContents = super.list(Wrappers.<ImContent>lambdaQuery().and(i ->
@ -101,6 +96,14 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -101,6 +96,14 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
chatMessage.setContent(item.getContent());
return chatMessage;
}).collect(Collectors.toList());
CollUtil.reverse(historyMessages);
// 保存用户发送聊天记录
imContent.setSendUserId(SecurityUtils.getCasUser().getId());
imContent.setSendTime(LocalDateTime.now());
imContent.setReceiveUserId(imContent.getReceiveUserId());
imContent.setReceiveTime(LocalDateTime.now());
super.save(imContent);
// Completion消息
ChatMessage completionMessage = new ChatMessage(ChatMessageRole.USER.value(), imContent.getContent());

3
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/util/AiUtil.java

@ -81,8 +81,7 @@ public class AiUtil { @@ -81,8 +81,7 @@ public class AiUtil {
* @param modelName 指定模型
*/
public void truncateToTokenLimit(String modelName, List<ChatMessage> messages) {
ModelType modelType = ModelType.fromName(modelName)
.orElseThrow(() -> new CheckedException(String.format("找不到指定的:%s模型请检查配置!", modelName)));;
ModelType modelType = ModelType.fromName(modelName).orElseThrow(() -> new CheckedException(String.format("找不到指定的:%s模型请检查配置!", modelName)));;
int sumTokens = TikTokensUtil.tokens(modelName, messages);
// 确保至少有一条消息(系统消息)保持不变
if (!messages.isEmpty()) {

Loading…
Cancel
Save