model

package
v0.0.0-...-af8a321 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2025 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Index

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 BatchInsertChannels(channels []*Channel) error

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 CacheDeleteGroup(id string) error

func CacheDeleteToken

func CacheDeleteToken(key string) error

func CacheGetGroupModelTPM

func CacheGetGroupModelTPM(id string, model string) (int64, error)

func CacheSetGroup

func CacheSetGroup(group *GroupCache) error

func CacheSetToken

func CacheSetToken(token *TokenCache) error

func CacheUpdateGroupRPM

func CacheUpdateGroupRPM(id string, rpm map[string]int64) error

func CacheUpdateGroupRPMRatio

func CacheUpdateGroupRPMRatio(id string, rpmRatio float64) error

func CacheUpdateGroupStatus

func CacheUpdateGroupStatus(id string, status int) error

func CacheUpdateGroupTPM

func CacheUpdateGroupTPM(id string, tpm map[string]int64) error

func CacheUpdateGroupTPMRatio

func CacheUpdateGroupTPMRatio(id string, tpmRatio float64) error

func CacheUpdateGroupUsedAmountOnlyIncrease

func CacheUpdateGroupUsedAmountOnlyIncrease(id string, amount float64) error

func CacheUpdateTokenName

func CacheUpdateTokenName(key string, name string) error

func CacheUpdateTokenStatus

func CacheUpdateTokenStatus(key string, status int) error

func CacheUpdateTokenUsedAmountOnlyIncrease

func CacheUpdateTokenUsedAmountOnlyIncrease(key string, amount float64) error

func CheckModelConfigExist

func CheckModelConfigExist(models []string) error

func ClearLastTestErrorAt

func ClearLastTestErrorAt(id int) error

func CloseDB

func CloseDB() error

func CreateConsumeError

func CreateConsumeError(requestID string, requestAt time.Time, group string, tokenName string, model string, content string, usedAmount float64, tokenID int) error

func CreateGroup

func CreateGroup(group *Group) error

func CreateLogIndexes

func CreateLogIndexes(db *gorm.DB) error

func DeleteChannelByID

func DeleteChannelByID(id int) error

func DeleteChannelsByIDs

func DeleteChannelsByIDs(ids []int) error

func DeleteDisabledChannel

func DeleteDisabledChannel() error

func DeleteFailChannel

func DeleteFailChannel() error

func DeleteGroupByID

func DeleteGroupByID(id string) (err error)

func DeleteGroupLogs

func DeleteGroupLogs(groupID string) (int64, error)

func DeleteGroupTokenByID

func DeleteGroupTokenByID(groupID string, id int) (err error)

func DeleteGroupTokensByIDs

func DeleteGroupTokensByIDs(groupID string, ids []int) (err error)

func DeleteGroupsByIDs

func DeleteGroupsByIDs(ids []string) (err error)

func DeleteModelConfig

func DeleteModelConfig(model string) error

func DeleteModelConfigsByModels

func DeleteModelConfigsByModels(models []string) error

func DeleteOldLog

func DeleteOldLog(timestamp time.Time) (int64, error)

func DeleteTokenByID

func DeleteTokenByID(id int) (err error)

func DeleteTokensByIDs

func DeleteTokensByIDs(ids []int) (err error)

func GetGroupLastRequestTime

func GetGroupLastRequestTime(group string) (time.Time, error)

func GetGroupModelTPM

func GetGroupModelTPM(group string, model string) (int64, error)

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 GetModelConfigWithModels

func GetModelConfigWithModels(models []string) ([]string, []string, error)

func GetTokenLastRequestTime

func GetTokenLastRequestTime(id int) (time.Time, error)

func GetTokenUsedAmount

func GetTokenUsedAmount(id int) (float64, error)

func GetTokenUsedAmountByKey

func GetTokenUsedAmountByKey(key string) (float64, error)

func HandleNotFound

func HandleNotFound(err error, errMsg ...string) error

func HandleUpdateResult

func HandleUpdateResult(result *gorm.DB, entityName string) error

Helper function to handle update results

func InitDB

func InitDB()

func InitLogDB

func InitLogDB()

func InitModelConfigAndChannelCache

func InitModelConfigAndChannelCache() error

InitModelConfigAndChannelCache initializes the channel cache from database

func InitOption2DB

func InitOption2DB() error

func InsertToken

func InsertToken(token *Token, autoCreateGroup bool) error

func NewModelConfig

func NewModelConfig(opts ...ModelConfigOption) map[ModelConfigKey]any

func OnConflictDoNothing

func OnConflictDoNothing() *gorm.DB

func OpenMySQL

func OpenMySQL(dsn string) (*gorm.DB, error)

func OpenPostgreSQL

func OpenPostgreSQL(dsn string) (*gorm.DB, error)

func OpenSQLite

func OpenSQLite(sqlitePath string) (*gorm.DB, error)

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 String2Int(keyword string) int

func SyncModelConfigAndChannelCache

func SyncModelConfigAndChannelCache(ctx context.Context, wg *sync.WaitGroup, frequency time.Duration)

func SyncOptions

func SyncOptions(ctx context.Context, wg *sync.WaitGroup, frequency time.Duration)

