| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package setting
- import (
- "encoding/json"
- "fmt"
- "one-api/common"
- "sync"
- )
- var ModelRequestRateLimitEnabled = false
- var ModelRequestRateLimitDurationMinutes = 1
- var ModelRequestRateLimitCount = 0
- var ModelRequestRateLimitSuccessCount = 1000
- var ModelRequestRateLimitGroup map[string][2]int
- var ModelRequestRateLimitGroupMutex sync.RWMutex
- func UpdateModelRequestRateLimitGroup(jsonStr string) error {
- ModelRequestRateLimitGroupMutex.Lock()
- defer ModelRequestRateLimitGroupMutex.Unlock()
- var newConfig map[string][2]int
- if jsonStr == "" || jsonStr == "{}" {
- ModelRequestRateLimitGroup = make(map[string][2]int)
- common.SysLog("Model request rate limit group config cleared")
- return nil
- }
- err := json.Unmarshal([]byte(jsonStr), &newConfig)
- if err != nil {
- return fmt.Errorf("failed to unmarshal ModelRequestRateLimitGroup config: %w", err)
- }
- ModelRequestRateLimitGroup = newConfig
- return nil
- }
- func GetGroupRateLimit(group string) (totalCount, successCount int, found bool) {
- ModelRequestRateLimitGroupMutex.RLock()
- defer ModelRequestRateLimitGroupMutex.RUnlock()
- if ModelRequestRateLimitGroup == nil {
- return 0, 0, false
- }
- limits, found := ModelRequestRateLimitGroup[group]
- if !found {
- return 0, 0, false
- }
- return limits[0], limits[1], true
- }
|