diff --git a/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java new file mode 100644 index 0000000..c66831d --- /dev/null +++ b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java @@ -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(); +} diff --git a/src/main/java/com/yutou/qqbot/utlis/BaiduGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java similarity index 97% rename from src/main/java/com/yutou/qqbot/utlis/BaiduGPTManager.java rename to src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java index 1eb2832..e64537f 100644 --- a/src/main/java/com/yutou/qqbot/utlis/BaiduGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java @@ -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"); } diff --git a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java index 2c78f6f..00cd98b 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java @@ -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; diff --git a/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java b/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java index 83aff58..189f653 100644 --- a/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java +++ b/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java @@ -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;