package model_setting import ( "net/http" "one-api/setting/config" ) //var claudeHeadersSettings = map[string][]string{} // //var ClaudeThinkingAdapterEnabled = true //var ClaudeThinkingAdapterMaxTokens = 8192 //var ClaudeThinkingAdapterBudgetTokensPercentage = 0.8 // ClaudeSettings 定义Claude模型的配置 type ClaudeSettings struct { HeadersSettings map[string]map[string][]string `json:"model_headers_settings"` DefaultMaxTokens map[string]int `json:"default_max_tokens"` ThinkingAdapterEnabled bool `json:"thinking_adapter_enabled"` ThinkingAdapterBudgetTokensPercentage float64 `json:"thinking_adapter_budget_tokens_percentage"` } // 默认配置 var defaultClaudeSettings = ClaudeSettings{ HeadersSettings: map[string]map[string][]string{}, ThinkingAdapterEnabled: true, DefaultMaxTokens: map[string]int{ "default": 8192, }, ThinkingAdapterBudgetTokensPercentage: 0.8, } // 全局实例 var claudeSettings = defaultClaudeSettings func init() { // 注册到全局配置管理器 config.GlobalConfig.Register("claude", &claudeSettings) } // GetClaudeSettings 获取Claude配置 func GetClaudeSettings() *ClaudeSettings { // check default max tokens must have default key if _, ok := claudeSettings.DefaultMaxTokens["default"]; !ok { claudeSettings.DefaultMaxTokens["default"] = 8192 } return &claudeSettings } func (c *ClaudeSettings) WriteHeaders(originModel string, httpHeader *http.Header) { if headers, ok := c.HeadersSettings[originModel]; ok { for headerKey, headerValues := range headers { httpHeader.Del(headerKey) for _, headerValue := range headerValues { httpHeader.Add(headerKey, headerValue) } } } } func (c *ClaudeSettings) GetDefaultMaxTokens(model string) int { if maxTokens, ok := c.DefaultMaxTokens[model]; ok { return maxTokens } return c.DefaultMaxTokens["default"] }