feat(gpt): 重构 GPT 管理器并添加新功能

- 重构 AbsGPTManager 抽象类,添加多个新方法
- 新增 sendMessage、textToImage、imageToText、getGPTVersion 等方法
- 添加 setMaxMessageCount 方法,用于设置最大消息数量
- 实现 getManager 方法,根据类获取相应的 GPT 管理器实例
- 更新 BaiduGPTManager 类,实现新增的方法
This commit is contained in:
Yutou 2025-02-05 10:33:12 +08:00
parent e7fae929a1
commit 56774792c1
3 changed files with 91 additions and 2 deletions

View File

@ -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 <T extends AbsGPTManager> AbsGPTManager getManager(Class<T> 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;
}
};
}
}

View File

@ -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;

View File

@ -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;