| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package ratio_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 defaultCreateCacheRatio = map[string]float64{}
- var cacheRatioMap map[string]float64
- var cacheRatioMapMutex sync.RWMutex
- // GetCacheRatioMap returns the cache ratio map
- func GetCacheRatioMap() map[string]float64 {
- cacheRatioMapMutex.RLock()
- defer cacheRatioMapMutex.RUnlock()
- return cacheRatioMap
- }
- // CacheRatio2JSONString converts the cache ratio map to a JSON string
- 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)
- }
- // UpdateCacheRatioByJSONString updates the cache ratio map from a JSON string
- func UpdateCacheRatioByJSONString(jsonStr string) error {
- cacheRatioMapMutex.Lock()
- defer cacheRatioMapMutex.Unlock()
- cacheRatioMap = make(map[string]float64)
- err := json.Unmarshal([]byte(jsonStr), &cacheRatioMap)
- if err == nil {
- InvalidateExposedDataCache()
- }
- return err
- }
- // GetCacheRatio returns the cache ratio for a model
- func GetCacheRatio(name string) (float64, bool) {
- cacheRatioMapMutex.RLock()
- defer cacheRatioMapMutex.RUnlock()
- ratio, ok := cacheRatioMap[name]
- if !ok {
- return 1, false // Default to 1 if not found
- }
- return ratio, true
- }
- func GetCreateCacheRatio(name string) (float64, bool) {
- ratio, ok := defaultCreateCacheRatio[name]
- if !ok {
- return 1.25, false // Default to 1.25 if not found
- }
- return ratio, true
- }
- func GetCacheRatioCopy() map[string]float64 {
- cacheRatioMapMutex.RLock()
- defer cacheRatioMapMutex.RUnlock()
- copyMap := make(map[string]float64, len(cacheRatioMap))
- for k, v := range cacheRatioMap {
- copyMap[k] = v
- }
- return copyMap
- }
|