优化chatAI

This commit is contained in:
zhaoyuhang
2023-07-01 15:24:52 +08:00
parent dc4fe6215e
commit a944d1df14
6 changed files with 39 additions and 20 deletions

View File

@@ -65,11 +65,11 @@ wx:
aesKey: ${mallchat.wx.aesKey} # 接口配置里的EncodingAESKey值 aesKey: ${mallchat.wx.aesKey} # 接口配置里的EncodingAESKey值
chatai: chatai:
chatgpt: chatgpt:
use: true use: false
AIUserId: 10450 AIUserId: 10452
key: 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 key: xxxxx
chatglm2: chatglm2:
use: true use: false
url: http://vastmiao.natapp1.cc url: xxxxx
minute: 3 # 每个用户每3分钟可以请求一次 minute: 3 # 每个用户每3分钟可以请求一次
AIUserId: 10451 AIUserId: 10451

View File

@@ -28,7 +28,7 @@ public class ChatGLM2Handler extends AbstractChatAIHandler {
"没给钱,矿工了。。。。", "没给钱,矿工了。。。。",
"服务器被你们玩儿坏了。。。。", "服务器被你们玩儿坏了。。。。",
"你们这群人,我都不想理你们了。。。。", "你们这群人,我都不想理你们了。。。。",
"艾特我呢?那是另外的价钱。。。。", "艾特我那是另外的价钱。。。。",
"得加钱"); "得加钱");
@@ -67,6 +67,7 @@ public class ChatGLM2Handler extends AbstractChatAIHandler {
.create() .create()
.url(glm2Properties.getUrl()) .url(glm2Properties.getUrl())
.prompt(content) .prompt(content)
.timeout(glm2Properties.getTimeout())
.send(); .send();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@@ -123,7 +124,7 @@ public class ChatGLM2Handler extends AbstractChatAIHandler {
// if (CollectionUtils.isEmpty(extra.getAtUidList())) { // if (CollectionUtils.isEmpty(extra.getAtUidList())) {
// return false; // return false;
// } // }
// if (!extra.getAtUidList().contains(ChatAIServiceImpl.AI_USER_ID)) { // if (!extra.getAtUidList().contains(glm2Properties.getAIUserId())) {
// return false; // return false;
// } // }

View File

@@ -40,24 +40,36 @@ public class GPTChatAIHandler extends AbstractChatAIHandler {
Long uid = message.getFromUid(); Long uid = message.getFromUid();
Long chatNum; Long chatNum;
String text; String text;
if ((chatNum = userChatNumInrc(uid)) > chatGPTProperties.getLimit()) { if ((chatNum = getUserChatNum(uid)) > chatGPTProperties.getLimit()) {
text = "你今天已经和我聊了" + chatNum + "次了,我累了,明天再聊吧"; text = "你今天已经和我聊了" + chatNum + "次了,我累了,明天再聊吧";
} else { } else {
HttpResponse response = ChatGPTUtils.create(chatGPTProperties.getKey()) HttpResponse response = null;
try {
response = ChatGPTUtils.create(chatGPTProperties.getKey())
.proxyUrl(chatGPTProperties.getProxyUrl()) .proxyUrl(chatGPTProperties.getProxyUrl())
.model(chatGPTProperties.getModelName()) .model(chatGPTProperties.getModelName())
.prompt(content) .prompt(content)
.send(); .send();
text = ChatGPTUtils.parseText(response); text = ChatGPTUtils.parseText(response);
userChatNumInrc(uid);
} catch (Exception e) {
e.printStackTrace();
text = "我累了,明天再聊吧";
}
} }
return text; return text;
} }
private Long userChatNumInrc(Long uid) { private Long userChatNumInrc(Long uid) {
//todo:白名单
return RedisUtils.inc(RedisKey.getKey(RedisKey.USER_CHAT_NUM, uid), DateUtils.getEndTimeByToday().intValue(), TimeUnit.MILLISECONDS); return RedisUtils.inc(RedisKey.getKey(RedisKey.USER_CHAT_NUM, uid), DateUtils.getEndTimeByToday().intValue(), TimeUnit.MILLISECONDS);
} }
private Long getUserChatNum(Long uid) {
Long num = RedisUtils.get(RedisKey.getKey(RedisKey.USER_CHAT_NUM, uid), Long.class);
return num == null ? 0 : num;
}
@Override @Override
protected boolean supports(Message message) { protected boolean supports(Message message) {
@@ -73,7 +85,7 @@ public class GPTChatAIHandler extends AbstractChatAIHandler {
// if (CollectionUtils.isEmpty(extra.getAtUidList())) { // if (CollectionUtils.isEmpty(extra.getAtUidList())) {
// return false; // return false;
// } // }
// if (!extra.getAtUidList().contains(ChatAIServiceImpl.AI_USER_ID)) { // if (!extra.getAtUidList().contains(chatGPTProperties.getAIUserId())) {
// return false; // return false;
// } // }

View File

@@ -36,8 +36,13 @@ public class ChatGLM2Properties {
private String AIUserName; private String AIUserName;
/** /**
* 每个用户每3分钟可以请求一次 * 每个用户每?分钟可以请求一次
*/ */
private Long minute = 3L; private Long minute = 3L;
/**
* 超时
*/
private Integer timeout = 60*1000;
} }

View File

@@ -42,8 +42,6 @@ public class ChatGLM2Utils {
} }
public ChatGLM2Utils url(String url) { public ChatGLM2Utils url(String url) {
this.url = url; this.url = url;
return this; return this;
@@ -59,6 +57,7 @@ public class ChatGLM2Utils {
this.prompt = prompt; this.prompt = prompt;
return this; return this;
} }
public HttpResponse send() { public HttpResponse send() {
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.set("prompt", prompt); param.set("prompt", prompt);

View File

@@ -141,6 +141,8 @@ public class ChatGPTUtils {
param.set("top_p", topP); param.set("top_p", topP);
param.set("frequency_penalty", frequencyPenalty); param.set("frequency_penalty", frequencyPenalty);
param.set("presence_penalty", presencePenalty); param.set("presence_penalty", presencePenalty);
log.info("headers >>> " + headers);
log.info("param >>> " + param);
return HttpUtil.createPost(StringUtils.isNotBlank(proxyUrl) ? proxyUrl : URL) return HttpUtil.createPost(StringUtils.isNotBlank(proxyUrl) ? proxyUrl : URL)
.addHeaders(headers) .addHeaders(headers)
.body(param.toString()) .body(param.toString())