refactor(gpt): 重构 GPT 相关代码并优化功能
- 新增 AbsGPTManager 抽象类,定义 GPT 管理器的通用接口 - 重命名 BaiduGPTManager 类,使其位于 com.yutou.qqbot.gpt 包中 - 更新相关引用和依赖 - 优化部分代码结构,提高可维护性
This commit is contained in:
parent
09305ae824
commit
e7fae929a1
13
src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java
Normal file
13
src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.yutou.qqbot.gpt;
|
||||
|
||||
import com.yutou.qqbot.data.baidu.Message;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public abstract class AbsGPTManager {
|
||||
public abstract void clear();
|
||||
public abstract Message sendMessage(String user, String message);
|
||||
public abstract File textToImage(String user, String text);
|
||||
public abstract String imageToText(String user, File file);
|
||||
public abstract String getGPTVersion();
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
package com.yutou.qqbot.utlis;
|
||||
package com.yutou.qqbot.gpt;
|
||||
|
||||
import com.baidubce.qianfan.Qianfan;
|
||||
import com.baidubce.qianfan.model.chat.ChatResponse;
|
||||
import com.baidubce.qianfan.model.image.Image2TextResponse;
|
||||
import com.baidubce.qianfan.model.image.Text2ImageResponse;
|
||||
import com.yutou.qqbot.data.baidu.Message;
|
||||
import com.yutou.qqbot.utlis.ConfigTools;
|
||||
import com.yutou.qqbot.utlis.Log;
|
||||
import com.yutou.qqbot.utlis.StringUtils;
|
||||
import lombok.val;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
@ -19,7 +22,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class BaiduGPTManager {
|
||||
public class BaiduGPTManager extends AbsGPTManager {
|
||||
private static final AtomicInteger MAX_MESSAGE = new AtomicInteger(20);
|
||||
private static final String AppID = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_APPID, String.class);
|
||||
private static final String ApiKey = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_API_KEY, String.class);
|
||||
@ -76,6 +79,7 @@ public class BaiduGPTManager {
|
||||
/**
|
||||
* 这里确实是需要清空所有数据
|
||||
*/
|
||||
@Override
|
||||
public synchronized void clear() { // 添加同步
|
||||
msgMap.clear();
|
||||
for (AtomicBoolean value : userLocks.values()) {
|
||||
@ -101,6 +105,7 @@ public class BaiduGPTManager {
|
||||
System.out.println("输出内容:" + response.getResult());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message sendMessage(String user, String message) {
|
||||
// 获取或创建用户锁
|
||||
AtomicBoolean lock = userLocks.computeIfAbsent(user, k -> new AtomicBoolean(false));
|
||||
@ -152,6 +157,7 @@ public class BaiduGPTManager {
|
||||
* @param text 要转换为图像的文本
|
||||
* @return 返回生成的图像文件对象,如果转换过程中发生错误,则返回null
|
||||
*/
|
||||
@Override
|
||||
public File textToImage(String user, String text) {
|
||||
// 使用QianFan的text2Image方法将文本转换为图像数据
|
||||
Text2ImageResponse response = qianfan.text2Image()
|
||||
@ -181,6 +187,7 @@ public class BaiduGPTManager {
|
||||
* @param file 要转换的图片文件
|
||||
* @return 转换后的文本描述,如果转换失败则返回null
|
||||
*/
|
||||
@Override
|
||||
public String imageToText(String user, File file) {
|
||||
// 将file文件转换成base64的代码
|
||||
try {
|
||||
@ -203,6 +210,7 @@ public class BaiduGPTManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGPTVersion() {
|
||||
return (model.equals(modelFor35) ? "3.5" : "4.0");
|
||||
}
|
@ -2,21 +2,16 @@ package com.yutou.qqbot.models.Commands;
|
||||
|
||||
import com.yutou.napcat.QQDatabase;
|
||||
import com.yutou.napcat.handle.*;
|
||||
import com.yutou.napcat.http.NapCatApi;
|
||||
import com.yutou.qqbot.Annotations.UseModel;
|
||||
import com.yutou.qqbot.QQBotApplication;
|
||||
import com.yutou.qqbot.QQBotManager;
|
||||
import com.yutou.qqbot.data.baidu.Message;
|
||||
import com.yutou.qqbot.data.baidu.ResponseMessage;
|
||||
import com.yutou.qqbot.interfaces.DownloadInterface;
|
||||
import com.yutou.qqbot.models.Model;
|
||||
import com.yutou.qqbot.utlis.BaiduGPTManager;
|
||||
import com.yutou.qqbot.gpt.BaiduGPTManager;
|
||||
import com.yutou.napcat.event.MessageEvent;
|
||||
import com.yutou.qqbot.utlis.ConfigTools;
|
||||
import com.yutou.qqbot.utlis.HttpTools;
|
||||
import com.yutou.qqbot.utlis.StringUtils;
|
||||
import lombok.val;
|
||||
import org.apache.catalina.valves.JsonErrorReportValve;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
@ -3,10 +3,9 @@ package com.yutou.qqbot.utlis;
|
||||
import com.yutou.napcat.QQDatabase;
|
||||
import com.yutou.napcat.model.GroupBean;
|
||||
import com.yutou.qqbot.Annotations.UseModel;
|
||||
import com.yutou.qqbot.QQBotManager;
|
||||
import com.yutou.qqbot.QQNumberManager;
|
||||
import com.yutou.qqbot.gpt.BaiduGPTManager;
|
||||
import com.yutou.qqbot.models.Model;
|
||||
import lombok.val;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
Loading…
Reference in New Issue
Block a user