Documentation
¶
Index ¶
- Constants
- Variables
- func BatchInsertChannels(channels []*Channel) (err error)
- func BatchRecordConsume(requestID string, requestAt time.Time, group string, code int, channelID int, ...) error
- func CacheDeleteGroup(id string) error
- func CacheDeleteToken(key string) error
- func CacheGetGroupModelTPM(id string, model string) (int64, error)
- func CacheSetGroup(group *GroupCache) error
- func CacheSetToken(token *TokenCache) error
- func CacheUpdateGroupRPM(id string, rpm map[string]int64) error
- func CacheUpdateGroupRPMRatio(id string, rpmRatio float64) error
- func CacheUpdateGroupStatus(id string, status int) error
- func CacheUpdateGroupTPM(id string, tpm map[string]int64) error
- func CacheUpdateGroupTPMRatio(id string, tpmRatio float64) error
- func CacheUpdateGroupUsedAmountOnlyIncrease(id string, amount float64) error
- func CacheUpdateTokenName(key string, name string) error
- func CacheUpdateTokenStatus(key string, status int) error
- func CacheUpdateTokenUsedAmountOnlyIncrease(key string, amount float64) error
- func CheckModelConfigExist(models []string) error
- func CleanLog(batchSize int) error
- func ClearLastTestErrorAt(id int) error
- func CloseDB() error
- func CreateConsumeError(requestID string, requestAt time.Time, group string, tokenName string, ...) error
- func CreateGroup(group *Group) error
- func CreateLogIndexes(db *gorm.DB) error
- func DeleteChannelByID(id int) (err error)
- func DeleteChannelsByIDs(ids []int) (err error)
- func DeleteGroupByID(id string) (err error)
- func DeleteGroupLogs(groupID string) (int64, error)
- func DeleteGroupTokenByID(groupID string, id int) (err error)
- func DeleteGroupTokensByIDs(group string, ids []int) (err error)
- func DeleteGroupsByIDs(ids []string) (err error)
- func DeleteModelConfig(model string) error
- func DeleteModelConfigsByModels(models []string) error
- func DeleteOldLog(timestamp time.Time) (int64, error)
- func DeleteTokenByID(id int) (err error)
- func DeleteTokensByIDs(ids []int) (err error)
- func GetGroupLastRequestTime(group string) (time.Time, error)
- func GetGroupModelTPM(group string, model string) (int64, error)
- func GetModelConfigBool(config map[ModelConfigKey]any, key ModelConfigKey) (bool, bool)
- func GetModelConfigFloat(config map[ModelConfigKey]any, key ModelConfigKey) (float64, bool)
- func GetModelConfigInt(config map[ModelConfigKey]any, key ModelConfigKey) (int, bool)
- func GetModelConfigStringSlice(config map[ModelConfigKey]any, key ModelConfigKey) ([]string, bool)
- func GetModelConfigUint(config map[ModelConfigKey]any, key ModelConfigKey) (uint64, bool)
- func GetModelConfigWithModels(models []string) ([]string, []string, error)
- func GetTokenLastRequestTime(id int) (time.Time, error)
- func GetUsedModels(group string, start, end time.Time) ([]string, error)
- func GetUsedTokenNames(group string, start, end time.Time) ([]string, error)
- func HandleNotFound(err error, errMsg ...string) error
- func HandleUpdateResult(result *gorm.DB, entityName string) error
- func IgnoreNotFound(err error) error
- func InitDB()
- func InitLogDB()
- func InitModelConfigAndChannelCache() error
- func InitOption2DB() error
- func InsertToken(token *Token, autoCreateGroup bool) error
- func NewModelConfig(opts ...ModelConfigOption) map[ModelConfigKey]any
- func NotFoundError(errMsg ...string) error
- func OnConflictDoNothing() *gorm.DB
- func OpenMySQL(dsn string) (*gorm.DB, error)
- func OpenPostgreSQL(dsn string) (*gorm.DB, error)
- func OpenSQLite(sqlitePath string) (*gorm.DB, error)
- func ProcessBatchUpdates()
- func RecordConsumeLog(requestID string, requestAt time.Time, group string, code int, channelID int, ...) error
- func SaveModelConfig(config *ModelConfig) (err error)
- func SaveModelConfigs(configs []*ModelConfig) (err error)
- func SortModelConfigsFunc(i, j *ModelConfig) int
- func StartBatchProcessor(ctx context.Context, wg *sync.WaitGroup)
- func String2Int(keyword string) int
- func SyncModelConfigAndChannelCache(ctx context.Context, wg *sync.WaitGroup, frequency time.Duration)
- func SyncOptions(ctx context.Context, wg *sync.WaitGroup, frequency time.Duration)
- func UpdateChannel(channel *Channel) (err error)
- func UpdateChannelStatusByID(id int, status int) error
- func UpdateChannelUsedAmount(id int, amount float64, requestCount int) error
- func UpdateGroup(id string, group *Group) (err error)
- func UpdateGroupRPM(id string, rpm map[string]int64) (err error)
- func UpdateGroupRPMRatio(id string, rpmRatio float64) (err error)
- func UpdateGroupStatus(id string, status int) (err error)
- func UpdateGroupTPM(id string, tpm map[string]int64) (err error)
- func UpdateGroupTPMRatio(id string, tpmRatio float64) (err error)
- func UpdateGroupToken(id int, group string, token *Token) (err error)
- func UpdateGroupTokenName(group string, id int, name string) (err error)
- func UpdateGroupTokenStatus(group string, id int, status int) (err error)
- func UpdateGroupUsedAmountAndRequestCount(id string, amount float64, count int) (err error)
- func UpdateOption(key string, value string) error
- func UpdateOptions(options map[string]string) error
- func UpdateToken(id int, token *Token) (err error)
- func UpdateTokenName(id int, name string) (err error)
- func UpdateTokenStatus(id int, status int) (err error)
- func UpdateTokenUsedAmount(id int, amount float64, requestCount int) (err error)
- type BatchUpdateData
- type Channel
- func GetAllChannels() (channels []*Channel, err error)
- func GetChannelByID(id int) (*Channel, error)
- func GetChannels(page int, perPage int, id int, name string, key string, channelType int, ...) (channels []*Channel, total int64, err error)
- func LoadChannelByID(id int) (*Channel, error)
- func LoadChannels() ([]*Channel, error)
- func LoadEnabledChannels() ([]*Channel, error)
- func SearchChannels(keyword string, page int, perPage int, id int, name string, key string, ...) (channels []*Channel, total int64, err error)
- func (c *Channel) BeforeDelete(tx *gorm.DB) (err error)
- func (c *Channel) GetBalanceThreshold() float64
- func (c *Channel) GetPriority() int32
- func (c *Channel) MarshalJSON() ([]byte, error)
- func (c *Channel) UpdateBalance(balance float64) error
- func (c *Channel) UpdateModelTest(testAt time.Time, model, actualModel string, mode relaymode.Mode, took float64, ...) (*ChannelTest, error)
- type ChannelConfig
- type ChannelTest
- type ChannelUpdate
- type ChartData
- type CodeType
- type ConsumeError
- type DashboardResponse
- type EmptyNullString
- type GetGroupLogsResult
- type GetLogsResult
- type Group
- type GroupCache
- type GroupDashboardResponse
- type GroupUpdate
- type Log
- type ModelCaches
- type ModelConfig
- func GetAllModelConfigs() (configs []*ModelConfig, err error)
- func GetModelConfig(model string) (*ModelConfig, error)
- func GetModelConfigs(page int, perPage int, model string) (configs []*ModelConfig, total int64, err error)
- func GetModelConfigsByModels(models []string) (configs []*ModelConfig, err error)
- func NewDefaultModelConfig(model string) *ModelConfig
- func SearchModelConfigs(keyword string, page int, perPage int, model string, owner ModelOwner) (configs []*ModelConfig, total int64, err error)
- func (c *ModelConfig) MarshalJSON() ([]byte, error)
- func (c *ModelConfig) MaxContextTokens() (int, bool)
- func (c *ModelConfig) MaxInputTokens() (int, bool)
- func (c *ModelConfig) MaxOutputTokens() (int, bool)
- func (c *ModelConfig) SupportFormats() ([]string, bool)
- func (c *ModelConfig) SupportToolChoice() (bool, bool)
- func (c *ModelConfig) SupportVision() (bool, bool)
- func (c *ModelConfig) SupportVoices() ([]string, bool)
- type ModelConfigCache
- type ModelConfigKey
- type ModelConfigOption
- func WithModelConfigMaxContextTokens(maxContextTokens int) ModelConfigOption
- func WithModelConfigMaxInputTokens(maxInputTokens int) ModelConfigOption
- func WithModelConfigMaxOutputTokens(maxOutputTokens int) ModelConfigOption
- func WithModelConfigSupportFormats(supportFormats []string) ModelConfigOption
- func WithModelConfigSupportVoices(supportVoices []string) ModelConfigOption
- func WithModelConfigToolChoice(toolChoice bool) ModelConfigOption
- func WithModelConfigVision(vision bool) ModelConfigOption
- type ModelCostRank
- type ModelOwner
- type Option
- type RequestDetail
- type TimeSpanType
- type Token
- func GetGroupTokenByID(group string, id int) (*Token, error)
- func GetTokenByID(id int) (*Token, error)
- func GetTokenByKey(key string) (*Token, error)
- func GetTokens(group string, page int, perPage int, order string, status int) (tokens []*Token, total int64, err error)
- func SearchTokens(group string, keyword string, page int, perPage int, order string, status int, ...) (tokens []*Token, total int64, err error)
- type TokenCache
- type TokenUpdate
Constants ¶
View Source
const ( SyncFrequency = time.Minute * 3 TokenCacheKey = "token:%s" GroupCacheKey = "group:%s" GroupModelTPMKey = "group:%s:model_tpm" )
View Source
const ( ChannelStatusUnknown = 0 ChannelStatusEnabled = 1 )
View Source
const ( GroupStatusEnabled = 1 GroupStatusDisabled = 2 GroupStatusInternal = 3 )
View Source
const ( TokenStatusEnabled = 1 TokenStatusDisabled = 2 )
View Source
const (
DefaultPriority = 10
)
View Source
const (
ErrChannelNotFound = "channel"
)
View Source
const (
ErrGroupNotFound = "group"
)
View Source
const ErrModelConfigNotFound = "model config"
View Source
const (
ErrTokenNotFound = "token"
)
View Source
const (
// /1K tokens
PriceUnit = 1000
)
Variables ¶
View Source
var ( DB *gorm.DB LogDB *gorm.DB )
View Source
var ErrUnknownOptionKey = errors.New("unknown option key")
Functions ¶
func BatchInsertChannels ¶
func BatchRecordConsume ¶
func BatchRecordConsume( requestID string, requestAt time.Time, group string, code int, channelID int, promptTokens int, completionTokens int, modelName string, tokenID int, tokenName string, amount float64, price float64, completionPrice float64, endpoint string, content string, mode int, ip string, retryTimes int, requestDetail *RequestDetail, downstreamResult bool, ) error
func CacheDeleteGroup ¶
func CacheDeleteToken ¶
func CacheSetGroup ¶
func CacheSetGroup(group *GroupCache) error
func CacheSetToken ¶
func CacheSetToken(token *TokenCache) error
func CacheUpdateGroupStatus ¶
func CacheUpdateTokenName ¶
func CacheUpdateTokenStatus ¶
func CheckModelConfigExist ¶
func ClearLastTestErrorAt ¶
func CreateConsumeError ¶
func CreateGroup ¶
func CreateLogIndexes ¶
func DeleteChannelByID ¶
func DeleteChannelsByIDs ¶
func DeleteGroupByID ¶
func DeleteGroupLogs ¶
func DeleteGroupTokenByID ¶
func DeleteGroupTokensByIDs ¶
func DeleteGroupsByIDs ¶
func DeleteModelConfig ¶
func DeleteTokenByID ¶
func DeleteTokensByIDs ¶
func GetModelConfigBool ¶
func GetModelConfigBool(config map[ModelConfigKey]any, key ModelConfigKey) (bool, bool)
func GetModelConfigFloat ¶
func GetModelConfigFloat(config map[ModelConfigKey]any, key ModelConfigKey) (float64, bool)
func GetModelConfigInt ¶
func GetModelConfigInt(config map[ModelConfigKey]any, key ModelConfigKey) (int, bool)
func GetModelConfigStringSlice ¶
func GetModelConfigStringSlice(config map[ModelConfigKey]any, key ModelConfigKey) ([]string, bool)
func GetModelConfigUint ¶
func GetModelConfigUint(config map[ModelConfigKey]any, key ModelConfigKey) (uint64, bool)
func GetUsedTokenNames ¶
func HandleNotFound ¶
func HandleUpdateResult ¶
Helper function to handle update results
func IgnoreNotFound ¶
func InitModelConfigAndChannelCache ¶
func InitModelConfigAndChannelCache() error
InitModelConfigAndChannelCache initializes the channel cache from database
func InitOption2DB ¶
func InitOption2DB() error
func InsertToken ¶
func NewModelConfig ¶
func NewModelConfig(opts ...ModelConfigOption) map[ModelConfigKey]any
func NotFoundError ¶
func OnConflictDoNothing ¶
func ProcessBatchUpdates ¶
func ProcessBatchUpdates()
func RecordConsumeLog ¶
func RecordConsumeLog( requestID string, requestAt time.Time, group string, code int, channelID int, promptTokens int, completionTokens int, modelName string, tokenID int, tokenName string, amount float64, price float64, completionPrice float64, endpoint string, content string, mode int, ip string, retryTimes int, requestDetail *RequestDetail, downstreamResult bool, ) error
func SaveModelConfig ¶
func SaveModelConfig(config *ModelConfig) (err error)
func SaveModelConfigs ¶
func SaveModelConfigs(configs []*ModelConfig) (err error)
func SortModelConfigsFunc ¶
func SortModelConfigsFunc(i, j *ModelConfig) int
func String2Int ¶
func SyncOptions ¶
func UpdateChannel ¶
func UpdateChannelStatusByID ¶
func UpdateChannelUsedAmount ¶
func UpdateGroup ¶
func UpdateGroupRPMRatio ¶
func UpdateGroupStatus ¶
func UpdateGroupTPMRatio ¶
func UpdateGroupTokenName ¶
func UpdateGroupTokenStatus ¶
func UpdateOption ¶
func UpdateOptions ¶
func UpdateToken ¶
func UpdateTokenName ¶
func UpdateTokenStatus ¶
Types ¶
type BatchUpdateData ¶
type BatchUpdateData struct { Groups map[string]*GroupUpdate Tokens map[int]*TokenUpdate Channels map[int]*ChannelUpdate sync.Mutex }
type Channel ¶
type Channel struct { CreatedAt time.Time `gorm:"index" json:"created_at"` LastTestErrorAt time.Time `json:"last_test_error_at"` ChannelTests []*ChannelTest `gorm:"foreignKey:ChannelID;references:ID" json:"channel_tests,omitempty"` BalanceUpdatedAt time.Time `json:"balance_updated_at"` ModelMapping map[string]string `gorm:"serializer:fastjson;type:text" json:"model_mapping"` Key string `gorm:"type:text;index" json:"key"` Name string `gorm:"index" json:"name"` BaseURL string `gorm:"index" json:"base_url"` Models []string `gorm:"serializer:fastjson;type:text" json:"models"` Balance float64 `json:"balance"` ID int `gorm:"primaryKey" json:"id"` UsedAmount float64 `gorm:"index" json:"used_amount"` RequestCount int `gorm:"index" json:"request_count"` Status int `gorm:"default:1;index" json:"status"` Type int `gorm:"default:0;index" json:"type"` Priority int32 `json:"priority"` EnabledAutoBalanceCheck bool `json:"enabled_auto_balance_check"` BalanceThreshold float64 `json:"balance_threshold"` Config *ChannelConfig `gorm:"serializer:fastjson;type:text" json:"config,omitempty"` }
func GetAllChannels ¶
func GetChannelByID ¶
func GetChannels ¶
func LoadChannelByID ¶
func LoadChannels ¶
func LoadEnabledChannels ¶
func SearchChannels ¶
func (*Channel) GetBalanceThreshold ¶
func (*Channel) GetPriority ¶
func (*Channel) MarshalJSON ¶
func (*Channel) UpdateBalance ¶
type ChannelConfig ¶
type ChannelConfig struct {
SplitThink bool `json:"split_think"`
}
type ChannelTest ¶
type ChannelTest struct { TestAt time.Time `json:"test_at"` Model string `gorm:"primaryKey" json:"model"` ActualModel string `json:"actual_model"` Response string `gorm:"type:text" json:"response"` ChannelName string `json:"channel_name"` ChannelType int `json:"channel_type"` ChannelID int `gorm:"primaryKey" json:"channel_id"` Took float64 `json:"took"` Success bool `json:"success"` Mode int `json:"mode"` Code int `json:"code"` }
func (*ChannelTest) MarshalJSON ¶
func (ct *ChannelTest) MarshalJSON() ([]byte, error)
type ChannelUpdate ¶
type ConsumeError ¶
type ConsumeError struct { RequestAt time.Time `gorm:"index;index:idx_consume_error_group_reqat,priority:2" json:"request_at"` CreatedAt time.Time `json:"created_at"` GroupID string `gorm:"index;index:idx_consume_error_group_reqat,priority:1" json:"group_id"` RequestID string `gorm:"index" json:"request_id"` TokenName EmptyNullString `gorm:"not null" json:"token_name"` Model string `json:"model"` Content string `gorm:"type:text" json:"content"` ID int `gorm:"primaryKey" json:"id"` UsedAmount float64 `json:"used_amount"` TokenID int `json:"token_id"` }
func SearchConsumeError ¶
func (*ConsumeError) MarshalJSON ¶
func (c *ConsumeError) MarshalJSON() ([]byte, error)
type DashboardResponse ¶
type DashboardResponse struct { ChartData []*ChartData `json:"chart_data"` TotalCount int64 `json:"total_count"` ExceptionCount int64 `json:"exception_count"` UsedAmount float64 `json:"used_amount"` RPM int64 `json:"rpm"` TPM int64 `json:"tpm"` }
func GetDashboardData ¶
func GetDashboardData(start, end time.Time, modelName string, timeSpan TimeSpanType) (*DashboardResponse, error)
type EmptyNullString ¶
type EmptyNullString string
func (*EmptyNullString) Scan ¶
func (ns *EmptyNullString) Scan(value any) error
Scan implements the [Scanner] interface.
func (EmptyNullString) String ¶
func (ns EmptyNullString) String() string
func (EmptyNullString) Value ¶
func (ns EmptyNullString) Value() (driver.Value, error)
Value implements the driver.Valuer interface.
type GetGroupLogsResult ¶
type GetGroupLogsResult struct { GetLogsResult Models []string `json:"models"` TokenNames []string `json:"token_names"` }
func GetGroupLogs ¶
func GetGroupLogs( group string, startTimestamp time.Time, endTimestamp time.Time, modelName string, requestID string, tokenID int, tokenName string, channelID int, endpoint string, order string, mode int, codeType CodeType, withBody bool, ip string, page int, perPage int, ) (*GetGroupLogsResult, error)
func SearchGroupLogs ¶
func SearchGroupLogs( group string, keyword string, endpoint string, requestID string, tokenID int, tokenName string, modelName string, startTimestamp time.Time, endTimestamp time.Time, channelID int, order string, mode int, codeType CodeType, withBody bool, ip string, page int, perPage int, ) (*GetGroupLogsResult, error)
type GetLogsResult ¶
func SearchLogs ¶
func SearchLogs( group string, keyword string, endpoint string, requestID string, tokenID int, tokenName string, modelName string, startTimestamp time.Time, endTimestamp time.Time, channelID int, order string, mode int, codeType CodeType, withBody bool, ip string, page int, perPage int, ) (*GetLogsResult, error)
type Group ¶
type Group struct { CreatedAt time.Time `json:"created_at"` ID string `gorm:"primaryKey" json:"id"` Tokens []*Token `gorm:"foreignKey:GroupID" json:"-"` Status int `gorm:"default:1;index" json:"status"` UsedAmount float64 `gorm:"index" json:"used_amount"` RPMRatio float64 `gorm:"index" json:"rpm_ratio"` RPM map[string]int64 `gorm:"serializer:fastjson;type:text" json:"rpm"` TPMRatio float64 `gorm:"index" json:"tpm_ratio"` TPM map[string]int64 `gorm:"serializer:fastjson;type:text" json:"tpm"` RequestCount int `gorm:"index" json:"request_count"` }
func GetGroupByID ¶
func SearchGroup ¶
func (*Group) ToGroupCache ¶
func (g *Group) ToGroupCache() *GroupCache
type GroupCache ¶
type GroupCache struct { ID string `json:"-" redis:"-"` Status int `json:"status" redis:"st"` UsedAmount float64 `json:"used_amount" redis:"ua"` RPMRatio float64 `json:"rpm_ratio" redis:"rpm_r"` RPM redisMapStringInt64 `json:"rpm" redis:"rpm"` TPMRatio float64 `json:"tpm_ratio" redis:"tpm_r"` TPM redisMapStringInt64 `json:"tpm" redis:"tpm"` }
func CacheGetGroup ¶
func CacheGetGroup(id string) (*GroupCache, error)
type GroupDashboardResponse ¶
type GroupDashboardResponse struct { DashboardResponse Models []string `json:"models"` TokenNames []string `json:"token_names"` }
func GetGroupDashboardData ¶
func GetGroupDashboardData(group string, start, end time.Time, tokenName string, modelName string, timeSpan TimeSpanType) (*GroupDashboardResponse, error)
type GroupUpdate ¶
type Log ¶
type Log struct { RequestDetail *RequestDetail `gorm:"foreignKey:LogID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"request_detail,omitempty"` RequestAt time.Time `gorm:"index" json:"request_at"` TimestampTruncByDay int64 `json:"timestamp_trunc_by_day"` TimestampTruncByHour int64 `json:"timestamp_trunc_by_hour"` CreatedAt time.Time `gorm:"autoCreateTime;index" json:"created_at"` TokenName string `json:"token_name,omitempty"` Endpoint string `json:"endpoint"` Content string `gorm:"type:text" json:"content,omitempty"` GroupID string `gorm:"index" json:"group,omitempty"` Model string `gorm:"index" json:"model"` RequestID string `gorm:"index" json:"request_id"` Price float64 `json:"price,omitempty"` ID int `gorm:"primaryKey" json:"id"` CompletionPrice float64 `json:"completion_price,omitempty"` TokenID int `gorm:"index" json:"token_id,omitempty"` UsedAmount float64 `json:"used_amount,omitempty"` PromptTokens int `json:"prompt_tokens,omitempty"` CompletionTokens int `json:"completion_tokens,omitempty"` TotalTokens int `json:"total_tokens,omitempty"` ChannelID int `gorm:"index" json:"channel,omitempty"` Code int `gorm:"index" json:"code,omitempty"` Mode int `json:"mode,omitempty"` IP string `gorm:"index" json:"ip,omitempty"` RetryTimes int `json:"retry_times,omitempty"` DownstreamResult bool `json:"downstream_result,omitempty"` }
func (*Log) MarshalJSON ¶
type ModelCaches ¶
type ModelCaches struct { ModelConfig ModelConfigCache EnabledModel2channels map[string][]*Channel EnabledModels []string EnabledModelsMap map[string]struct{} EnabledModelConfigs []*ModelConfig EnabledModelConfigsMap map[string]*ModelConfig EnabledChannelType2ModelConfigs map[int][]*ModelConfig EnabledChannelID2channel map[int]*Channel }
read-only cache
func LoadModelCaches ¶
func LoadModelCaches() *ModelCaches
type ModelConfig ¶
type ModelConfig struct { CreatedAt time.Time `gorm:"index;autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"index;autoUpdateTime" json:"updated_at"` Config map[ModelConfigKey]any `gorm:"serializer:fastjson;type:text" json:"config,omitempty"` ImagePrices map[string]float64 `gorm:"serializer:fastjson;type:text" json:"image_prices,omitempty"` Model string `gorm:"primaryKey" json:"model"` Owner ModelOwner `gorm:"type:varchar(255);index" json:"owner"` ImageMaxBatchSize int `json:"image_batch_size,omitempty"` Type relaymode.Mode `json:"type"` // relaymode/define.go InputPrice float64 `json:"input_price,omitempty"` OutputPrice float64 `json:"output_price,omitempty"` RPM int64 `json:"rpm,omitempty"` TPM int64 `json:"tpm,omitempty"` }
func GetAllModelConfigs ¶
func GetAllModelConfigs() (configs []*ModelConfig, err error)
func GetModelConfig ¶
func GetModelConfig(model string) (*ModelConfig, error)
func GetModelConfigs ¶
func GetModelConfigsByModels ¶
func GetModelConfigsByModels(models []string) (configs []*ModelConfig, err error)
func NewDefaultModelConfig ¶
func NewDefaultModelConfig(model string) *ModelConfig
func SearchModelConfigs ¶
func SearchModelConfigs(keyword string, page int, perPage int, model string, owner ModelOwner) (configs []*ModelConfig, total int64, err error)
func (*ModelConfig) MarshalJSON ¶
func (c *ModelConfig) MarshalJSON() ([]byte, error)
func (*ModelConfig) MaxContextTokens ¶
func (c *ModelConfig) MaxContextTokens() (int, bool)
func (*ModelConfig) MaxInputTokens ¶
func (c *ModelConfig) MaxInputTokens() (int, bool)
func (*ModelConfig) MaxOutputTokens ¶
func (c *ModelConfig) MaxOutputTokens() (int, bool)
func (*ModelConfig) SupportFormats ¶
func (c *ModelConfig) SupportFormats() ([]string, bool)
func (*ModelConfig) SupportToolChoice ¶
func (c *ModelConfig) SupportToolChoice() (bool, bool)
func (*ModelConfig) SupportVision ¶
func (c *ModelConfig) SupportVision() (bool, bool)
func (*ModelConfig) SupportVoices ¶
func (c *ModelConfig) SupportVoices() ([]string, bool)
type ModelConfigCache ¶
type ModelConfigCache interface {
GetModelConfig(model string) (*ModelConfig, bool)
}
type ModelConfigKey ¶
type ModelConfigKey string
const ( ModelConfigMaxContextTokensKey ModelConfigKey = "max_context_tokens" ModelConfigMaxInputTokensKey ModelConfigKey = "max_input_tokens" ModelConfigMaxOutputTokensKey ModelConfigKey = "max_output_tokens" ModelConfigVisionKey ModelConfigKey = "vision" ModelConfigToolChoiceKey ModelConfigKey = "tool_choice" ModelConfigSupportFormatsKey ModelConfigKey = "support_formats" ModelConfigSupportVoicesKey ModelConfigKey = "support_voices" )
type ModelConfigOption ¶
type ModelConfigOption func(config map[ModelConfigKey]any)
func WithModelConfigMaxContextTokens ¶
func WithModelConfigMaxContextTokens(maxContextTokens int) ModelConfigOption
func WithModelConfigMaxInputTokens ¶
func WithModelConfigMaxInputTokens(maxInputTokens int) ModelConfigOption
func WithModelConfigMaxOutputTokens ¶
func WithModelConfigMaxOutputTokens(maxOutputTokens int) ModelConfigOption
func WithModelConfigSupportFormats ¶
func WithModelConfigSupportFormats(supportFormats []string) ModelConfigOption
func WithModelConfigSupportVoices ¶
func WithModelConfigSupportVoices(supportVoices []string) ModelConfigOption
func WithModelConfigToolChoice ¶
func WithModelConfigToolChoice(toolChoice bool) ModelConfigOption
func WithModelConfigVision ¶
func WithModelConfigVision(vision bool) ModelConfigOption
type ModelCostRank ¶
type ModelCostRank struct { Model string `json:"model"` UsedAmount float64 `json:"used_amount"` Total int64 `json:"total"` }
func GetModelCostRank ¶
func GetModelCostRank(group string, start, end time.Time) ([]*ModelCostRank, error)
type ModelOwner ¶
type ModelOwner string
const ( ModelOwnerOpenAI ModelOwner = "openai" ModelOwnerAlibaba ModelOwner = "alibaba" ModelOwnerTencent ModelOwner = "tencent" ModelOwnerXunfei ModelOwner = "xunfei" ModelOwnerDeepSeek ModelOwner = "deepseek" ModelOwnerMoonshot ModelOwner = "moonshot" ModelOwnerMiniMax ModelOwner = "minimax" ModelOwnerBaidu ModelOwner = "baidu" ModelOwnerGoogle ModelOwner = "google" ModelOwnerBAAI ModelOwner = "baai" ModelOwnerFunAudioLLM ModelOwner = "funaudiollm" ModelOwnerDoubao ModelOwner = "doubao" ModelOwnerFishAudio ModelOwner = "fishaudio" ModelOwnerChatGLM ModelOwner = "chatglm" ModelOwnerStabilityAI ModelOwner = "stabilityai" ModelOwnerNetease ModelOwner = "netease" ModelOwnerAI360 ModelOwner = "ai360" ModelOwnerAnthropic ModelOwner = "anthropic" ModelOwnerMeta ModelOwner = "meta" ModelOwnerBaichuan ModelOwner = "baichuan" ModelOwnerMistral ModelOwner = "mistral" ModelOwnerOpenChat ModelOwner = "openchat" ModelOwnerMicrosoft ModelOwner = "microsoft" ModelOwnerDefog ModelOwner = "defog" ModelOwnerNexusFlow ModelOwner = "nexusflow" ModelOwnerCohere ModelOwner = "cohere" ModelOwnerHuggingFace ModelOwner = "huggingface" ModelOwnerLingyiWanwu ModelOwner = "lingyiwanwu" ModelOwnerStepFun ModelOwner = "stepfun" ModelOwnerXAI ModelOwner = "xai" ModelOwnerDoc2x ModelOwner = "doc2x" )
type Option ¶
func GetAllOption ¶
type RequestDetail ¶
type RequestDetail struct { CreatedAt time.Time `gorm:"autoCreateTime;index" json:"-"` RequestBody string `gorm:"type:text" json:"request_body,omitempty"` ResponseBody string `gorm:"type:text" json:"response_body,omitempty"` RequestBodyTruncated bool `json:"request_body_truncated,omitempty"` ResponseBodyTruncated bool `json:"response_body_truncated,omitempty"` ID int `gorm:"primaryKey" json:"id"` LogID int `gorm:"index" json:"log_id"` }
func GetGroupLogDetail ¶
func GetGroupLogDetail(logID int, group string) (*RequestDetail, error)
func GetLogDetail ¶
func GetLogDetail(logID int) (*RequestDetail, error)
func (*RequestDetail) BeforeSave ¶
func (d *RequestDetail) BeforeSave(_ *gorm.DB) (err error)
type TimeSpanType ¶
type TimeSpanType string
const ( TimeSpanDay TimeSpanType = "day" TimeSpanHour TimeSpanType = "hour" )
type Token ¶
type Token struct { CreatedAt time.Time `json:"created_at"` ExpiredAt time.Time `json:"expired_at"` Group *Group `gorm:"foreignKey:GroupID" json:"-"` Key string `gorm:"type:char(48);uniqueIndex" json:"key"` Name EmptyNullString `gorm:"index;uniqueIndex:idx_group_name;not null" json:"name"` GroupID string `gorm:"index;uniqueIndex:idx_group_name" json:"group"` Subnets []string `gorm:"serializer:fastjson;type:text" json:"subnets"` Models []string `gorm:"serializer:fastjson;type:text" json:"models"` Status int `gorm:"default:1;index" json:"status"` ID int `gorm:"primaryKey" json:"id"` Quota float64 `json:"quota"` UsedAmount float64 `gorm:"index" json:"used_amount"` RequestCount int `gorm:"index" json:"request_count"` }
func GetTokenByID ¶
func GetTokenByKey ¶
func SearchTokens ¶
func (*Token) ToTokenCache ¶
func (t *Token) ToTokenCache() *TokenCache
type TokenCache ¶
type TokenCache struct { ExpiredAt redisTime `json:"expired_at" redis:"e"` Group string `json:"group" redis:"g"` Key string `json:"-" redis:"-"` Name string `json:"name" redis:"n"` Subnets redisStringSlice `json:"subnets" redis:"s"` Models redisStringSlice `json:"models" redis:"m"` ID int `json:"id" redis:"i"` Status int `json:"status" redis:"st"` Quota float64 `json:"quota" redis:"q"` UsedAmount float64 `json:"used_amount" redis:"u"` }
func CacheGetTokenByKey ¶
func CacheGetTokenByKey(key string) (*TokenCache, error)
func ValidateAndGetToken ¶
func ValidateAndGetToken(key string) (token *TokenCache, err error)
type TokenUpdate ¶
Click to show internal directories.
Click to hide internal directories.