feat(gpt): 支持切换 GPT 模型

- 新增配置项 GPT 用于选择 GPT 模型类型
- 实现 BaiduGPT 和 SiliconGPT 两种模型的切换逻辑
- 优化 SiliconGPTManager 初始化,支持自定义模型配置
- 更新 QQBot 版本号至 1.7.12
This commit is contained in:
Yutou 2025-02-13 17:38:28 +08:00
parent 7637aa2fec
commit 9e062976ac
4 changed files with 32 additions and 6 deletions

View File

@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class QQBotApplication { public class QQBotApplication {
public static final String version = "QQBot v.1.7.11.5"; public static final String version = "QQBot v.1.7.12";
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("version = " + version); System.out.println("version = " + version);

View File

@ -5,6 +5,8 @@ import com.yutou.qqbot.data.baidu.Message;
import com.yutou.qqbot.data.gpt.OpenAiBean; import com.yutou.qqbot.data.gpt.OpenAiBean;
import com.yutou.qqbot.http.GPTApi; import com.yutou.qqbot.http.GPTApi;
import com.yutou.qqbot.http.GPTBuilder; import com.yutou.qqbot.http.GPTBuilder;
import com.yutou.qqbot.utlis.ConfigTools;
import com.yutou.qqbot.utlis.StringUtils;
import lombok.val; import lombok.val;
import java.io.File; import java.io.File;
@ -19,7 +21,12 @@ public class SiliconGPTManager extends AbsGPTManager {
private volatile static SiliconGPTManager instance = new SiliconGPTManager(); private volatile static SiliconGPTManager instance = new SiliconGPTManager();
private SiliconGPTManager() { private SiliconGPTManager() {
setModel("deepseek-ai/DeepSeek-R1-Distill-Qwen-7B"); val load = ConfigTools.load(ConfigTools.CONFIG, ConfigTools.GPT_SILICON, String.class);
String defModel = "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B";
if (!StringUtils.isEmpty(load)) {
defModel = load;
}
setModel(defModel);
} }
public static SiliconGPTManager getInstance() { public static SiliconGPTManager getInstance() {
@ -44,10 +51,10 @@ public class SiliconGPTManager extends AbsGPTManager {
} }
val builder = GPTBuilder.create(model); val builder = GPTBuilder.create(model);
List<Message> list=getMessageList(user); List<Message> list = getMessageList(user);
list.add(Message.create(message)); list.add(Message.create(message));
for (Message msg : list) { for (Message msg : list) {
builder.addMessage(msg.getRole(),msg.getContent()); builder.addMessage(msg.getRole(), msg.getContent());
} }
val response = GPTApi.getApi().completions(builder.build()).execute(); val response = GPTApi.getApi().completions(builder.build()).execute();
@ -70,7 +77,7 @@ public class SiliconGPTManager extends AbsGPTManager {
val choice = choices.get(choices.size() - 1); val choice = choices.get(choices.size() - 1);
val bot = Message.create(choice.getMessage().getContent(), true); val bot = Message.create(choice.getMessage().getContent(), true);
list.add(bot); list.add(bot);
return bot; return bot;
} catch (IOException e) { } catch (IOException e) {
@ -104,7 +111,7 @@ public class SiliconGPTManager extends AbsGPTManager {
} }
public static void main(String[] args) { public static void main(String[] args) {
String model="THUDM/glm-4-9b-chat"; String model = "THUDM/glm-4-9b-chat";
val message = AbsGPTManager.getManager(SiliconGPTManager.class) val message = AbsGPTManager.getManager(SiliconGPTManager.class)
.setModel(model) .setModel(model)
.sendMessage("user", "宫廷玉液酒的下一句是什么?"); .sendMessage("user", "宫廷玉液酒的下一句是什么?");

View File

@ -13,6 +13,7 @@ import com.yutou.qqbot.gpt.BaiduGPTManager;
import com.yutou.napcat.event.MessageEvent; import com.yutou.napcat.event.MessageEvent;
import com.yutou.qqbot.utlis.ConfigTools; import com.yutou.qqbot.utlis.ConfigTools;
import com.yutou.qqbot.utlis.HttpTools; import com.yutou.qqbot.utlis.HttpTools;
import com.yutou.qqbot.utlis.StringUtils;
import lombok.val; import lombok.val;
import java.io.File; import java.io.File;
@ -36,6 +37,22 @@ public class BaiduGPT extends Model {
}; };
} }
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 @Override
public String getModelName() { public String getModelName() {
return "百度文言一心GPT"; return "百度文言一心GPT";

View File

@ -34,6 +34,8 @@ public class ConfigTools {
public static final String BAIDU_GPT_SECRET_KEY = "baidu.gpt.SecretKey"; public static final String BAIDU_GPT_SECRET_KEY = "baidu.gpt.SecretKey";
public static final String TURNIP_PROPHET_SERVER = "turnip.server"; public static final String TURNIP_PROPHET_SERVER = "turnip.server";
public static final String TURNIP_PROPHET_SEND_TMP_GROUP = "turnip.send.tmp.group"; public static final String TURNIP_PROPHET_SEND_TMP_GROUP = "turnip.send.tmp.group";
public static final String GPT = "gpt.model";
public static final String GPT_SILICON = "silicon.gpt.version";
static { static {