| | package operation_setting |
| |
|
| | import ( |
| | "encoding/json" |
| | "one-api/common" |
| | "sync" |
| | ) |
| |
|
| | var defaultCacheRatio = map[string]float64{ |
| | "gpt-4": 0.5, |
| | "o1": 0.5, |
| | "o1-2024-12-17": 0.5, |
| | "o1-preview-2024-09-12": 0.5, |
| | "o1-preview": 0.5, |
| | "o1-mini-2024-09-12": 0.5, |
| | "o1-mini": 0.5, |
| | "o3-mini": 0.5, |
| | "o3-mini-2025-01-31": 0.5, |
| | "gpt-4o-2024-11-20": 0.5, |
| | "gpt-4o-2024-08-06": 0.5, |
| | "gpt-4o": 0.5, |
| | "gpt-4o-mini-2024-07-18": 0.5, |
| | "gpt-4o-mini": 0.5, |
| | "gpt-4o-realtime-preview": 0.5, |
| | "gpt-4o-mini-realtime-preview": 0.5, |
| | "gpt-4.5-preview": 0.5, |
| | "gpt-4.5-preview-2025-02-27": 0.5, |
| | "deepseek-chat": 0.25, |
| | "deepseek-reasoner": 0.25, |
| | "deepseek-coder": 0.25, |
| | "claude-3-sonnet-20240229": 0.1, |
| | "claude-3-opus-20240229": 0.1, |
| | "claude-3-haiku-20240307": 0.1, |
| | "claude-3-5-haiku-20241022": 0.1, |
| | "claude-3-5-sonnet-20240620": 0.1, |
| | "claude-3-5-sonnet-20241022": 0.1, |
| | "claude-3-7-sonnet-20250219": 0.1, |
| | "claude-3-7-sonnet-20250219-thinking": 0.1, |
| | "claude-sonnet-4-20250514": 0.1, |
| | "claude-sonnet-4-20250514-thinking": 0.1, |
| | "claude-opus-4-20250514": 0.1, |
| | "claude-opus-4-20250514-thinking": 0.1, |
| | } |
| |
|
| | var defaultCreateCacheRatio = map[string]float64{ |
| | "claude-3-sonnet-20240229": 1.25, |
| | "claude-3-opus-20240229": 1.25, |
| | "claude-3-haiku-20240307": 1.25, |
| | "claude-3-5-haiku-20241022": 1.25, |
| | "claude-3-5-sonnet-20240620": 1.25, |
| | "claude-3-5-sonnet-20241022": 1.25, |
| | "claude-3-7-sonnet-20250219": 1.25, |
| | "claude-3-7-sonnet-20250219-thinking": 1.25, |
| | "claude-sonnet-4-20250514": 1.25, |
| | "claude-sonnet-4-20250514-thinking": 1.25, |
| | "claude-opus-4-20250514": 1.25, |
| | "claude-opus-4-20250514-thinking": 1.25, |
| | } |
| |
|
| | |
| |
|
| | var cacheRatioMap map[string]float64 |
| | var cacheRatioMapMutex sync.RWMutex |
| |
|
| | |
| | func GetCacheRatioMap() map[string]float64 { |
| | cacheRatioMapMutex.RLock() |
| | defer cacheRatioMapMutex.RUnlock() |
| | return cacheRatioMap |
| | } |
| |
|
| | |
| | func CacheRatio2JSONString() string { |
| | cacheRatioMapMutex.RLock() |
| | defer cacheRatioMapMutex.RUnlock() |
| | jsonBytes, err := json.Marshal(cacheRatioMap) |
| | if err != nil { |
| | common.SysError("error marshalling cache ratio: " + err.Error()) |
| | } |
| | return string(jsonBytes) |
| | } |
| |
|
| | |
| | func UpdateCacheRatioByJSONString(jsonStr string) error { |
| | cacheRatioMapMutex.Lock() |
| | defer cacheRatioMapMutex.Unlock() |
| | cacheRatioMap = make(map[string]float64) |
| | return json.Unmarshal([]byte(jsonStr), &cacheRatioMap) |
| | } |
| |
|
| | |
| | func GetCacheRatio(name string) (float64, bool) { |
| | cacheRatioMapMutex.RLock() |
| | defer cacheRatioMapMutex.RUnlock() |
| | ratio, ok := cacheRatioMap[name] |
| | if !ok { |
| | return 1, false |
| | } |
| | return ratio, true |
| | } |
| |
|
| | func GetCreateCacheRatio(name string) (float64, bool) { |
| | ratio, ok := defaultCreateCacheRatio[name] |
| | if !ok { |
| | return 1.25, false |
| | } |
| | return ratio, true |
| | } |
| |
|