feat(token_estimator): add concurrency support for multipliers retrieval
This commit is contained in:
+18
-11
@@ -3,6 +3,7 @@ package service
|
|||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -31,20 +32,26 @@ type multipliers struct {
|
|||||||
BasePad int // 基础起步消耗 (Start/End tokens)
|
BasePad int // 基础起步消耗 (Start/End tokens)
|
||||||
}
|
}
|
||||||
|
|
||||||
var multipliersMap = map[Provider]multipliers{
|
var (
|
||||||
Gemini: {
|
multipliersMap = map[Provider]multipliers{
|
||||||
Word: 1.15, Number: 2.8, CJK: 0.68, Symbol: 0.38, MathSymbol: 1.05, URLDelim: 1.2, AtSign: 2.5, Emoji: 1.08, Newline: 1.15, Space: 0.2, BasePad: 0,
|
Gemini: {
|
||||||
},
|
Word: 1.15, Number: 2.8, CJK: 0.68, Symbol: 0.38, MathSymbol: 1.05, URLDelim: 1.2, AtSign: 2.5, Emoji: 1.08, Newline: 1.15, Space: 0.2, BasePad: 0,
|
||||||
Claude: {
|
},
|
||||||
Word: 1.13, Number: 1.63, CJK: 1.21, Symbol: 0.4, MathSymbol: 4.52, URLDelim: 1.26, AtSign: 2.82, Emoji: 2.6, Newline: 0.89, Space: 0.39, BasePad: 0,
|
Claude: {
|
||||||
},
|
Word: 1.13, Number: 1.63, CJK: 1.21, Symbol: 0.4, MathSymbol: 4.52, URLDelim: 1.26, AtSign: 2.82, Emoji: 2.6, Newline: 0.89, Space: 0.39, BasePad: 0,
|
||||||
OpenAI: {
|
},
|
||||||
Word: 1.02, Number: 1.55, CJK: 0.85, Symbol: 0.4, MathSymbol: 2.68, URLDelim: 1.0, AtSign: 2.0, Emoji: 2.12, Newline: 0.5, Space: 0.42, BasePad: 0,
|
OpenAI: {
|
||||||
},
|
Word: 1.02, Number: 1.55, CJK: 0.85, Symbol: 0.4, MathSymbol: 2.68, URLDelim: 1.0, AtSign: 2.0, Emoji: 2.12, Newline: 0.5, Space: 0.42, BasePad: 0,
|
||||||
}
|
},
|
||||||
|
}
|
||||||
|
multipliersLock sync.RWMutex
|
||||||
|
)
|
||||||
|
|
||||||
// getMultipliers 根据厂商获取权重配置
|
// getMultipliers 根据厂商获取权重配置
|
||||||
func getMultipliers(p Provider) multipliers {
|
func getMultipliers(p Provider) multipliers {
|
||||||
|
multipliersLock.RLock()
|
||||||
|
defer multipliersLock.RUnlock()
|
||||||
|
|
||||||
switch p {
|
switch p {
|
||||||
case Gemini:
|
case Gemini:
|
||||||
return multipliersMap[Gemini]
|
return multipliersMap[Gemini]
|
||||||
|
|||||||
Reference in New Issue
Block a user