Documentation
¶
Index ¶
- Constants
- Variables
- func AutomaticDisableKeywordsFromString(s string)
- func AutomaticDisableKeywordsToString() string
- func AutomaticDisableStatusCodesFromString(s string) error
- func AutomaticDisableStatusCodesToString() string
- func AutomaticRetryStatusCodesFromString(s string) error
- func AutomaticRetryStatusCodesToString() string
- func ContainsPayMethod(method string) bool
- func GetCheckinQuotaRange() (min, max int)
- func GetCurrencySymbol() string
- func GetGPTImage1PriceOnceCall(quality string, size string) float64
- func GetGeminiInputAudioPricePerMillionTokens(modelName string) float64
- func GetMaxUserTokens() int
- func GetQuotaDisplayType() string
- func GetToolPrice(toolName string) float64
- func GetToolPriceForModel(toolName, modelName string) float64
- func GetUsdToCurrencyRate(usdToCny float64) float64
- func IsAlwaysSkipRetryCode(errorCode types.ErrorCode) bool
- func IsAlwaysSkipRetryStatusCode(code int) bool
- func IsCNYDisplay() bool
- func IsCheckinEnabled() bool
- func IsCurrencyDisplay() bool
- func PayMethods2JsonString() string
- func RebuildToolPriceIndex()
- func ShouldDisableByStatusCode(code int) bool
- func ShouldRetryByStatusCode(code int) bool
- func UpdatePayMethodsByJsonString(jsonString string) error
- type ChannelAffinityKeySource
- type ChannelAffinityRule
- type ChannelAffinitySetting
- type CheckinSetting
- type GeneralSetting
- type MonitorSetting
- type PaymentSetting
- type QuotaSetting
- type StatusCodeRange
- type TokenSetting
- type ToolPriceSetting
Constants ¶
const ( QuotaDisplayTypeUSD = "USD" QuotaDisplayTypeCNY = "CNY" QuotaDisplayTypeTokens = "TOKENS" QuotaDisplayTypeCustom = "CUSTOM" )
额度展示类型
const ( GPTImage1Low1024x1024 = 0.011 GPTImage1Low1024x1536 = 0.016 GPTImage1Low1536x1024 = 0.016 GPTImage1Medium1024x1024 = 0.042 GPTImage1Medium1024x1536 = 0.063 GPTImage1Medium1536x1024 = 0.063 GPTImage1High1024x1024 = 0.167 GPTImage1High1024x1536 = 0.25 GPTImage1High1536x1024 = 0.25 )
const ( Gemini25FlashPreviewInputAudioPrice = 1.00 Gemini25FlashProductionInputAudioPrice = 1.00 Gemini25FlashLitePreviewInputAudioPrice = 0.50 Gemini25FlashNativeAudioInputAudioPrice = 3.00 Gemini20FlashInputAudioPrice = 0.70 GeminiRoboticsER15InputAudioPrice = 1.00 )
Variables ¶
var AutomaticDisableKeywords = []string{
"Your credit balance is too low",
"This organization has been disabled.",
"You exceeded your current quota",
"Permission denied",
"The security token included in the request is invalid",
"Operation not allowed",
"Your account is not authorized",
}
var AutomaticDisableStatusCodeRanges = []StatusCodeRange{{Start: 401, End: 401}}
var AutomaticRetryStatusCodeRanges = []StatusCodeRange{
{Start: 100, End: 199},
{Start: 300, End: 399},
{Start: 401, End: 407},
{Start: 409, End: 499},
{Start: 500, End: 503},
{Start: 505, End: 523},
{Start: 525, End: 599},
}
Default behavior matches legacy hardcoded retry rules in controller/relay.go shouldRetry: retry for 1xx, 3xx, 4xx(except 400/408), 5xx(except 504/524), and no retry for 2xx.
var CustomCallbackAddress = ""
var DemoSiteEnabled = false
var EpayId = ""
var EpayKey = ""
var MinTopUp = 1
var PayAddress = ""
var PayMethods = []map[string]string{
{
"name": "支付宝",
"color": "rgba(var(--semi-blue-5), 1)",
"type": "alipay",
},
{
"name": "微信",
"color": "rgba(var(--semi-green-5), 1)",
"type": "wxpay",
},
{
"name": "自定义1",
"color": "black",
"type": "custom1",
"min_topup": "50",
},
}
var Price = 7.3
var SelfUseModeEnabled = false
var USDExchangeRate = 7.3
Functions ¶
func AutomaticDisableKeywordsFromString ¶
func AutomaticDisableKeywordsFromString(s string)
func AutomaticDisableKeywordsToString ¶
func AutomaticDisableKeywordsToString() string
func AutomaticDisableStatusCodesToString ¶
func AutomaticDisableStatusCodesToString() string
func AutomaticRetryStatusCodesToString ¶
func AutomaticRetryStatusCodesToString() string
func ContainsPayMethod ¶
func GetCheckinQuotaRange ¶
func GetCheckinQuotaRange() (min, max int)
GetCheckinQuotaRange 获取签到额度范围
func GetToolPrice ¶ added in v0.13.0
GetToolPrice is a convenience wrapper when no model name is needed.
func GetToolPriceForModel ¶ added in v0.13.0
GetToolPriceForModel returns the price ($/1K calls) for a tool given a model name. Lookup: longest prefix match → tool default → 0.
func GetUsdToCurrencyRate ¶
GetUsdToCurrencyRate 返回 1 USD = X <currency> 的 X(TOKENS 不适用)
func IsAlwaysSkipRetryCode ¶ added in v0.11.4
func IsAlwaysSkipRetryStatusCode ¶ added in v0.11.0
func PayMethods2JsonString ¶
func PayMethods2JsonString() string
func RebuildToolPriceIndex ¶ added in v0.13.0
func RebuildToolPriceIndex()
RebuildToolPriceIndex rebuilds the lookup index from the current config. Called on init and after config updates. Not on the billing hot path.
func ShouldRetryByStatusCode ¶
Types ¶
type ChannelAffinityRule ¶
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"`
ParamOverrideTemplate map[string]interface{} `json:"param_override_template,omitempty"`
SkipRetryOnFailure bool `json:"skip_retry_on_failure"`
IncludeUsingGroup bool `json:"include_using_group"`
IncludeModelName bool `json:"include_model_name"`
IncludeRuleName bool `json:"include_rule_name"`
}
type ChannelAffinitySetting ¶
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"`
}
func GetChannelAffinitySetting ¶
func GetChannelAffinitySetting() *ChannelAffinitySetting
type CheckinSetting ¶
type CheckinSetting struct {
Enabled bool `json:"enabled"` // 是否启用签到功能
MinQuota int `json:"min_quota"` // 签到最小额度奖励
MaxQuota int `json:"max_quota"` // 签到最大额度奖励
}
CheckinSetting 签到功能配置
type GeneralSetting ¶
type GeneralSetting struct {
DocsLink string `json:"docs_link"`
PingIntervalEnabled bool `json:"ping_interval_enabled"`
PingIntervalSeconds int `json:"ping_interval_seconds"`
// 当前站点额度展示类型:USD / CNY / TOKENS
QuotaDisplayType string `json:"quota_display_type"`
// 自定义货币符号,用于 CUSTOM 展示类型
CustomCurrencySymbol string `json:"custom_currency_symbol"`
// 自定义货币与美元汇率(1 USD = X Custom)
CustomCurrencyExchangeRate float64 `json:"custom_currency_exchange_rate"`
}
func GetGeneralSetting ¶
func GetGeneralSetting() *GeneralSetting
type MonitorSetting ¶
type MonitorSetting struct {
AutoTestChannelEnabled bool `json:"auto_test_channel_enabled"`
AutoTestChannelMinutes float64 `json:"auto_test_channel_minutes"`
}
func GetMonitorSetting ¶
func GetMonitorSetting() *MonitorSetting
type PaymentSetting ¶
type PaymentSetting struct {
AmountOptions []int `json:"amount_options"`
AmountDiscount map[int]float64 `json:"amount_discount"` // 充值金额对应的折扣,例如 100 元 0.9 表示 100 元充值享受 9 折优惠
}
func GetPaymentSetting ¶
func GetPaymentSetting() *PaymentSetting
type QuotaSetting ¶
type QuotaSetting struct {
EnableFreeModelPreConsume bool `json:"enable_free_model_pre_consume"` // 是否对免费模型启用预消耗
}
func GetQuotaSetting ¶
func GetQuotaSetting() *QuotaSetting
type StatusCodeRange ¶
func ParseHTTPStatusCodeRanges ¶
func ParseHTTPStatusCodeRanges(input string) ([]StatusCodeRange, error)
type TokenSetting ¶ added in v0.10.8
type TokenSetting struct {
MaxUserTokens int `json:"max_user_tokens"` // 每用户最大令牌数量
}
TokenSetting 令牌相关配置
type ToolPriceSetting ¶ added in v0.13.0
ToolPriceSetting is managed by config.GlobalConfig.Register.