From 56774792c1148769553f3a0518aa98718d9d9a92 Mon Sep 17 00:00:00 2001 From: Yutou <583819556@qq.com> Date: Wed, 5 Feb 2025 10:33:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(gpt):=20=E9=87=8D=E6=9E=84=20GPT=20?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=99=A8=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构 AbsGPTManager 抽象类,添加多个新方法 - 新增 sendMessage、textToImage、imageToText、getGPTVersion 等方法 - 添加 setMaxMessageCount 方法,用于设置最大消息数量 - 实现 getManager 方法,根据类获取相应的 GPT 管理器实例 - 更新 BaiduGPTManager 类,实现新增的方法 --- .../com/yutou/qqbot/gpt/AbsGPTManager.java | 89 ++++++++++++++++++- .../com/yutou/qqbot/gpt/BaiduGPTManager.java | 3 +- .../yutou/qqbot/models/Commands/BaiduGPT.java | 1 + 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java index c66831d..98b9593 100644 --- a/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java @@ -3,11 +3,98 @@ package com.yutou.qqbot.gpt; import com.yutou.qqbot.data.baidu.Message; import java.io.File; +import java.util.concurrent.atomic.AtomicInteger; public abstract class AbsGPTManager { - public abstract void clear(); + protected static final AtomicInteger MAX_MESSAGE = new AtomicInteger(20); + /** + * 清除与GPT管理器相关的所有缓存或状态信息。 + */ + public abstract void clear(); + + /** + * 发送消息到指定用户。 + * + * @param user 接收消息的用户标识符。 + * @param message 要发送的消息内容。 + * @return 包含消息发送结果的Message对象。 + */ public abstract Message sendMessage(String user, String message); + + /** + * 将文本转换为图像。 + * + * @param user 用户标识符。 + * @param text 要转换为图像的文本内容。 + * @return 包含生成图像的File对象。 + */ public abstract File textToImage(String user, String text); + + /** + * 将图像转换为文本。 + * + * @param user 用户标识符。 + * @param file 包含要转换为文本的图像文件。 + * @return 提取的文本内容。 + */ public abstract String imageToText(String user, File file); + + /** + * 获取当前使用的GPT版本信息。 + * + * @return GPT版本字符串。 + */ public abstract String getGPTVersion(); + + /** + * 设置最大消息数量。 + * + * @param count 最大消息数量。 + * @return 设置后的最大消息数量。 + */ + public abstract int setMaxMessageCount(int count); + + /** + * 根据指定的类获取相应的GPT管理器实例。 + * + * @param tClass GPT管理器的具体实现类。 + * @return GPT管理器实例。 + */ + public static AbsGPTManager getManager(Class tClass) { + if (tClass == BaiduGPTManager.class) { + return BaiduGPTManager.getManager(); + } + return new AbsGPTManager() { + @Override + public void clear() { + + } + + @Override + public Message sendMessage(String user, String message) { + return null; + } + + @Override + public File textToImage(String user, String text) { + return null; + } + + @Override + public String imageToText(String user, File file) { + return ""; + } + + @Override + public String getGPTVersion() { + return ""; + } + + @Override + public int setMaxMessageCount(int count) { + return 0; + } + }; + } + } diff --git a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java index e64537f..928c213 100644 --- a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java @@ -23,7 +23,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; 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); //ConfigTools.load操作可以确保获取到相关参数,所以无需关心 @@ -61,6 +61,7 @@ public class BaiduGPTManager extends AbsGPTManager { return manager; } + @Override public int setMaxMessageCount(int count) { MAX_MESSAGE.set(count); return count; 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 00cd98b..b49469d 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java @@ -5,6 +5,7 @@ import com.yutou.napcat.handle.*; import com.yutou.qqbot.Annotations.UseModel; import com.yutou.qqbot.QQBotManager; import com.yutou.qqbot.data.baidu.Message; +import com.yutou.qqbot.gpt.AbsGPTManager; import com.yutou.qqbot.interfaces.DownloadInterface; import com.yutou.qqbot.models.Model; import com.yutou.qqbot.gpt.BaiduGPTManager;