middleware

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2025 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Channel      = "channel"
	Group        = "group"
	Token        = "token"
	GroupBalance = "group_balance"
	RequestModel = "request_model"
	RequestAt    = "request_at"
	RequestID    = "request_id"
	ModelCaches  = "model_caches"
	ModelConfig  = "model_config"
)
View Source
const (
	XRateLimitLimitRequests = "X-RateLimit-Limit-Requests"
	//nolint:gosec
	XRateLimitLimitTokens       = "X-RateLimit-Limit-Tokens"
	XRateLimitRemainingRequests = "X-RateLimit-Remaining-Requests"
	//nolint:gosec
	XRateLimitRemainingTokens = "X-RateLimit-Remaining-Tokens"
	XRateLimitResetRequests   = "X-RateLimit-Reset-Requests"
	//nolint:gosec
	XRateLimitResetTokens = "X-RateLimit-Reset-Tokens"
)
View Source
const (
	AIProxyChannelHeader = "Aiproxy-Channel"
)
View Source
const (
	ErrorTypeAIPROXY = "aiproxy_error"
)
View Source
const (
	GroupBalanceNotEnough = "group_balance_not_enough"
)
View Source
const (
	RequestIDHeader = "X-Request-Id"
)

Variables

View Source
var (
	ErrRequestRateLimitExceeded = errors.New("request rate limit exceeded, please try again later")
	ErrRequestTpmLimitExceeded  = errors.New("request tpm limit exceeded, please try again later")
)

Functions

func AbortLogWithMessage added in v0.1.5

func AbortLogWithMessage(c *gin.Context, statusCode int, message string, fields ...*ErrorField)

func AbortWithMessage added in v0.1.5

func AbortWithMessage(c *gin.Context, statusCode int, message string, fields ...*ErrorField)

func AdminAuth

func AdminAuth(c *gin.Context)

func CORS

func CORS() gin.HandlerFunc

func CheckRelayMode added in v0.1.6

func CheckRelayMode(requestMode mode.Mode, modelMode mode.Mode) bool

func ErrorResponse

func ErrorResponse(c *gin.Context, code int, message string)

func GenRequestID

func GenRequestID(t time.Time) string

func GetChannel added in v0.1.1

func GetChannel(c *gin.Context) *model.Channel

func GetGroup

func GetGroup(c *gin.Context) *model.GroupCache

func GetGroupAdjustedModelConfig

func GetGroupAdjustedModelConfig(group *model.GroupCache, mc model.ModelConfig) model.ModelConfig

func GetLogger

func GetLogger(c *gin.Context) *logrus.Entry

func GetModelCaches

func GetModelCaches(c *gin.Context) *model.ModelCaches

func GetModelConfig

func GetModelConfig(c *gin.Context) *model.ModelConfig

func GetModelFromJSON

func GetModelFromJSON(body []byte) (string, error)

func GetRequestAt added in v0.1.5

func GetRequestAt(c *gin.Context) time.Time

func GetRequestID

func GetRequestID(c *gin.Context) string

func GetRequestModel added in v0.1.4

func GetRequestModel(c *gin.Context) string

func GetToken

func GetToken(c *gin.Context) *model.TokenCache

func IPBlock added in v0.1.5

func IPBlock(c *gin.Context)

func MessageWithRequestID

func MessageWithRequestID(c *gin.Context, message string) string

func NewDistribute

func NewDistribute(mode mode.Mode) gin.HandlerFunc

func NewLog

func NewLog(l *logrus.Logger) gin.HandlerFunc

func NewLogger

func NewLogger() *logrus.Entry

func NewMetaByContext

func NewMetaByContext(c *gin.Context,
	channel *model.Channel,
	mode mode.Mode,
	opts ...meta.Option,
) *meta.Meta

func RequestIDMiddleware added in v0.1.4

func RequestIDMiddleware(c *gin.Context)

func SetLogActualModelFields

func SetLogActualModelFields(fields logrus.Fields, actualModel string)

func SetLogChannelFields

func SetLogChannelFields(fields logrus.Fields, channel meta.ChannelMeta)

func SetLogFieldsFromMeta

func SetLogFieldsFromMeta(m *meta.Meta, fields logrus.Fields)

func SetLogGroupFields

func SetLogGroupFields(fields logrus.Fields, group *model.GroupCache)

func SetLogModeField

func SetLogModeField(fields logrus.Fields, mode mode.Mode)

func SetLogModelFields

func SetLogModelFields(fields logrus.Fields, model string)

func SetLogRequestIDField

func SetLogRequestIDField(fields logrus.Fields, requestID string)

func SetLogTokenFields

func SetLogTokenFields(fields logrus.Fields, token *model.TokenCache, internal bool)

func SetRequestAt added in v0.1.5

func SetRequestAt(c *gin.Context, requestAt time.Time)

func SetRequestID

func SetRequestID(c *gin.Context, id string)

func SuccessResponse

func SuccessResponse(c *gin.Context, data any)

func TokenAuth

func TokenAuth(c *gin.Context)

Types

type APIResponse

type APIResponse struct {
	Data    any    `json:"data,omitempty"`
	Message string `json:"message,omitempty"`
	Success bool   `json:"success"`
}

type ErrorField added in v0.1.5

type ErrorField struct {
	Type string `json:"type"`
	Code any    `json:"code"`
}

type GroupBalanceConsumer

type GroupBalanceConsumer struct {
	Group string

	CheckBalance func(amount float64) bool
	Consumer     balance.PostGroupConsumer
	// contains filtered or unexported fields
}

func GetGroupBalanceConsumer

func GetGroupBalanceConsumer(c *gin.Context, group *model.GroupCache) (*GroupBalanceConsumer, error)

func GetGroupBalanceConsumerFromContext

func GetGroupBalanceConsumerFromContext(c *gin.Context) *GroupBalanceConsumer

type ModelRequest

type ModelRequest struct {
	Model string `form:"model" json:"model"`
}

Jump to

Keyboard shortcuts

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