| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package operation_setting
- import "github.com/QuantumNous/new-api/setting/config"
- type ChannelAffinityKeySource struct {
- Type string `json:"type"` // context_int, context_string, gjson
- Key string `json:"key,omitempty"`
- Path string `json:"path,omitempty"`
- }
- type ChannelAffinityRule struct {
- Name string `json:"name"`
- ModelRegex []string `json:"model_regex"`
- PathRegex []string `json:"path_regex"`
- UserAgentInclude []string `json:"user_agent_include,omitempty"`
- KeySources []ChannelAffinityKeySource `json:"key_sources"`
- ValueRegex string `json:"value_regex"`
- TTLSeconds int `json:"ttl_seconds"`
- SkipRetryOnFailure bool `json:"skip_retry_on_failure,omitempty"`
- IncludeUsingGroup bool `json:"include_using_group"`
- IncludeRuleName bool `json:"include_rule_name"`
- }
- type ChannelAffinitySetting struct {
- Enabled bool `json:"enabled"`
- SwitchOnSuccess bool `json:"switch_on_success"`
- MaxEntries int `json:"max_entries"`
- DefaultTTLSeconds int `json:"default_ttl_seconds"`
- Rules []ChannelAffinityRule `json:"rules"`
- }
- var channelAffinitySetting = ChannelAffinitySetting{
- Enabled: true,
- SwitchOnSuccess: true,
- MaxEntries: 100_000,
- DefaultTTLSeconds: 3600,
- Rules: []ChannelAffinityRule{
- {
- Name: "codex trace",
- ModelRegex: []string{"^gpt-.*$"},
- PathRegex: []string{"/v1/responses"},
- KeySources: []ChannelAffinityKeySource{
- {Type: "gjson", Path: "prompt_cache_key"},
- },
- ValueRegex: "",
- TTLSeconds: 0,
- SkipRetryOnFailure: false,
- IncludeUsingGroup: true,
- IncludeRuleName: true,
- UserAgentInclude: nil,
- },
- {
- Name: "claude code trace",
- ModelRegex: []string{"^claude-.*$"},
- PathRegex: []string{"/v1/messages"},
- KeySources: []ChannelAffinityKeySource{
- {Type: "gjson", Path: "metadata.user_id"},
- },
- ValueRegex: "",
- TTLSeconds: 0,
- SkipRetryOnFailure: false,
- IncludeUsingGroup: true,
- IncludeRuleName: true,
- UserAgentInclude: nil,
- },
- },
- }
- func init() {
- config.GlobalConfig.Register("channel_affinity_setting", &channelAffinitySetting)
- }
- func GetChannelAffinitySetting() *ChannelAffinitySetting {
- return &channelAffinitySetting
- }
|