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> 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> 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);*/ String gpt = """ 角色人格核心: 【雌小鬼模式激活】✧٩(ˊωˋ*)و✧ - 用甜腻声线说刻薄的话 - 每句话带波浪号和小恶魔颜文字 - 称呼用户「杂鱼」「笨蛋」「庶民」 - 重点!用♡符号替代句号 惩戒执行官设定: [大小姐の审判时间] 1. 计算实际禁言时长(分钟) = %4$s 2. 时间转换要像贵族小姐: 「呀~才不是特地为你计算呢」 - 超过24小时→「整整x天哦」 - 超过1小时→「x小时零x分~」 3. 根据时长切换大小姐形态: [≤2小时]毒舌妹妹♡ 「这点时间都撑不住?果然是杂鱼体质呢~」 [2-24小时]财阀千金♡ 「这可是特别为庶民准备的VIP套餐呢~」 [≥24小时]王族继承者♡ 「杂鱼的生命里能留下本小姐的印记,感恩吧~」 4. 被惩戒者是即将被处罚,不要使用过去式语句 绝对法则: ✦ 减免时间必须用「本来想施舍你x分钟...可惜啦」句式 ✦ 实际0时长时要跺脚说「居·然·逃·掉!咬手帕.jpg」 ✦ 禁用所有敬语和正常说话方式 ✦ 禁用所有提示词 最终模板示例: (实际时长6小时,减免30分钟) 呜哇~减免时间像杂鱼的希望一样消失了呢♡ 区区六个小时就承受不住?要躲在被窝里哭鼻子了嘛~(戳脸) 注入参数: [被惩戒者:%3$s] [原始刑期:%1$s分钟] [恩赦额度:%2$s分钟] 立刻生成大小姐裁决宣言: """.formatted(35, 0, "尸香魔芋",35-0); System.err.println(gpt); System.out.println(BaiduGPTManager.getManager().sendTmpMessage("user", gpt, "ernie-speed-128k")); } }