Yutou a7676fa6db feat(gpt): 更新百度大模型并添加模型列表展示
- 添加了百度大模型列表的展示功能
- 百度大模型新增v2模式,支持ds模型
- 优化了代码格式和结构
- 版本号更新到 QQBot v.1.7.15
2025-02-19 11:09:18 +08:00

200 lines
8.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.yutou.qqbot.models.Commands;
import com.yutou.napcat.QQDatabase;
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.gpt.SiliconGPTManager;
import com.yutou.qqbot.interfaces.DownloadInterface;
import com.yutou.qqbot.models.Model;
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.Log;
import com.yutou.qqbot.utlis.StringUtils;
import lombok.val;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@UseModel
public class BaiduGPT extends Model {
private Class<?> gptManager = SiliconGPTManager.class;
@Override
public boolean isUserPublic() {
return true;
}
@Override
public String[] getUsePowers() {
return new String[]{QQGroupCommands.GPT, QQGroupCommands.GPT_CLEAR};
}
public BaiduGPT() {
val load = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.GPT, String.class);
if (!StringUtils.isEmpty(load)) {
switch (load) {
case "baidu":
gptManager = BaiduGPTManager.class;
break;
case "silicon":
gptManager = SiliconGPTManager.class;
break;
}
} else {
gptManager = BaiduGPTManager.class;
}
}
@Override
public String getModelName() {
return "百度文言一心GPT";
}
@Override
public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
super.onMessage(qq, event, isGroup);
if (event.getTextMessage().equals(QQGroupCommands.GPT_CLEAR)) {
AbsGPTManager.getManager(gptManager).clear();
QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text("已经失忆捏"));
} else if ("百度模型列表".equals(event.getTextMessage())) {
val modelList = """
模型版本ernie-4.0-8k-latest
模型版本ernie-4.0-8k-preview
模型版本ernie-4.0-8k
模型版本ernie-4.0-turbo-8k-latest
模型版本ernie-4.0-turbo-8k-preview
模型版本ernie-4.0-turbo-8k
模型版本ernie-4.0-turbo-128k
模型版本ernie-3.5-8k-preview
模型版本ernie-3.5-8k
模型版本ernie-3.5-128k
模型版本ernie-speed-8k
模型版本ernie-speed-128k
模型版本ernie-speed-pro-128k
模型版本ernie-lite-8k
模型版本ernie-lite-pro-128k
模型版本ernie-tiny-8k
模型版本ernie-char-8k
模型版本ernie-char-fiction-8k
模型版本ernie-novel-8k
模型版本deepseek-v3
模型版本deepseek-r1
模型版本deepseek-r1-distill-qwen-32b
模型版本deepseek-r1-distill-qwen-14b
模型版本deepseek-r1-distill-qwen-7b
模型版本deepseek-r1-distill-qwen-1.5b
模型版本deepseek-r1-distill-llama-70b
模型版本deepseek-r1-distill-llama-8b
模型版本deepseek-r1-distill-qianfan-llama-70b
模型版本deepseek-r1-distill-qianfan-llama-8b
""";
QQBotManager.getInstance().sendMessage(qq, new Text(modelList));
} else if (event.isAtMe()) {
if (event.getTextMessage().contains("省流") || event.getTextMessage().contains("总结")) {
return;
}
if (event.getTextMessage().contains("画画")) {
val file = BaiduGPTManager.getManager().textToImage(String.valueOf(qq), event.getTextMessage().replace("@" + QQDatabase.getMe().getUserId(), "").replace("画画", "").trim());
Log.i("画图", event.getTextMessage());
if (file == null) {
QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text("画不出"));
} else {
QQBotManager.getInstance().sendMessage(file, qq, event.getMessageId().toString(), "好嘞");
}
return;
} else if (event.getTextMessage().contains("GPT切换到")) {
val text = event.getTextMessage().replace("@" + QQDatabase.getMe().getUserId(), "").replace("GPT切换到", "").trim();
List<BaseHandle<?>> list = new ArrayList<>();
if (isAdmin()) {
list.add(new At(user));
list.add(new Text("切换为" + text));
AbsGPTManager.getManager(gptManager).clear();
AbsGPTManager.getManager(gptManager).setModel(text);
QQBotManager.getInstance().sendMessage(event.isUser(), qq, list);
} else {
list.add(new At(user));
list.add(new Text("你没有权限"));
QQBotManager.getInstance().sendMessage(event.isUser(), qq, list);
}
return;
} else if (event.getTextMessage().contains("大模型切换到")) {
List<BaseHandle<?>> list = new ArrayList<>();
val text = event.getTextMessage().replace("@" + QQDatabase.getMe().getUserId(), "").replace("大模型切换到", "").trim();
if (text.contains("baidu") || text.contains("百度")) {
gptManager = BaiduGPTManager.class;
ConfigTools.save(ConfigTools.CONFIG, ConfigTools.GPT, "baidu");
} else if (text.contains("silicon") || text.contains("硅基")) {
gptManager = SiliconGPTManager.class;
ConfigTools.save(ConfigTools.CONFIG, ConfigTools.GPT, "silicon");
}
list.add(new At(user));
list.add(new Text("切换为" + gptManager.getSimpleName()));
AbsGPTManager.getManager(gptManager).clear();
QQBotManager.getInstance().sendMessage(event.isUser(), qq, list);
return;
}
if (checkImage()) {
parseImage(event, qq);
return;
}
Message message = AbsGPTManager.getManager(gptManager).sendMessage(
String.valueOf(qq),
event.getTextMessage().replace("@" + QQDatabase.getMe().getUserId(), "").trim());
String sb = "调用版本:" +
gptManager.getSimpleName()+
"\n" +
"使用模型:"+
AbsGPTManager.getManager(gptManager).getGPTVersion() +
"\n"+
message.getContent();
QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text(sb));
AbsGPTManager.getManager(gptManager).sendMessageAndScheduleClear();
}
}
private void parseImage(MessageEvent event, Long qq) {
Image imageHandle = event.findType(Image.class);
val replyHandle = event.findType(Reply.class);
if (replyHandle != null && imageHandle == null) {
imageHandle = getReply(replyHandle.getData().getId()).findType(Image.class);
}
if (imageHandle == null) {
return;
}
HttpTools.download(imageHandle.getData().getUrl(), "gpt_parse_image.png", new DownloadInterface() {
@Override
public void onDownload(File file) {
super.onDownload(file);
if (file == null) {
return;
}
val text = BaiduGPTManager.getManager().imageToText(String.valueOf(qq), file);
QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Reply(event.getMessageId()), new Text(text));
}
});
}
public static void main(String[] args) {
System.out.println(ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_VERSION));
val messageEvent = new MessageEvent();
// messageEvent.setMessage(new ArrayList<>());
// messageEvent.setRawMessage("");
// new BaiduGPT().onMessage(123456789L, messageEvent, false);
// BaiduGPTManager.getManager().clear();
// new BaiduGPT().onMessage(123456789L, messageEvent, false);
/* BaiduGPTManager.getManager().clear();
BaiduGPTManager.getManager().setModelFor35();
new BaiduGPT().onMessage(123456789L, messageEvent, false);*/
System.out.println(BaiduGPTManager.getManager().sendMessage("user", "宫廷玉液酒减去大锤等于多少"));
}
}