mod_ai_rate_limit

package
v1.8.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2026 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

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 LimiterStats struct {
	PolicyId   string
	InstId     string
	MatchCount uint64
	HitCount   uint64
	TokenCount uint64
}

type ModuleAiRateLimit

type ModuleAiRateLimit struct {
	// contains filtered or unexported fields
}

func NewModuleAiRateLimit

func NewModuleAiRateLimit() *ModuleAiRateLimit

func (*ModuleAiRateLimit) Init

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 ProductRuleConf struct {
	Cond      string
	HitAction *action.Action
}

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

type PrometheusStates

type PrometheusStates struct {
	// contains filtered or unexported fields
}

type RPMRuleConf

type RPMRuleConf struct {
	Name        string
	TimeWindow  int   // RPMRuleConfFile.WindowMinutes * 60
	MaxRequests int64 // RPMRuleConfFile.MaxRequests
	Burst       int64 // RPMRuleConfFile.Burst
	Models      []string
}

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 TPMRuleConf struct {
	Name             string
	TimeWindow       int64   // TPMRuleConfFile.WindowMinutes * 60
	Threshold        int64   // TPMRuleConfFile.MaxTokens
	BucketTimeWindow int64   // 60s
	BucketThreshold  int64   // TPMRuleConfFile.MaxTokens
	ReservedX        float64 // 0
	ReservedOff      float64 // 0
	Models           []string
}

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
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL