diff --git a/src/main/java/com/yutou/qqbot/QQBotApplication.java b/src/main/java/com/yutou/qqbot/QQBotApplication.java index e1fd3da..eefb126 100644 --- a/src/main/java/com/yutou/qqbot/QQBotApplication.java +++ b/src/main/java/com/yutou/qqbot/QQBotApplication.java @@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class QQBotApplication { - public static final String version = "QQBot v.1.7.14"; + public static final String version = "QQBot v.1.7.15"; public static void main(String[] args) { System.out.println("version = " + version); diff --git a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java index 7c80845..ecf0154 100644 --- a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java @@ -1,7 +1,9 @@ package com.yutou.qqbot.gpt; import com.baidubce.qianfan.Qianfan; +import com.baidubce.qianfan.QianfanV2; import com.baidubce.qianfan.model.chat.ChatResponse; +import com.baidubce.qianfan.model.chat.v2.response.ResponseV2; import com.baidubce.qianfan.model.image.Image2TextResponse; import com.baidubce.qianfan.model.image.Text2ImageResponse; import com.yutou.qqbot.data.baidu.Message; @@ -29,13 +31,15 @@ public class BaiduGPTManager extends AbsGPTManager { //ConfigTools.load操作可以确保获取到相关参数,所以无需关心 private static final String AccessKey = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_ACCESS_KEY, String.class); private static final String SecretKey = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_SECRET_KEY, String.class); - private final static String modelFor40 = "ERNIE-4.0-8K"; - private final static String modelFor35 = "ERNIE-Speed-128K"; + private final static String modelFor40 = "ernie-4.0-8k"; + private final static String modelFor35 = "ernie-speed-128k"; private final Qianfan qianfan; + private final QianfanV2 qianfanV2; private BaiduGPTManager() { qianfan = new Qianfan(AccessKey, SecretKey); + qianfanV2 = new Qianfan(AccessKey, SecretKey).v2(); String savedVersion = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.BAIDU_GPT_VERSION, String.class); if (StringUtils.isEmpty(savedVersion) || (!"3.5".equals(savedVersion) && !"4.0".equals(savedVersion))) { savedVersion = "3.5"; @@ -99,13 +103,13 @@ public class BaiduGPTManager extends AbsGPTManager { try { List list = getMessageList(user); list.add(Message.create(message)); - val builder = qianfan.chatCompletion() + val builder = qianfanV2.chatCompletion() .model(model); for (Message msg : list) { builder.addMessage(msg.getRole(), msg.getContent()); } - ChatResponse chatResponse = builder.execute(); - Message response = Message.create(chatResponse.getResult(), true); + ResponseV2 chatResponse = qianfanV2.chatCompletion(builder.build()); + Message response = Message.create(chatResponse.getChoices().get(0).getMessage().getContent(), true); synchronized (list) { list.add(response); if (list.size() > MAX_MESSAGE.get()) { @@ -134,7 +138,8 @@ public class BaiduGPTManager extends AbsGPTManager { * @return 返回生成的图像文件对象,如果转换过程中发生错误,则返回null */ @Override - public File textToImage(String user, String text) { + public File textToImage(String user, String text) { + try { // 使用QianFan的text2Image方法将文本转换为图像数据 Text2ImageResponse response = qianfan.text2Image() .prompt(text) @@ -148,13 +153,15 @@ public class BaiduGPTManager extends AbsGPTManager { // 将解码后的图像数据复制到图像文件中,替换现有文件 Files.copy(inputStream, imageFile.toPath(), StandardCopyOption.REPLACE_EXISTING); return imageFile; - } catch (Exception e) { - // 如果在图像文件生成过程中发生错误,记录错误信息 - Log.e(e); } - // 如果发生错误,返回null - return null; + } catch (Exception e) { + // 如果在图像文件生成过程中发生错误,记录错误信息 + Log.e(e); } + // 如果发生错误,返回null + return null; +} + /** * 将图片转换为文本描述 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 381e7a4..04bf97c 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java @@ -32,16 +32,13 @@ public class BaiduGPT extends Model { @Override public String[] getUsePowers() { - return new String[]{ - QQGroupCommands.GPT, - QQGroupCommands.GPT_CLEAR - }; + 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){ + if (!StringUtils.isEmpty(load)) { + switch (load) { case "baidu": gptManager = BaiduGPTManager.class; break; @@ -49,7 +46,7 @@ public class BaiduGPT extends Model { gptManager = SiliconGPTManager.class; break; } - }else{ + } else { gptManager = BaiduGPTManager.class; } } @@ -65,13 +62,47 @@ public class BaiduGPT extends Model { 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()); + Log.i("画图", event.getTextMessage()); if (file == null) { QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text("画不出")); } else { @@ -93,14 +124,14 @@ public class BaiduGPT extends Model { QQBotManager.getInstance().sendMessage(event.isUser(), qq, list); } return; - }else if(event.getTextMessage().contains("大模型切换到")){ + } 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; + 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; + } else if (text.contains("silicon") || text.contains("硅基")) { + gptManager = SiliconGPTManager.class; ConfigTools.save(ConfigTools.CONFIG, ConfigTools.GPT, "silicon"); } list.add(new At(user)); @@ -155,13 +186,14 @@ public class BaiduGPT extends Model { 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); +// 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", "宫廷玉液酒减去大锤等于多少")); } }