|
|
@@ -245,17 +245,41 @@ var defaultCompletionRatio = map[string]float64{
|
|
|
"gpt-4-all": 2,
|
|
|
}
|
|
|
|
|
|
-func GetModelPriceMap() map[string]float64 {
|
|
|
+// InitModelSettings initializes all model related settings maps
|
|
|
+func InitModelSettings() {
|
|
|
+ // Initialize modelPriceMap
|
|
|
modelPriceMapMutex.Lock()
|
|
|
- defer modelPriceMapMutex.Unlock()
|
|
|
- if modelPriceMap == nil {
|
|
|
- modelPriceMap = defaultModelPrice
|
|
|
- }
|
|
|
+ modelPriceMap = defaultModelPrice
|
|
|
+ modelPriceMapMutex.Unlock()
|
|
|
+
|
|
|
+ // Initialize modelRatioMap
|
|
|
+ modelRatioMapMutex.Lock()
|
|
|
+ modelRatioMap = defaultModelRatio
|
|
|
+ modelRatioMapMutex.Unlock()
|
|
|
+
|
|
|
+ // Initialize CompletionRatio
|
|
|
+ CompletionRatioMutex.Lock()
|
|
|
+ CompletionRatio = defaultCompletionRatio
|
|
|
+ CompletionRatioMutex.Unlock()
|
|
|
+
|
|
|
+ // Initialize cacheRatioMap
|
|
|
+ cacheRatioMapMutex.Lock()
|
|
|
+ cacheRatioMap = defaultCacheRatio
|
|
|
+ cacheRatioMapMutex.Unlock()
|
|
|
+
|
|
|
+ common.SysLog("model settings initialized")
|
|
|
+}
|
|
|
+
|
|
|
+func GetModelPriceMap() map[string]float64 {
|
|
|
+ modelPriceMapMutex.RLock()
|
|
|
+ defer modelPriceMapMutex.RUnlock()
|
|
|
return modelPriceMap
|
|
|
}
|
|
|
|
|
|
func ModelPrice2JSONString() string {
|
|
|
- GetModelPriceMap()
|
|
|
+ modelPriceMapMutex.RLock()
|
|
|
+ defer modelPriceMapMutex.RUnlock()
|
|
|
+
|
|
|
jsonBytes, err := json.Marshal(modelPriceMap)
|
|
|
if err != nil {
|
|
|
common.SysError("error marshalling model price: " + err.Error())
|
|
|
@@ -272,7 +296,9 @@ func UpdateModelPriceByJSONString(jsonStr string) error {
|
|
|
|
|
|
// GetModelPrice 返回模型的价格,如果模型不存在则返回-1,false
|
|
|
func GetModelPrice(name string, printErr bool) (float64, bool) {
|
|
|
- GetModelPriceMap()
|
|
|
+ modelPriceMapMutex.RLock()
|
|
|
+ defer modelPriceMapMutex.RUnlock()
|
|
|
+
|
|
|
if strings.HasPrefix(name, "gpt-4-gizmo") {
|
|
|
name = "gpt-4-gizmo-*"
|
|
|
}
|
|
|
@@ -289,24 +315,6 @@ func GetModelPrice(name string, printErr bool) (float64, bool) {
|
|
|
return price, true
|
|
|
}
|
|
|
|
|
|
-func GetModelRatioMap() map[string]float64 {
|
|
|
- modelRatioMapMutex.Lock()
|
|
|
- defer modelRatioMapMutex.Unlock()
|
|
|
- if modelRatioMap == nil {
|
|
|
- modelRatioMap = defaultModelRatio
|
|
|
- }
|
|
|
- return modelRatioMap
|
|
|
-}
|
|
|
-
|
|
|
-func ModelRatio2JSONString() string {
|
|
|
- GetModelRatioMap()
|
|
|
- jsonBytes, err := json.Marshal(modelRatioMap)
|
|
|
- if err != nil {
|
|
|
- common.SysError("error marshalling model ratio: " + err.Error())
|
|
|
- }
|
|
|
- return string(jsonBytes)
|
|
|
-}
|
|
|
-
|
|
|
func UpdateModelRatioByJSONString(jsonStr string) error {
|
|
|
modelRatioMapMutex.Lock()
|
|
|
defer modelRatioMapMutex.Unlock()
|
|
|
@@ -315,7 +323,9 @@ func UpdateModelRatioByJSONString(jsonStr string) error {
|
|
|
}
|
|
|
|
|
|
func GetModelRatio(name string) (float64, bool) {
|
|
|
- GetModelRatioMap()
|
|
|
+ modelRatioMapMutex.RLock()
|
|
|
+ defer modelRatioMapMutex.RUnlock()
|
|
|
+
|
|
|
if strings.HasPrefix(name, "gpt-4-gizmo") {
|
|
|
name = "gpt-4-gizmo-*"
|
|
|
}
|
|
|
@@ -339,16 +349,15 @@ func GetDefaultModelRatioMap() map[string]float64 {
|
|
|
}
|
|
|
|
|
|
func GetCompletionRatioMap() map[string]float64 {
|
|
|
- CompletionRatioMutex.Lock()
|
|
|
- defer CompletionRatioMutex.Unlock()
|
|
|
- if CompletionRatio == nil {
|
|
|
- CompletionRatio = defaultCompletionRatio
|
|
|
- }
|
|
|
+ CompletionRatioMutex.RLock()
|
|
|
+ defer CompletionRatioMutex.RUnlock()
|
|
|
return CompletionRatio
|
|
|
}
|
|
|
|
|
|
func CompletionRatio2JSONString() string {
|
|
|
- GetCompletionRatioMap()
|
|
|
+ CompletionRatioMutex.RLock()
|
|
|
+ defer CompletionRatioMutex.RUnlock()
|
|
|
+
|
|
|
jsonBytes, err := json.Marshal(CompletionRatio)
|
|
|
if err != nil {
|
|
|
common.SysError("error marshalling completion ratio: " + err.Error())
|
|
|
@@ -364,7 +373,8 @@ func UpdateCompletionRatioByJSONString(jsonStr string) error {
|
|
|
}
|
|
|
|
|
|
func GetCompletionRatio(name string) float64 {
|
|
|
- GetCompletionRatioMap()
|
|
|
+ CompletionRatioMutex.RLock()
|
|
|
+ defer CompletionRatioMutex.RUnlock()
|
|
|
|
|
|
if strings.Contains(name, "/") {
|
|
|
if ratio, ok := CompletionRatio[name]; ok {
|
|
|
@@ -511,3 +521,14 @@ func GetAudioCompletionRatio(name string) float64 {
|
|
|
}
|
|
|
return 2
|
|
|
}
|
|
|
+
|
|
|
+func ModelRatio2JSONString() string {
|
|
|
+ modelRatioMapMutex.RLock()
|
|
|
+ defer modelRatioMapMutex.RUnlock()
|
|
|
+
|
|
|
+ jsonBytes, err := json.Marshal(modelRatioMap)
|
|
|
+ if err != nil {
|
|
|
+ common.SysError("error marshalling model ratio: " + err.Error())
|
|
|
+ }
|
|
|
+ return string(jsonBytes)
|
|
|
+}
|