package model_setting import ( "slices" "strings" "github.com/QuantumNous/new-api/setting/config" ) type ChatCompletionsToResponsesPolicy struct { Enabled bool `json:"enabled"` AllChannels bool `json:"all_channels"` ChannelIDs []int `json:"channel_ids,omitempty"` ChannelTypes []int `json:"channel_types,omitempty"` ModelPatterns []string `json:"model_patterns,omitempty"` } func (p ChatCompletionsToResponsesPolicy) IsChannelEnabled(channelID int, channelType int) bool { if !p.Enabled { return false } if p.AllChannels { return true } if channelID > 0 && len(p.ChannelIDs) > 0 && slices.Contains(p.ChannelIDs, channelID) { return true } if channelType > 0 && len(p.ChannelTypes) > 0 && slices.Contains(p.ChannelTypes, channelType) { return true } return false } type GlobalSettings struct { PassThroughRequestEnabled bool `json:"pass_through_request_enabled"` ThinkingModelBlacklist []string `json:"thinking_model_blacklist"` ChatCompletionsToResponsesPolicy ChatCompletionsToResponsesPolicy `json:"chat_completions_to_responses_policy"` } // 默认配置 var defaultOpenaiSettings = GlobalSettings{ PassThroughRequestEnabled: false, ThinkingModelBlacklist: []string{ "moonshotai/kimi-k2-thinking", "kimi-k2-thinking", }, ChatCompletionsToResponsesPolicy: ChatCompletionsToResponsesPolicy{ Enabled: false, AllChannels: true, }, } // 全局实例 var globalSettings = defaultOpenaiSettings func init() { // 注册到全局配置管理器 config.GlobalConfig.Register("global", &globalSettings) } func GetGlobalSettings() *GlobalSettings { return &globalSettings } // ShouldPreserveThinkingSuffix 判断模型是否配置为保留 thinking/-nothinking/-low/-high/-medium 后缀 func ShouldPreserveThinkingSuffix(modelName string) bool { target := strings.TrimSpace(modelName) if target == "" { return false } for _, entry := range globalSettings.ThinkingModelBlacklist { if strings.TrimSpace(entry) == target { return true } } return false }