| 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 |
| } |
|
|
| |
| 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 |
| } |
|
|