feat(gpt): 更新百度大模型并添加模型列表展示
- 添加了百度大模型列表的展示功能 - 百度大模型新增v2模式,支持ds模型 - 优化了代码格式和结构 - 版本号更新到 QQBot v.1.7.15
This commit is contained in:
parent
9ab99b22e2
commit
a7676fa6db
src/main/java/com/yutou/qqbot
@ -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);
|
||||
|
@ -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<Message> 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将图片转换为文本描述
|
||||
|
@ -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<BaseHandle<?>> 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", "宫廷玉液酒减去大锤等于多少"));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user