- Replace ThinkingAdapterMaxTokens with a more flexible DefaultMaxTokens map - Add support for model-specific default max tokens configuration - Update relay and web interface to use the new configuration approach - Implement a fallback mechanism for default max tokens
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
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"]
|
|
}
|