🔖 chore: Allow disable token encoders (#226)
This commit is contained in:
parent
e2020cdd9f
commit
af8c249e3f
@ -90,6 +90,7 @@ var AutomaticEnableChannelEnabled = false
|
|||||||
var QuotaRemindThreshold = 1000
|
var QuotaRemindThreshold = 1000
|
||||||
var PreConsumedQuota = 500
|
var PreConsumedQuota = 500
|
||||||
var ApproximateTokenEnabled = false
|
var ApproximateTokenEnabled = false
|
||||||
|
var DISABLE_TOKEN_ENCODERS = false
|
||||||
var RetryTimes = 0
|
var RetryTimes = 0
|
||||||
var DefaultChannelWeight = uint(1)
|
var DefaultChannelWeight = uint(1)
|
||||||
var RetryCooldownSeconds = 5
|
var RetryCooldownSeconds = 5
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"one-api/types"
|
"one-api/types"
|
||||||
|
|
||||||
"github.com/MartialBE/tiktoken-go"
|
"github.com/MartialBE/tiktoken-go"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
var tokenEncoderMap = map[string]*tiktoken.Tiktoken{}
|
var tokenEncoderMap = map[string]*tiktoken.Tiktoken{}
|
||||||
@ -18,6 +19,11 @@ var gpt4TokenEncoder *tiktoken.Tiktoken
|
|||||||
var gpt4oTokenEncoder *tiktoken.Tiktoken
|
var gpt4oTokenEncoder *tiktoken.Tiktoken
|
||||||
|
|
||||||
func InitTokenEncoders() {
|
func InitTokenEncoders() {
|
||||||
|
if viper.GetBool("disable_token_encoders") {
|
||||||
|
DISABLE_TOKEN_ENCODERS = true
|
||||||
|
SysLog("token encoders disabled")
|
||||||
|
return
|
||||||
|
}
|
||||||
SysLog("initializing token encoders")
|
SysLog("initializing token encoders")
|
||||||
var err error
|
var err error
|
||||||
gpt35TokenEncoder, err = tiktoken.EncodingForModel("gpt-3.5-turbo")
|
gpt35TokenEncoder, err = tiktoken.EncodingForModel("gpt-3.5-turbo")
|
||||||
@ -39,6 +45,10 @@ func InitTokenEncoders() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getTokenEncoder(model string) *tiktoken.Tiktoken {
|
func getTokenEncoder(model string) *tiktoken.Tiktoken {
|
||||||
|
if DISABLE_TOKEN_ENCODERS {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
tokenEncoder, ok := tokenEncoderMap[model]
|
tokenEncoder, ok := tokenEncoderMap[model]
|
||||||
if ok {
|
if ok {
|
||||||
return tokenEncoder
|
return tokenEncoder
|
||||||
@ -64,7 +74,7 @@ func getTokenEncoder(model string) *tiktoken.Tiktoken {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getTokenNum(tokenEncoder *tiktoken.Tiktoken, text string) int {
|
func getTokenNum(tokenEncoder *tiktoken.Tiktoken, text string) int {
|
||||||
if ApproximateTokenEnabled {
|
if DISABLE_TOKEN_ENCODERS || ApproximateTokenEnabled {
|
||||||
return int(float64(len(text)) * 0.38)
|
return int(float64(len(text)) * 0.38)
|
||||||
}
|
}
|
||||||
return len(tokenEncoder.Encode(text, nil, nil))
|
return len(tokenEncoder.Encode(text, nil, nil))
|
||||||
|
@ -4,6 +4,7 @@ gin_mode: "release" # gin 模式,可选值为 "release" 或 "debug",默认
|
|||||||
debug: false # 是否启用调试模式,启用后将输出更多日志信息。
|
debug: false # 是否启用调试模式,启用后将输出更多日志信息。
|
||||||
log_dir: "./logs" # 日志目录
|
log_dir: "./logs" # 日志目录
|
||||||
session_secret: "" # 会话密钥,未设置则使用随机值。
|
session_secret: "" # 会话密钥,未设置则使用随机值。
|
||||||
|
disable_token_encoders: false # 是否禁用 token 编码器计算tokens。启用后 内存占用可减少 40MB 左右,但是stream模式下tokens计算不准确
|
||||||
|
|
||||||
# 数据库设置
|
# 数据库设置
|
||||||
sql_dsn: "" # 设置之后将使用指定数据库而非 SQLite,请使用 MySQL 或 PostgreSQL
|
sql_dsn: "" # 设置之后将使用指定数据库而非 SQLite,请使用 MySQL 或 PostgreSQL
|
||||||
|
Loading…
Reference in New Issue
Block a user