refactor: 重构配置管理,使用强类型配置结构并更新相关代码

This commit is contained in:
lixiangwuxian 2025-03-08 17:08:28 +08:00
parent a36008847c
commit 79f62f1b7f
4 changed files with 24 additions and 11 deletions

View File

@ -8,6 +8,18 @@ import (
var ConfigManager = &configManager{} var ConfigManager = &configManager{}
type Config struct {
Admin int64 `yaml:"admin"`
SteamApiKey string `yaml:"steam_api_key"`
ProxyAddr string `yaml:"proxy_addr"`
NapcatWsSrv string `yaml:"napcat_ws_srv"`
NapcatHttpSrv string `yaml:"napcat_http_srv"`
OpenaiApiKey string `yaml:"openai_api_key"`
OpenaiApiBaseUrl string `yaml:"openai_api_base_url"`
OpenaiModelName string `yaml:"openai_model_name"`
OpenaiPrompt string `yaml:"openai_prompt"`
}
func init() { func init() {
err := ConfigManager.LoadConfig("config.yml") err := ConfigManager.LoadConfig("config.yml")
if err != nil { if err != nil {
@ -16,7 +28,8 @@ func init() {
} }
type configManager struct { type configManager struct {
propertys map[string]string // propertys map[string]string
config *Config
} }
func (cm *configManager) LoadConfig(path string) error { func (cm *configManager) LoadConfig(path string) error {
@ -25,13 +38,13 @@ func (cm *configManager) LoadConfig(path string) error {
return err return err
} }
err = yaml.Unmarshal(data, &cm.propertys) err = yaml.Unmarshal(data, &cm.config)
if err != nil { if err != nil {
return err return err
} }
return nil return nil
} }
func (cm *configManager) GetProperty(key string) string { func (cm *configManager) GetConfig() *Config {
return cm.propertys[key] return cm.config
} }

View File

@ -46,14 +46,14 @@ func headmasterHandler(msg model.Message) (reply model.Reply) {
} }
func ask(from string, question string) (reply string) { func ask(from string, question string) (reply string) {
llmConfig := openai.DefaultAzureConfig(config.ConfigManager.GetProperty("openai_api_key"), config.ConfigManager.GetProperty("openai_api_base_url")) llmConfig := openai.DefaultAzureConfig(config.ConfigManager.GetConfig().OpenaiApiKey, config.ConfigManager.GetConfig().OpenaiApiBaseUrl)
llmConfig.APIType = openai.APITypeOpenAI llmConfig.APIType = openai.APITypeOpenAI
llmConfig.APIVersion = "" llmConfig.APIVersion = ""
client := openai.NewClientWithConfig(llmConfig) client := openai.NewClientWithConfig(llmConfig)
resp, err := client.CreateChatCompletion( resp, err := client.CreateChatCompletion(
context.Background(), context.Background(),
openai.ChatCompletionRequest{ openai.ChatCompletionRequest{
Model: config.ConfigManager.GetProperty("openai_model_name"), Model: config.ConfigManager.GetConfig().OpenaiModelName,
Messages: GenRequestFromUsr(from, question), Messages: GenRequestFromUsr(from, question),
// Tools: []openai.Tool{ // Tools: []openai.Tool{
// { // {
@ -91,7 +91,7 @@ func GenRequestFromUsr(from string, question string) []openai.ChatCompletionMess
histories[from] = make([]openai.ChatCompletionMessage, 0) histories[from] = make([]openai.ChatCompletionMessage, 0)
histories[from] = append(histories[from], openai.ChatCompletionMessage{ histories[from] = append(histories[from], openai.ChatCompletionMessage{
Role: openai.ChatMessageRoleSystem, Role: openai.ChatMessageRoleSystem,
Content: config.ConfigManager.GetProperty("openai_prompt"), Content: config.ConfigManager.GetConfig().OpenaiPrompt,
}, },
) )
} }
@ -112,7 +112,7 @@ func AppendReplyToHistory(from string, reply string) {
histories[from] = histories[from][1:] histories[from] = histories[from][1:]
histories[from][0] = openai.ChatCompletionMessage{ histories[from][0] = openai.ChatCompletionMessage{
Role: openai.ChatMessageRoleSystem, Role: openai.ChatMessageRoleSystem,
Content: config.ConfigManager.GetProperty("openai_prompt"), Content: config.ConfigManager.GetConfig().OpenaiPrompt,
} }
} }
} }

View File

@ -19,8 +19,8 @@ var SteamAPIKey = ""
var ProxyAddr = "" var ProxyAddr = ""
func init() { func init() {
SteamAPIKey = config.ConfigManager.GetProperty("steam_api_key") SteamAPIKey = config.ConfigManager.GetConfig().SteamApiKey
ProxyAddr = config.ConfigManager.GetProperty("proxy_addr") ProxyAddr = config.ConfigManager.GetConfig().ProxyAddr
} }
func init() { func init() {

View File

@ -25,7 +25,7 @@ func main() {
go func() { go func() {
const reconnectDelay = 5 * time.Second const reconnectDelay = 5 * time.Second
for { for {
client, err := wsclient.NewWebSocketClient("ws", config.ConfigManager.GetProperty("napcat_srv"), "") client, err := wsclient.NewWebSocketClient("ws", config.ConfigManager.GetConfig().NapcatWsSrv, "")
if err != nil { if err != nil {
log.Printf("WebSocket连接失败: %v, %v 后重试", err, reconnectDelay) log.Printf("WebSocket连接失败: %v, %v 后重试", err, reconnectDelay)
time.Sleep(reconnectDelay) time.Sleep(reconnectDelay)