From 03fe508d7bfe5dd0c99ae0d20fea7515210251d3 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Thu, 9 Jan 2025 00:59:05 +0800 Subject: [PATCH] refactor: update headmasterHandler to handle user messages more flexibly and improve OpenAI client configuration with dynamic API key and model name from config --- handler/headmaster/headmaster.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/handler/headmaster/headmaster.go b/handler/headmaster/headmaster.go index 2e9ca51..ce8ae79 100644 --- a/handler/headmaster/headmaster.go +++ b/handler/headmaster/headmaster.go @@ -6,6 +6,7 @@ import ( "strings" "time" + "git.lxtend.com/qqbot/config" "git.lxtend.com/qqbot/constants" "git.lxtend.com/qqbot/handler" "git.lxtend.com/qqbot/model" @@ -24,35 +25,33 @@ func init() { } func headmasterHandler(msg model.Message) (reply model.Reply) { - from := util.From(msg.GroupInfo.GroupId, 0) + var from string + if msg.GroupInfo.IsGroupMsg { + from = util.From(msg.GroupInfo.GroupId, 0) + } else { + from = util.From(0, msg.UserId) + } if len(msg.RawMsg) > 7 && msg.RawMsg[0:7] == "校长 " { return model.Reply{ - ReplyMsg: ask(from, msg.RawMsg[7:]), + ReplyMsg: ask(from, fmt.Sprintf("来自%d(%s)的消息:%s", msg.UserId, msg.UserNickName, msg.RawMsg[7:])), ReferOriginMsg: true, FromMsg: msg, } } - // nickname := msg.UserNickName return model.Reply{ - ReplyMsg: ask(from, msg.RawMsg), + ReplyMsg: ask(from, fmt.Sprintf("来自%d(%s)的消息:%s", msg.UserId, msg.UserNickName, msg.RawMsg)), ReferOriginMsg: true, FromMsg: msg, } } func ask(from string, question string) (reply string) { - client := openai.NewClientWithConfig(openai.DefaultAzureConfig("none", "http://127.0.0.1:8000/v1")) + client := openai.NewClientWithConfig(openai.DefaultAzureConfig(config.ConfigManager.GetProperty("openai_api_key"), config.ConfigManager.GetProperty("openai_api_base_url"))) resp, err := client.CreateChatCompletion( context.Background(), openai.ChatCompletionRequest{ - Model: "minimind", + Model: config.ConfigManager.GetProperty("openai_model_name"), Messages: GenRequestFromUsr(from, question), - // Messages: []openai.ChatCompletionMessage{ - // { - // Role: openai.ChatMessageRoleUser, - // Content: question, - // }, - // }, }, ) @@ -71,6 +70,11 @@ func enterFormatter(msgIn string) string { func GenRequestFromUsr(from string, question string) []openai.ChatCompletionMessage { if _, ok := histories[from]; !ok || histories_time[from].Add(2*time.Minute).Before(time.Now()) { histories[from] = make([]openai.ChatCompletionMessage, 0) + histories[from] = append(histories[from], openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleSystem, + Content: config.ConfigManager.GetProperty("openai_prompt"), + }, + ) } histories[from] = append(histories[from], openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleUser, @@ -87,5 +91,9 @@ func AppendReplyToHistory(from string, reply string) { histories_time[from] = time.Now() for len(histories[from]) > 10 { histories[from] = histories[from][1:] + histories[from][0] = openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleSystem, + Content: config.ConfigManager.GetProperty("openai_prompt"), + } } }