feat(gpt): 重构 GPT 管理器并添加新功能
- 重构 AbsGPTManager 抽象类,添加多个新方法 - 新增 sendMessage、textToImage、imageToText、getGPTVersion 等方法 - 添加 setMaxMessageCount 方法,用于设置最大消息数量 - 实现 getManager 方法,根据类获取相应的 GPT 管理器实例 - 更新 BaiduGPTManager 类,实现新增的方法
This commit is contained in:
parent
e7fae929a1
commit
56774792c1
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user