func UpdateChannel

func UpdateChannel(channel *Channel) error

func UpdateChannelStatusByID

func UpdateChannelStatusByID(id int, status int) error

func UpdateChannelUsedAmount

func UpdateChannelUsedAmount(id int, amount float64, requestCount int) error

func UpdateGroupRPM

func UpdateGroupRPM(id string, rpm map[string]int64) (err error)

func UpdateGroupRPMRatio

func UpdateGroupRPMRatio(id string, rpmRatio float64) (err error)

func UpdateGroupStatus

func UpdateGroupStatus(id string, status int) (err error)

func UpdateGroupTPM

func UpdateGroupTPM(id string, tpm map[string]int64) (err error)

func UpdateGroupTPMRatio

func UpdateGroupTPMRatio(id string, tpmRatio float64) (err error)

func UpdateGroupTokenName

func UpdateGroupTokenName(group string, id int, name string) (err error)

func UpdateGroupTokenStatus

func UpdateGroupTokenStatus(group string, id int, status int) (err error)

func UpdateGroupUsedAmountAndRequestCount

func UpdateGroupUsedAmountAndRequestCount(id string, amount float64, count int) (err error)

func UpdateOption

func UpdateOption(key string, value string) error

func UpdateOptions

func UpdateOptions(options map[string]string) error

func UpdateToken

func UpdateToken(token *Token) (err error)

func UpdateTokenName

func UpdateTokenName(id int, name string) (err error)

func UpdateTokenStatus

func UpdateTokenStatus(id int, status int) (err error)

func UpdateTokenUsedAmount

func UpdateTokenUsedAmount(id int, amount float64, requestCount int) (err error)

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 GetAllChannels() (channels []*Channel, err error)

func GetChannelByID

func GetChannelByID(id int) (*Channel, error)

func GetChannels

func GetChannels(startIdx int, num int, id int, name string, key string, channelType int, baseURL string, order string) (channels []*Channel, total int64, err error)

func LoadChannelByID

func LoadChannelByID(id int) (*Channel, error)

func LoadChannels

func LoadChannels() ([]*Channel, error)

func LoadEnabledChannels

func LoadEnabledChannels() ([]*Channel, error)

func SearchChannels

func SearchChannels(keyword string, startIdx int, num int, id int, name string, key string, channelType int, baseURL string, order string) (channels []*Channel, total int64, err error)

func (*Channel) BeforeDelete

func (c *Channel) BeforeDelete(tx *gorm.DB) (err error)

func (*Channel) GetPriority

func (c *Channel) GetPriority() int32

func (*Channel) MarshalJSON

func (c *Channel) MarshalJSON() ([]byte, error)

func (*Channel) UpdateBalance

func (c *Channel) UpdateBalance(balance float64) error

func (*Channel) UpdateModelTest

func (c *Channel) UpdateModelTest(testAt time.Time, model, actualModel string, mode int, took float64, success bool, response string, code int) (*ChannelTest, error)

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 ChartData

type ChartData struct {
	Timestamp      int64   `json:"timestamp"`
	RequestCount   int64   `json:"request_count"`
	UsedAmount     float64 `json:"used_amount"`
	ExceptionCount int64   `json:"exception_count"`
}

type CodeType

type CodeType string
const (
	CodeTypeAll     CodeType = "all"
	CodeTypeSuccess CodeType = "success"
	CodeTypeError   CodeType = "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 SearchConsumeError(keyword string, requestID string, group string, tokenName string, model string, content string, usedAmount float64, tokenID int, page int, perPage int, order string) ([]*ConsumeError, int64, error)

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 GetLogs

func GetLogs(
	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,
) (*GetLogsResult, error)

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 GetGroupByID(id string) (*Group, error)

func GetGroups

func GetGroups(startIdx int, num int, order string, onlyDisabled bool) (groups []*Group, total int64, err error)

func SearchGroup

func SearchGroup(keyword string, startIdx int, num int, order string, status int) (groups []*Group, total int64, err error)

func (*Group) BeforeDelete

func (g *Group) BeforeDelete(tx *gorm.DB) (err error)

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) BeforeSave

func (l *Log) BeforeSave(_ *gorm.DB) (err error)

func (*Log) MarshalJSON

func (l *Log) MarshalJSON() ([]byte, error)

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 GetModelConfigs(startIdx int, num int, model string) (configs []*ModelConfig, total int64, err error)

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

type Option struct {
	Key   string `gorm:"primaryKey" json:"key"`
	Value string `json:"value"`
}

func GetAllOption

func GetAllOption() ([]*Option, error)

func GetOption

func GetOption(key string) (*Option, error)

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 GetGroupTokenByID

func GetGroupTokenByID(group string, id int) (*Token, error)

func GetTokenByID

func GetTokenByID(id int) (*Token, error)

func GetTokenByKey

func GetTokenByKey(key string) (*Token, error)

func GetTokens

func GetTokens(group string, startIdx int, num int, order string, status int) (tokens []*Token, total int64, err error)

func SearchTokens

func SearchTokens(group string, keyword string, startIdx int, num int, order string, status int, name string, key string) (tokens []*Token, total int64, err error)

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)

Jump to

Keyboard shortcuts

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