Documentation
¶
Index ¶
- Constants
- Variables
- func ConfModAiRateLimitCheck(cfg *ConfModAiRateLimit, confRoot string) error
- type AiRateLimitConf
- type AiRateLimitConfFile
- type ConfModAiRateLimit
- type LimitRulesConf
- type LimitRulesConfFile
- type LimiterStats
- type ModuleAiRateLimit
- type PolicyConf
- type PolicyConfFile
- type PolicyLimiterContext
- type ProductRuleConf
- type ProductRuleConfFile
- type ProductRuleConfList
- type ProductRuleConfListFile
- type PrometheusStates
- type RPMRuleConf
- type RPMRuleConfFile
- type TPMRuleConf
- type TPMRuleConfFile
- type TpmLimiterData
Constants ¶
View Source
const ( ModAiRateLimit = "mod_ai_rate_limit" ModAiRateLimitDiff = "mod_ai_rate_limit_diff" CtxPolicyLimiter = "mod_ai_rate_limit.policy_limiter_ctx" )
View Source
const (
DiffCounterInterval = 20 // interval for diff counter (in seconds)
)
Variables ¶
View Source
var CounterKeys = []string{
"REQ_AI_RATE_MEET_THRESHOLD",
}
key for counter of mod_ai_rate_limit
View Source
var (
ErrAiRateLimit = errors.New("AI_RATE_LIMIT") // deny by mod_ai_rate_limit
)
Functions ¶
func ConfModAiRateLimitCheck ¶
func ConfModAiRateLimitCheck(cfg *ConfModAiRateLimit, confRoot string) error
Types ¶
type AiRateLimitConf ¶
type AiRateLimitConf struct {
Version *string
Config *map[string]*ProductRuleConfList
RateLimitPolicies *map[string]*PolicyConf
ApikeyRatePoliciesBindings *map[string][]string
}
func AiRateLimitConfLoad ¶
func AiRateLimitConfLoad(fileName string) (*AiRateLimitConf, error)
type AiRateLimitConfFile ¶
type AiRateLimitConfFile struct {
Version *string `json:"Version"`
Config *map[string]*ProductRuleConfListFile `json:"Config"`
RateLimitPolicies *map[string]*PolicyConfFile `json:"RateLimitPolicies"`
ApikeyRatePoliciesBindings *map[string][]string `json:"ApikeyRateLimitPolicyBindings"`
}
func (*AiRateLimitConfFile) Convert ¶
func (f *AiRateLimitConfFile) Convert() *AiRateLimitConf
type ConfModAiRateLimit ¶
type ConfModAiRateLimit struct {
Basic struct {
ProductRulePath string // path for product rule
IsRejectOnRedisError bool //
}
// redis conf
Redis struct {
Bns string // bns name for redis proxy
ConnectTimeout int // connect timeout (ms)
ReadTimeout int // read timeout (ms)
WriteTimeout int // write timeout(ms)
// max idle connections in pool
MaxIdle int
// redis password, ignore if not set
Password string
// max active connections in pool,
// when set 0, there is no connection num limit
MaxActive int
}
Log struct {
OpenDebug bool // whether open debug
}
}
func ConfLoad ¶
func ConfLoad(filePath string, confRoot string) (*ConfModAiRateLimit, error)
load config from config file
func (*ConfModAiRateLimit) Check ¶
func (cfg *ConfModAiRateLimit) Check(confRoot string) error
type LimitRulesConf ¶
type LimitRulesConf struct {
TPM []*TPMRuleConf
RPM []*RPMRuleConf
MaxConcurrency *int64
}
type LimitRulesConfFile ¶
type LimitRulesConfFile struct {
TPM []TPMRuleConfFile `json:"tpm"`
RPM []RPMRuleConfFile `json:"rpm"`
MaxConcurrency *int64 `json:"max_concurrency"`
}
func (*LimitRulesConfFile) Check ¶
func (obj *LimitRulesConfFile) Check() error
func (*LimitRulesConfFile) Convert ¶
func (f *LimitRulesConfFile) Convert() *LimitRulesConf
type LimiterStats ¶
type ModuleAiRateLimit ¶
type ModuleAiRateLimit struct {
// contains filtered or unexported fields
}
func NewModuleAiRateLimit ¶
func NewModuleAiRateLimit() *ModuleAiRateLimit
func (*ModuleAiRateLimit) Init ¶
func (m *ModuleAiRateLimit) Init(cbs *bfe_module.BfeCallbacks, whs *web_monitor.WebHandlers, cr string) error
module Init
func (*ModuleAiRateLimit) Name ¶
func (m *ModuleAiRateLimit) Name() string
type PolicyConf ¶
type PolicyConf struct {
Name string
Enabled bool
Models []string
Rules *LimitRulesConf
}
type PolicyConfFile ¶
type PolicyConfFile struct {
Name string `json:"name"`
Enabled bool `json:"enabled"`
Models []string `json:"models"`
Rules *LimitRulesConfFile `json:"rules"`
}
func (*PolicyConfFile) Check ¶
func (obj *PolicyConfFile) Check() error
func (*PolicyConfFile) Convert ¶
func (f *PolicyConfFile) Convert() *PolicyConf
type PolicyLimiterContext ¶
type PolicyLimiterContext struct {
TpmLimiterDataList []*TpmLimiterData
ConLimiters []*limit_rate.ConcurrencyLimiter
}
type ProductRuleConf ¶
type ProductRuleConfFile ¶
type ProductRuleConfFile struct {
Cond *string `json:"cond"`
HitAction *action.Action `json:"hit_action"`
}
func (*ProductRuleConfFile) Check ¶
func (obj *ProductRuleConfFile) Check() error
func (*ProductRuleConfFile) Convert ¶
func (f *ProductRuleConfFile) Convert() *ProductRuleConf
type ProductRuleConfList ¶
type ProductRuleConfList []*ProductRuleConf
type ProductRuleConfListFile ¶
type ProductRuleConfListFile []*ProductRuleConfFile
func (*ProductRuleConfListFile) Check ¶
func (obj *ProductRuleConfListFile) Check() error
func (ProductRuleConfListFile) Convert ¶
func (f ProductRuleConfListFile) Convert() ProductRuleConfList
type PrometheusStates ¶
type PrometheusStates struct {
// contains filtered or unexported fields
}
type RPMRuleConf ¶
type RPMRuleConfFile ¶
type RPMRuleConfFile struct {
Name string `json:"name"`
WindowMinutes int `json:"window_minutes"`
MaxRequests int64 `json:"max_requests"`
Burst int64 `json:"burst"`
Models []string `json:"models"`
}
func (*RPMRuleConfFile) Check ¶
func (obj *RPMRuleConfFile) Check() error
func (*RPMRuleConfFile) Convert ¶
func (f *RPMRuleConfFile) Convert() *RPMRuleConf
type TPMRuleConf ¶
type TPMRuleConfFile ¶
type TPMRuleConfFile struct {
Name string `json:"name"`
WindowMinutes int `json:"window_minutes"`
MaxTokens int64 `json:"max_tokens"`
StepMinutes int `json:"step_minutes"`
Models []string `json:"models"`
}
func (*TPMRuleConfFile) Check ¶
func (obj *TPMRuleConfFile) Check() error
func (*TPMRuleConfFile) Convert ¶
func (f *TPMRuleConfFile) Convert() *TPMRuleConf
type TpmLimiterData ¶
type TpmLimiterData struct {
Limiter *limit_rate.TPMLimiter
PreConsumeToken int64
BucketTimeSec int64
IsAllowed bool
Item *tpmLimiterItem
}
Click to show internal directories.
Click to hide internal directories.