Documentation
¶
Index ¶
- Constants
- Variables
- func BatchInsertChannels(channels []*Channel) 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 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) error
- func DeleteChannelsByIDs(ids []int) error
- func DeleteDisabledChannel() error
- func DeleteFailChannel() error
- func DeleteGroupByID(id string) (err error)
- func DeleteGroupLogs(groupID string) (int64, error)
- func DeleteGroupTokenByID(groupID string, id int) (err error)
- func DeleteGroupTokensByIDs(groupID 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 GetTokenUsedAmount(id int) (float64, error)
- func GetTokenUsedAmountByKey(key string) (float64, error)
- func HandleNotFound(err error, errMsg ...string) error
- func HandleUpdateResult(result *gorm.DB, entityName string) 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 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 RecordConsumeLog(requestID string, requestAt time.Time, group string, code int, channelID int, ...) error
- func SaveModelConfig(config *ModelConfig) error
- func SaveModelConfigs(configs []*ModelConfig) error
- func SortModelConfigsFunc(i, j *ModelConfig) int
- 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) error
- func UpdateChannelStatusByID(id int, status int) error
- func UpdateChannelUsedAmount(id int, amount float64, requestCount int) 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 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(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 Channel
- func GetAllChannels() (channels []*Channel, err error)
- func GetChannelByID(id int) (*Channel, error)
- func GetChannels(startIdx int, num 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, startIdx int, num 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) 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 int, took float64, ...) (*ChannelTest, error)
- type ChannelConfig
- type ChannelTest
- type ChartData
- type CodeType
- type ConsumeError
- type DashboardResponse
- type EmptyNullString
- type GetGroupLogsResult
- type GetLogsResult
- type Group
- type GroupCache
- type GroupDashboardResponse
- type Log
- type ModelCaches
- type ModelConfig
- func GetAllModelConfigs() (configs []*ModelConfig, err error)
- func GetModelConfig(model string) (*ModelConfig, error)
- func GetModelConfigs(startIdx int, num 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, startIdx int, num 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 ModelOwner
- type NotFoundError
- 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, startIdx int, num int, order string, status int) (tokens []*Token, total int64, err error)
- func SearchTokens(group string, keyword string, startIdx int, num int, order string, status int, ...) (tokens []*Token, total int64, err error)
- type TokenCache
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 // don't use 0, 0 is the default value! ChannelStatusDisabled = 2 // also don't use 0 ChannelStatusFail = 3 )
View Source
const ( GroupStatusEnabled = 1 // don't use 0, 0 is the default value! GroupStatusDisabled = 2 // also don't use 0 GroupStatusInternal = 3 )
View Source
const ( TokenStatusEnabled = 1 // don't use 0, 0 is the default value! TokenStatusDisabled = 2 // also don't use 0 TokenStatusExpired = 3 TokenStatusExhausted = 4 )
View Source
const (
DefaultPriority = 100
)
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 ( ErrChannelsNotFound = errors.New("channels not found") ErrChannelsExhausted = errors.New("channels exhausted") )
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, requestDetail *RequestDetail, ) 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 DeleteDisabledChannel ¶
func DeleteDisabledChannel() error
func DeleteFailChannel ¶
func DeleteFailChannel() error
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 GetTokenUsedAmount ¶
func GetTokenUsedAmountByKey ¶
func HandleNotFound ¶
func HandleUpdateResult ¶
Helper function to handle update results
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 OnConflictDoNothing ¶
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, requestDetail *RequestDetail, ) error
func SaveModelConfig ¶
func SaveModelConfig(config *ModelConfig) error
func SaveModelConfigs ¶
func SaveModelConfigs(configs []*ModelConfig) error
func SortModelConfigsFunc ¶
func SortModelConfigsFunc(i, j *ModelConfig) int
func String2Int ¶
func SyncOptions ¶
func UpdateChannel ¶
func UpdateChannelStatusByID ¶
func UpdateChannelUsedAmount ¶
func UpdateGroupRPMRatio ¶
func UpdateGroupStatus ¶
func UpdateGroupTPMRatio ¶
func UpdateGroupTokenName ¶
func UpdateGroupTokenStatus ¶
func UpdateOption ¶
func UpdateOptions ¶
func UpdateToken ¶
func UpdateTokenName ¶
func UpdateTokenStatus ¶
Types ¶
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"` 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) 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 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"` Models []string `json:"models"` 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 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 ¶
type GetLogsResult struct { Logs []*Log `json:"logs"` Total int64 `json:"total"` Models []string `json:"models"` }
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" json:"rpm"` TPMRatio float64 `gorm:"index" json:"tpm_ratio"` TPM map[string]int64 `gorm:"serializer:fastjson" 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 TokenNames []string `json:"token_names"` }
func GetGroupDashboardData ¶
func GetGroupDashboardData(group string, start, end time.Time, tokenName string, modelName string, timeSpan TimeSpanType) (*GroupDashboardResponse, error)
type Log ¶
type Log struct { RequestDetail *RequestDetail `` /* 278-byte string literal not displayed */ RequestAt time.Time `` /* 263-byte string literal not displayed */ TimestampTruncByDay int64 `json:"timestamp_trunc_by_day"` TimestampTruncByHour int64 `json:"timestamp_trunc_by_hour"` CreatedAt time.Time `json:"created_at"` TokenName string `json:"token_name,omitempty"` Endpoint string `json:"endpoint"` Content string `` /* 271-byte string literal not displayed */ GroupID string `` /* 269-byte string literal not displayed */ Model string `` /* 259-byte string literal not displayed */ RequestID string `` /* 264-byte string literal not displayed */ Price float64 `json:"price"` ID int `` /* 256-byte string literal not displayed */ CompletionPrice float64 `json:"completion_price"` TokenID int `` /* 272-byte string literal not displayed */ UsedAmount float64 `json:"used_amount"` PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` ChannelID int `` /* 261-byte string literal not displayed */ Code int `` /* 258-byte string literal not displayed */ Mode int `json:"mode"` IP string `` /* 256-byte string literal not displayed */ }
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
func (*ModelCaches) GetRandomSatisfiedChannel ¶
func (c *ModelCaches) GetRandomSatisfiedChannel(model string, ignoreChannel ...int) (*Channel, error)
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" 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 int `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, startIdx int, num 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 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" )
type NotFoundError ¶
type NotFoundError string
func (NotFoundError) Error ¶
func (e NotFoundError) Error() string
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 `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"` Subnet string `json:"subnet"` 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"` Subnet string `json:"subnet" 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)
Click to show internal directories.
Click to hide internal directories.