SYMBOL INDEX (1460 symbols across 273 files) FILE: common/blacklist/main.go function init (line 10) | func init() { function userId2Key (line 14) | func userId2Key(id int) string { function BanUser (line 18) | func BanUser(id int) { function UnbanUser (line 22) | func UnbanUser(id int) { function IsUserBanned (line 26) | func IsUserBanned(id int) bool { FILE: common/client/init.go function Init (line 16) | func Init() { FILE: common/conv/any.go function AsString (line 3) | func AsString(v any) string { FILE: common/crypto.go function Password2Hash (line 5) | func Password2Hash(password string) (string, error) { function ValidatePasswordAndHash (line 11) | func ValidatePasswordAndHash(password string, hash string) bool { FILE: common/ctxkey/key.go constant Config (line 4) | Config = "config" constant Id (line 5) | Id = "id" constant Username (line 6) | Username = "username" constant Role (line 7) | Role = "role" constant Status (line 8) | Status = "status" constant Channel (line 9) | Channel = "channel" constant ChannelId (line 10) | ChannelId = "channel_id" constant SpecificChannelId (line 11) | SpecificChannelId = "specific_channel_id" constant RequestModel (line 12) | RequestModel = "request_model" constant ConvertedRequest (line 13) | ConvertedRequest = "converted_request" constant OriginalModel (line 14) | OriginalModel = "original_model" constant Group (line 15) | Group = "group" constant ModelMapping (line 16) | ModelMapping = "model_mapping" constant ChannelName (line 17) | ChannelName = "channel_name" constant TokenId (line 18) | TokenId = "token_id" constant TokenName (line 19) | TokenName = "token_name" constant BaseURL (line 20) | BaseURL = "base_url" constant AvailableModels (line 21) | AvailableModels = "available_models" constant KeyRequestBody (line 22) | KeyRequestBody = "key_request_body" constant SystemPrompt (line 23) | SystemPrompt = "system_prompt" FILE: common/custom-event.go type stringWriter (line 14) | type stringWriter interface type stringWrapper (line 19) | type stringWrapper struct method writeString (line 23) | func (w stringWrapper) writeString(str string) (int, error) { function checkWriter (line 27) | func checkWriter(writer io.Writer) stringWriter { type CustomEvent (line 50) | type CustomEvent struct method Render (line 70) | func (r CustomEvent) Render(w http.ResponseWriter) error { method WriteContentType (line 75) | func (r CustomEvent) WriteContentType(w http.ResponseWriter) { function encode (line 57) | func encode(writer io.Writer, event CustomEvent) error { function writeData (line 62) | func writeData(w stringWriter, data interface{}) error { FILE: common/embed-file-system.go type embedFileSystem (line 12) | type embedFileSystem struct method Exists (line 16) | func (e embedFileSystem) Exists(prefix string, path string) bool { function EmbedFolder (line 21) | func EmbedFolder(fsEmbed embed.FS, targetPath string) static.ServeFileSy... FILE: common/env/helper.go function Bool (line 8) | func Bool(env string, defaultValue bool) bool { function Int (line 15) | func Int(env string, defaultValue int) int { function Float64 (line 26) | func Float64(env string, defaultValue float64) float64 { function String (line 37) | func String(env string, defaultValue string) string { FILE: common/gin.go function GetRequestBody (line 13) | func GetRequestBody(c *gin.Context) ([]byte, error) { function UnmarshalBodyReusable (line 27) | func UnmarshalBodyReusable(c *gin.Context, v any) error { function SetEventStreamHeaders (line 47) | func SetEventStreamHeaders(c *gin.Context) { FILE: common/helper/helper.go function OpenBrowser (line 19) | func OpenBrowser(url string) { function GetIp (line 35) | func GetIp() (ip string) { function Bytes2Size (line 66) | func Bytes2Size(num int64) string { function Interface2String (line 84) | func Interface2String(inter interface{}) string { function UnescapeHTML (line 96) | func UnescapeHTML(x string) interface{} { function IntMax (line 100) | func IntMax(a int, b int) int { function GenRequestID (line 108) | func GenRequestID() string { function SetRequestID (line 112) | func SetRequestID(ctx context.Context, id string) context.Context { function GetRequestID (line 116) | func GetRequestID(ctx context.Context) string { function GetResponseID (line 124) | func GetResponseID(c *gin.Context) string { function Max (line 129) | func Max(a int, b int) int { function AssignOrDefault (line 137) | func AssignOrDefault(value string, defaultValue string) string { function MessageWithRequestId (line 144) | func MessageWithRequestId(message string, id string) string { function String2Int (line 148) | func String2Int(str string) int { function Float64PtrMax (line 156) | func Float64PtrMax(p *float64, maxValue float64) *float64 { function Float64PtrMin (line 166) | func Float64PtrMin(p *float64, minValue float64) *float64 { FILE: common/helper/key.go constant RequestIdKey (line 4) | RequestIdKey = "X-Oneapi-Request-Id" FILE: common/helper/time.go function GetTimestamp (line 8) | func GetTimestamp() int64 { function GetTimeString (line 12) | func GetTimeString() string { function CalcElapsedTime (line 18) | func CalcElapsedTime(start time.Time) int64 { FILE: common/i18n/i18n.go function Init (line 21) | func Init() error { function GetLang (line 48) | func GetLang(c *gin.Context) string { function Translate (line 60) | func Translate(c *gin.Context, message string) string { function translateHelper (line 65) | func translateHelper(lang, message string) string { FILE: common/image/image.go function IsImageUrl (line 22) | func IsImageUrl(url string) (bool, error) { function GetImageSizeFromUrl (line 33) | func GetImageSizeFromUrl(url string) (width int, height int, err error) { function GetImageFromUrl (line 50) | func GetImageFromUrl(url string) (mimeType string, data string, err erro... function GetImageSizeFromBase64 (line 89) | func GetImageSizeFromBase64(encoded string) (width int, height int, err ... function GetImageSize (line 107) | func GetImageSize(image string) (width int, height int, err error) { FILE: common/image/image_test.go type CountingReader (line 22) | type CountingReader struct method Read (line 27) | func (r *CountingReader) Read(p []byte) (n int, err error) { function TestMain (line 48) | func TestMain(m *testing.M) { function TestDecode (line 53) | func TestDecode(t *testing.T) { function TestBase64 (line 98) | func TestBase64(t *testing.T) { function TestGetImageSize (line 151) | func TestGetImageSize(t *testing.T) { function TestGetImageSizeFromBase64 (line 162) | func TestGetImageSizeFromBase64(t *testing.T) { FILE: common/init.go function printHelp (line 20) | func printHelp() { function Init (line 27) | func Init() { FILE: common/logger/logger.go type loggerLevel (line 21) | type loggerLevel constant loggerDEBUG (line 24) | loggerDEBUG loggerLevel = "DEBUG" constant loggerINFO (line 25) | loggerINFO loggerLevel = "INFO" constant loggerWarn (line 26) | loggerWarn loggerLevel = "WARN" constant loggerError (line 27) | loggerError loggerLevel = "ERROR" constant loggerFatal (line 28) | loggerFatal loggerLevel = "FATAL" function SetupLogger (line 33) | func SetupLogger() { function SysLog (line 52) | func SysLog(s string) { function SysLogf (line 56) | func SysLogf(format string, a ...any) { function SysWarn (line 60) | func SysWarn(s string) { function SysWarnf (line 64) | func SysWarnf(format string, a ...any) { function SysError (line 68) | func SysError(s string) { function SysErrorf (line 72) | func SysErrorf(format string, a ...any) { function Debug (line 76) | func Debug(ctx context.Context, msg string) { function Info (line 83) | func Info(ctx context.Context, msg string) { function Warn (line 87) | func Warn(ctx context.Context, msg string) { function Error (line 91) | func Error(ctx context.Context, msg string) { function Debugf (line 95) | func Debugf(ctx context.Context, format string, a ...any) { function Infof (line 102) | func Infof(ctx context.Context, format string, a ...any) { function Warnf (line 106) | func Warnf(ctx context.Context, format string, a ...any) { function Errorf (line 110) | func Errorf(ctx context.Context, format string, a ...any) { function FatalLog (line 114) | func FatalLog(s string) { function FatalLogf (line 118) | func FatalLogf(format string, a ...any) { function logHelper (line 122) | func logHelper(ctx context.Context, level loggerLevel, msg string) { function getLineInfo (line 143) | func getLineInfo() (string, string) { FILE: common/message/email.go function shouldAuth (line 17) | func shouldAuth() bool { function SendEmail (line 21) | func SendEmail(subject string, receiver string, content string) error { FILE: common/message/main.go constant ByAll (line 9) | ByAll = "all" constant ByEmail (line 10) | ByEmail = "email" constant ByMessagePusher (line 11) | ByMessagePusher = "message_pusher" function Notify (line 14) | func Notify(by string, title string, description string, content string)... FILE: common/message/message-pusher.go type request (line 11) | type request struct type response (line 20) | type response struct function SendMessage (line 25) | func SendMessage(title string, description string, content string) error { FILE: common/message/template.go function EmailTemplate (line 10) | func EmailTemplate(title, content string) string { FILE: common/network/ip.go function splitSubnets (line 11) | func splitSubnets(subnets string) []string { function isValidSubnet (line 19) | func isValidSubnet(subnet string) error { function isIpInSubnet (line 27) | func isIpInSubnet(ctx context.Context, ip string, subnet string) bool { function IsValidSubnets (line 36) | func IsValidSubnets(subnets string) error { function IsIpInSubnets (line 45) | func IsIpInSubnets(ctx context.Context, ip string, subnets string) bool { FILE: common/network/ip_test.go function TestIsIpInSubnet (line 10) | func TestIsIpInSubnet(t *testing.T) { FILE: common/random/main.go function GetUUID (line 10) | func GetUUID() string { constant keyChars (line 16) | keyChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" constant keyNumbers (line 17) | keyNumbers = "0123456789" function init (line 19) | func init() { function GenerateKey (line 23) | func GenerateKey() string { function GetRandomString (line 40) | func GetRandomString(length int) string { function GetRandomNumberString (line 49) | func GetRandomNumberString(length int) string { function RandRange (line 59) | func RandRange(min, max int) int { FILE: common/rate-limit.go type InMemoryRateLimiter (line 8) | type InMemoryRateLimiter struct method Init (line 14) | func (l *InMemoryRateLimiter) Init(expirationDuration time.Duration) { method clearExpiredItems (line 28) | func (l *InMemoryRateLimiter) clearExpiredItems() { method Request (line 45) | func (l *InMemoryRateLimiter) Request(key string, maxRequestNum int, d... FILE: common/redis.go function InitRedisClient (line 17) | func InitRedisClient() (err error) { function ParseRedisOption (line 55) | func ParseRedisOption() *redis.Options { function RedisSet (line 63) | func RedisSet(key string, value string, expiration time.Duration) error { function RedisGet (line 68) | func RedisGet(key string) (string, error) { function RedisDel (line 73) | func RedisDel(key string) error { function RedisDecrease (line 78) | func RedisDecrease(key string, value int64) error { FILE: common/render/render.go function StringData (line 12) | func StringData(c *gin.Context, str string) { function ObjectData (line 19) | func ObjectData(c *gin.Context, object interface{}) error { function Done (line 28) | func Done(c *gin.Context) { FILE: common/utils.go function LogQuota (line 8) | func LogQuota(quota int64) string { FILE: common/utils/array.go function DeDuplication (line 3) | func DeDuplication(slice []string) []string { FILE: common/validate.go function init (line 7) | func init() { FILE: common/verification.go type verificationValue (line 10) | type verificationValue struct constant EmailVerificationPurpose (line 16) | EmailVerificationPurpose = "v" constant PasswordResetPurpose (line 17) | PasswordResetPurpose = "r" function GenerateVerificationCode (line 25) | func GenerateVerificationCode(length int) string { function RegisterVerificationCodeWithKey (line 34) | func RegisterVerificationCodeWithKey(key string, code string, purpose st... function VerifyCodeWithKey (line 46) | func VerifyCodeWithKey(key string, code string, purpose string) bool { function DeleteKey (line 57) | func DeleteKey(key string, purpose string) { function removeExpiredPairs (line 64) | func removeExpiredPairs() { function init (line 73) | func init() { FILE: controller/auth/github.go type GitHubOAuthResponse (line 22) | type GitHubOAuthResponse struct type GitHubUser (line 28) | type GitHubUser struct function getGitHubUserInfoByCode (line 34) | func getGitHubUserInfoByCode(code string) (*GitHubUser, error) { function GitHubOAuth (line 85) | func GitHubOAuth(c *gin.Context) { function GitHubBind (line 168) | func GitHubBind(c *gin.Context) { function GenerateOAuthCode (line 223) | func GenerateOAuthCode(c *gin.Context) { FILE: controller/auth/lark.go type LarkOAuthResponse (line 21) | type LarkOAuthResponse struct type LarkUser (line 25) | type LarkUser struct function getLarkUserInfoByCode (line 30) | func getLarkUserInfoByCode(code string) (*LarkUser, error) { function LarkOAuth (line 83) | func LarkOAuth(c *gin.Context) { function LarkBind (line 157) | func LarkBind(c *gin.Context) { FILE: controller/auth/oidc.go type OidcResponse (line 21) | type OidcResponse struct type OidcUser (line 30) | type OidcUser struct function getOidcUserInfoByCode (line 38) | func getOidcUserInfoByCode(code string) (*OidcUser, error) { function OidcAuth (line 91) | func OidcAuth(c *gin.Context) { function OidcBind (line 175) | func OidcBind(c *gin.Context) { FILE: controller/auth/wechat.go type wechatLoginResponse (line 19) | type wechatLoginResponse struct function getWeChatIdByCode (line 25) | func getWeChatIdByCode(code string) (string, error) { function WeChatAuth (line 56) | func WeChatAuth(c *gin.Context) { function WeChatBind (line 119) | func WeChatBind(c *gin.Context) { FILE: controller/billing.go function GetSubscription (line 11) | func GetSubscription(c *gin.Context) { function GetUsage (line 65) | func GetUsage(c *gin.Context) { FILE: controller/channel-billing.go type OpenAISubscriptionResponse (line 24) | type OpenAISubscriptionResponse struct type OpenAIUsageDailyCost (line 33) | type OpenAIUsageDailyCost struct type OpenAICreditGrants (line 41) | type OpenAICreditGrants struct type OpenAIUsageResponse (line 48) | type OpenAIUsageResponse struct type OpenAISBUsageResponse (line 54) | type OpenAISBUsageResponse struct type AIProxyUserOverviewResponse (line 61) | type AIProxyUserOverviewResponse struct type API2GPTUsageResponse (line 70) | type API2GPTUsageResponse struct type APGC2DGPTUsageResponse (line 77) | type APGC2DGPTUsageResponse struct type SiliconFlowUsageResponse (line 85) | type SiliconFlowUsageResponse struct type DeepSeekUsageResponse (line 105) | type DeepSeekUsageResponse struct type OpenRouterResponse (line 115) | type OpenRouterResponse struct function GetAuthHeader (line 123) | func GetAuthHeader(token string) http.Header { function GetResponseBody (line 129) | func GetResponseBody(method, url string, channel *model.Channel, headers... function updateChannelCloseAIBalance (line 155) | func updateChannelCloseAIBalance(channel *model.Channel) (float64, error) { function updateChannelOpenAISBBalance (line 171) | func updateChannelOpenAISBBalance(channel *model.Channel) (float64, erro... function updateChannelAIProxyBalance (line 193) | func updateChannelAIProxyBalance(channel *model.Channel) (float64, error) { function updateChannelAPI2GPTBalance (line 213) | func updateChannelAPI2GPTBalance(channel *model.Channel) (float64, error) { function updateChannelAIGC2DBalance (line 229) | func updateChannelAIGC2DBalance(channel *model.Channel) (float64, error) { function updateChannelSiliconFlowBalance (line 244) | func updateChannelSiliconFlowBalance(channel *model.Channel) (float64, e... function updateChannelDeepSeekBalance (line 266) | func updateChannelDeepSeekBalance(channel *model.Channel) (float64, erro... function updateChannelOpenRouterBalance (line 295) | func updateChannelOpenRouterBalance(channel *model.Channel) (float64, er... function updateChannelBalance (line 311) | func updateChannelBalance(channel *model.Channel) (float64, error) { function UpdateChannelBalance (line 376) | func UpdateChannelBalance(c *gin.Context) { function updateAllChannelsBalance (line 409) | func updateAllChannelsBalance() error { function UpdateAllChannelsBalance (line 436) | func UpdateAllChannelsBalance(c *gin.Context) { function AutomaticallyUpdateChannels (line 452) | func AutomaticallyUpdateChannels(frequency int) { FILE: controller/channel-test.go function buildTestRequest (line 37) | func buildTestRequest(model string) *relaymodel.GeneralOpenAIRequest { function parseTestResponse (line 52) | func parseTestResponse(resp string) (*openai.TextResponse, string, error) { function testChannel (line 68) | func testChannel(ctx context.Context, channel *model.Channel, request *r... function TestChannel (line 169) | func TestChannel(c *gin.Context) { function testChannels (line 219) | func testChannels(ctx context.Context, notify bool, scope string) error { function TestChannels (line 276) | func TestChannels(c *gin.Context) { function AutomaticallyTestChannels (line 297) | func AutomaticallyTestChannels(frequency int) { FILE: controller/channel.go function GetAllChannels (line 13) | func GetAllChannels(c *gin.Context) { function SearchChannels (line 34) | func SearchChannels(c *gin.Context) { function GetChannel (line 52) | func GetChannel(c *gin.Context) { function AddChannel (line 77) | func AddChannel(c *gin.Context) { function DeleteChannel (line 113) | func DeleteChannel(c *gin.Context) { function DeleteDisabledChannel (line 131) | func DeleteDisabledChannel(c *gin.Context) { function UpdateChannel (line 148) | func UpdateChannel(c *gin.Context) { FILE: controller/group.go function GetGroups (line 9) | func GetGroups(c *gin.Context) { FILE: controller/log.go function GetAllLogs (line 12) | func GetAllLogs(c *gin.Context) { function GetUserLogs (line 40) | func GetUserLogs(c *gin.Context) { function SearchAllLogs (line 67) | func SearchAllLogs(c *gin.Context) { function SearchUserLogs (line 85) | func SearchUserLogs(c *gin.Context) { function GetLogsStat (line 104) | func GetLogsStat(c *gin.Context) { function GetLogsSelfStat (line 125) | func GetLogsSelfStat(c *gin.Context) { function DeleteHistoryLogs (line 146) | func DeleteHistoryLogs(c *gin.Context) { FILE: controller/misc.go function GetStatus (line 18) | func GetStatus(c *gin.Context) { function GetNotice (line 52) | func GetNotice(c *gin.Context) { function GetAbout (line 63) | func GetAbout(c *gin.Context) { function GetHomePageContent (line 74) | func GetHomePageContent(c *gin.Context) { function SendEmailVerification (line 85) | func SendEmailVerification(c *gin.Context) { function SendPasswordResetEmail (line 145) | func SendPasswordResetEmail(c *gin.Context) { type PasswordResetRequest (line 194) | type PasswordResetRequest struct function ResetPassword (line 199) | func ResetPassword(c *gin.Context) { FILE: controller/model.go type OpenAIModelPermission (line 20) | type OpenAIModelPermission struct type OpenAIModels (line 35) | type OpenAIModels struct function init (line 49) | func init() { function DashboardListModels (line 117) | func DashboardListModels(c *gin.Context) { function ListAllModels (line 125) | func ListAllModels(c *gin.Context) { function ListModels (line 132) | func ListModels(c *gin.Context) { function RetrieveModel (line 171) | func RetrieveModel(c *gin.Context) { function GetUserAvailableModels (line 188) | func GetUserAvailableModels(c *gin.Context) { FILE: controller/option.go function GetOptions (line 16) | func GetOptions(c *gin.Context) { function UpdateOption (line 37) | func UpdateOption(c *gin.Context) { FILE: controller/redemption.go function GetAllRedemptions (line 14) | func GetAllRedemptions(c *gin.Context) { function SearchRedemptions (line 35) | func SearchRedemptions(c *gin.Context) { function GetRedemption (line 53) | func GetRedemption(c *gin.Context) { function AddRedemption (line 78) | func AddRedemption(c *gin.Context) { function DeleteRedemption (line 138) | func DeleteRedemption(c *gin.Context) { function UpdateRedemption (line 155) | func UpdateRedemption(c *gin.Context) { FILE: controller/relay.go function relayHelper (line 26) | func relayHelper(c *gin.Context, relayMode int) *model.ErrorWithStatusCo... function Relay (line 45) | func Relay(c *gin.Context) { function shouldRetry (line 105) | func shouldRetry(c *gin.Context, statusCode int) bool { function processChannelRelayError (line 124) | func processChannelRelayError(ctx context.Context, userId int, channelId... function RelayNotImplemented (line 134) | func RelayNotImplemented(c *gin.Context) { function RelayNotFound (line 146) | func RelayNotFound(c *gin.Context) { FILE: controller/token.go function GetAllTokens (line 16) | func GetAllTokens(c *gin.Context) { function SearchTokens (line 41) | func SearchTokens(c *gin.Context) { function GetToken (line 60) | func GetToken(c *gin.Context) { function GetTokenStatus (line 86) | func GetTokenStatus(c *gin.Context) { function validateToken (line 110) | func validateToken(c *gin.Context, token model.Token) error { function AddToken (line 123) | func AddToken(c *gin.Context) { function DeleteToken (line 170) | func DeleteToken(c *gin.Context) { function UpdateToken (line 188) | func UpdateToken(c *gin.Context) { FILE: controller/user.go type LoginRequest (line 21) | type LoginRequest struct function Login (line 26) | func Login(c *gin.Context) { function SetupLogin (line 68) | func SetupLogin(user *model.User, c *gin.Context) { function Logout (line 96) | func Logout(c *gin.Context) { function Register (line 113) | func Register(c *gin.Context) { function GetAllUsers (line 187) | func GetAllUsers(c *gin.Context) { function SearchUsers (line 211) | func SearchUsers(c *gin.Context) { function GetUser (line 229) | func GetUser(c *gin.Context) { function GetUserDashboard (line 262) | func GetUserDashboard(c *gin.Context) { function GenerateAccessToken (line 285) | func GenerateAccessToken(c *gin.Context) { function GetAffCode (line 321) | func GetAffCode(c *gin.Context) { function GetSelf (line 349) | func GetSelf(c *gin.Context) { function UpdateUser (line 367) | func UpdateUser(c *gin.Context) { function UpdateSelf (line 432) | func UpdateSelf(c *gin.Context) { function DeleteUser (line 479) | func DeleteUser(c *gin.Context) { function DeleteSelf (line 514) | func DeleteSelf(c *gin.Context) { function CreateUser (line 541) | func CreateUser(c *gin.Context) { type ManageRequest (line 591) | type ManageRequest struct function ManageUser (line 597) | func ManageUser(c *gin.Context) { function EmailBind (line 708) | func EmailBind(c *gin.Context) { type topUpRequest (line 750) | type topUpRequest struct function TopUp (line 754) | func TopUp(c *gin.Context) { type adminTopUpRequest (line 782) | type adminTopUpRequest struct function AdminTopUp (line 788) | func AdminTopUp(c *gin.Context) { FILE: main.go function main (line 29) | func main() { FILE: middleware/auth.go function authHelper (line 15) | func authHelper(c *gin.Context, minRole int) { function UserAuth (line 73) | func UserAuth() func(c *gin.Context) { function AdminAuth (line 79) | func AdminAuth() func(c *gin.Context) { function RootAuth (line 85) | func RootAuth() func(c *gin.Context) { function TokenAuth (line 91) | func TokenAuth() func(c *gin.Context) { function shouldCheckModel (line 153) | func shouldCheckModel(c *gin.Context) bool { FILE: middleware/cache.go function Cache (line 7) | func Cache() func(c *gin.Context) { FILE: middleware/cors.go function CORS (line 8) | func CORS() gin.HandlerFunc { FILE: middleware/distributor.go type ModelRequest (line 16) | type ModelRequest struct function Distribute (line 20) | func Distribute() func(c *gin.Context) { function SetupContextForSelectedChannel (line 64) | func SetupContextForSelectedChannel(c *gin.Context, channel *model.Chann... FILE: middleware/gzip.go function GzipDecodeMiddleware (line 10) | func GzipDecodeMiddleware() gin.HandlerFunc { FILE: middleware/language.go function Language (line 11) | func Language() gin.HandlerFunc { FILE: middleware/logger.go function SetUpLogger (line 9) | func SetUpLogger(server *gin.Engine) { FILE: middleware/rate-limit.go function redisRateLimiter (line 19) | func redisRateLimiter(c *gin.Context, maxRequestNum int, duration int64,... function memoryRateLimiter (line 65) | func memoryRateLimiter(c *gin.Context, maxRequestNum int, duration int64... function rateLimitFactory (line 74) | func rateLimitFactory(maxRequestNum int, duration int64, mark string) fu... function GlobalWebRateLimit (line 93) | func GlobalWebRateLimit() func(c *gin.Context) { function GlobalAPIRateLimit (line 97) | func GlobalAPIRateLimit() func(c *gin.Context) { function CriticalRateLimit (line 101) | func CriticalRateLimit() func(c *gin.Context) { function DownloadRateLimit (line 105) | func DownloadRateLimit() func(c *gin.Context) { function UploadRateLimit (line 109) | func UploadRateLimit() func(c *gin.Context) { FILE: middleware/recover.go function RelayPanicRecover (line 12) | func RelayPanicRecover() gin.HandlerFunc { FILE: middleware/request-id.go function RequestId (line 9) | func RequestId() func(c *gin.Context) { FILE: middleware/turnstile-check.go type turnstileCheckResponse (line 13) | type turnstileCheckResponse struct function TurnstileCheck (line 17) | func TurnstileCheck() gin.HandlerFunc { FILE: middleware/utils.go function abortWithMessage (line 12) | func abortWithMessage(c *gin.Context, statusCode int, message string) { function getRequestModel (line 23) | func getRequestModel(c *gin.Context) (string, error) { function isModelInList (line 52) | func isModelInList(modelName string, models string) bool { FILE: model/ability.go type Ability (line 14) | type Ability struct function GetRandomSatisfiedChannel (line 22) | func GetRandomSatisfiedChannel(group string, model string, ignoreFirstPr... method AddAbilities (line 53) | func (channel *Channel) AddAbilities() error { method DeleteAbilities (line 73) | func (channel *Channel) DeleteAbilities() error { method UpdateAbilities (line 79) | func (channel *Channel) UpdateAbilities() error { function UpdateAbilityStatus (line 94) | func UpdateAbilityStatus(channelId int, status bool) error { function GetGroupModels (line 98) | func GetGroupModels(ctx context.Context, group string) ([]string, error) { FILE: model/cache.go function CacheGetTokenByKey (line 28) | func CacheGetTokenByKey(key string) (*Token, error) { function CacheGetUserGroup (line 58) | func CacheGetUserGroup(id int) (group string, err error) { function fetchAndUpdateUserQuota (line 76) | func fetchAndUpdateUserQuota(ctx context.Context, id int) (quota int64, ... function CacheGetUserQuota (line 88) | func CacheGetUserQuota(ctx context.Context, id int) (quota int64, err er... function CacheUpdateUserQuota (line 107) | func CacheUpdateUserQuota(ctx context.Context, id int) error { function CacheDecreaseUserQuota (line 119) | func CacheDecreaseUserQuota(id int, quota int64) error { function CacheIsUserEnabled (line 127) | func CacheIsUserEnabled(userId int) (bool, error) { function CacheGetGroupModels (line 151) | func CacheGetGroupModels(ctx context.Context, group string) ([]string, e... function InitChannelCache (line 173) | func InitChannelCache() { function SyncChannelCache (line 219) | func SyncChannelCache(frequency int) { function CacheGetRandomSatisfiedChannel (line 227) | func CacheGetRandomSatisfiedChannel(group string, model string, ignoreFi... FILE: model/channel.go constant ChannelStatusUnknown (line 14) | ChannelStatusUnknown = 0 constant ChannelStatusEnabled (line 15) | ChannelStatusEnabled = 1 constant ChannelStatusManuallyDisabled (line 16) | ChannelStatusManuallyDisabled = 2 constant ChannelStatusAutoDisabled (line 17) | ChannelStatusAutoDisabled = 3 type Channel (line 20) | type Channel struct method GetPriority (line 100) | func (channel *Channel) GetPriority() int64 { method GetBaseURL (line 107) | func (channel *Channel) GetBaseURL() string { method GetModelMapping (line 114) | func (channel *Channel) GetModelMapping() map[string]string { method Insert (line 127) | func (channel *Channel) Insert() error { method Update (line 137) | func (channel *Channel) Update() error { method UpdateResponseTime (line 148) | func (channel *Channel) UpdateResponseTime(responseTime int64) { method UpdateBalance (line 158) | func (channel *Channel) UpdateBalance(balance float64) { method Delete (line 168) | func (channel *Channel) Delete() error { method LoadConfig (line 178) | func (channel *Channel) LoadConfig() (ChannelConfig, error) { type ChannelConfig (line 43) | type ChannelConfig struct function GetAllChannels (line 55) | func GetAllChannels(startIdx int, num int, scope string) ([]*Channel, er... function SearchChannels (line 69) | func SearchChannels(keyword string) (channels []*Channel, err error) { function GetChannelById (line 74) | func GetChannelById(id int, selectAll bool) (*Channel, error) { function BatchInsertChannels (line 85) | func BatchInsertChannels(channels []Channel) error { function UpdateChannelStatusById (line 190) | func UpdateChannelStatusById(id int, status int) { function UpdateChannelUsedQuota (line 201) | func UpdateChannelUsedQuota(id int, quota int64) { function updateChannelUsedQuota (line 209) | func updateChannelUsedQuota(id int, quota int64) { function DeleteChannelByStatus (line 216) | func DeleteChannelByStatus(status int64) (int64, error) { function DeleteDisabledChannel (line 221) | func DeleteDisabledChannel() (int64, error) { FILE: model/log.go type Log (line 15) | type Log struct constant LogTypeUnknown (line 35) | LogTypeUnknown = iota constant LogTypeTopup (line 36) | LogTypeTopup constant LogTypeConsume (line 37) | LogTypeConsume constant LogTypeManage (line 38) | LogTypeManage constant LogTypeSystem (line 39) | LogTypeSystem constant LogTypeTest (line 40) | LogTypeTest function recordLogHelper (line 43) | func recordLogHelper(ctx context.Context, log *Log) { function RecordLog (line 54) | func RecordLog(ctx context.Context, userId int, logType int, content str... function RecordTopupLog (line 68) | func RecordTopupLog(ctx context.Context, userId int, content string, quo... function RecordConsumeLog (line 80) | func RecordConsumeLog(ctx context.Context, log *Log) { function RecordTestLog (line 90) | func RecordTestLog(ctx context.Context, log *Log) { function GetAllLogs (line 96) | func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, m... function GetUserLogs (line 125) | func GetUserLogs(userId int, logType int, startTimestamp int64, endTimes... function SearchAllLogs (line 148) | func SearchAllLogs(keyword string) (logs []*Log, err error) { function SearchUserLogs (line 153) | func SearchUserLogs(userId int, keyword string) (logs []*Log, err error) { function SumUsedQuota (line 158) | func SumUsedQuota(logType int, startTimestamp int64, endTimestamp int64,... function SumUsedToken (line 186) | func SumUsedToken(logType int, startTimestamp int64, endTimestamp int64,... function DeleteOldLog (line 211) | func DeleteOldLog(targetTimestamp int64) (int64, error) { type LogStatistic (line 216) | type LogStatistic struct function SearchLogsByDayAndModel (line 225) | func SearchLogsByDayAndModel(userId, start, end int) (LogStatistics []*L... FILE: model/main.go function CreateRootAccountIfNeed (line 24) | func CreateRootAccountIfNeed() error { function chooseDB (line 67) | func chooseDB(envName string) (*gorm.DB, error) { function openPostgreSQL (line 83) | func openPostgreSQL(dsn string) (*gorm.DB, error) { function openMySQL (line 94) | func openMySQL(dsn string) (*gorm.DB, error) { function openSQLite (line 102) | func openSQLite() (*gorm.DB, error) { function InitDB (line 111) | func InitDB() { function migrateDB (line 137) | func migrateDB() error { function InitLogDB (line 166) | func InitLogDB() { function migrateLOGDB (line 195) | func migrateLOGDB() error { function setDBConns (line 203) | func setDBConns(db *gorm.DB) *sql.DB { function closeDB (line 220) | func closeDB(db *gorm.DB) error { function CloseDB (line 229) | func CloseDB() error { FILE: model/option.go type Option (line 12) | type Option struct function AllOption (line 17) | func AllOption() ([]*Option, error) { function InitOptionMap (line 24) | func InitOptionMap() { function loadOptionsFromDatabase (line 82) | func loadOptionsFromDatabase() { function SyncOptions (line 95) | func SyncOptions(frequency int) { function UpdateOption (line 103) | func UpdateOption(key string, value string) error { function updateOptionMap (line 119) | func updateOptionMap(key string, value string) (err error) { FILE: model/redemption.go constant RedemptionCodeStatusEnabled (line 15) | RedemptionCodeStatusEnabled = 1 constant RedemptionCodeStatusDisabled (line 16) | RedemptionCodeStatusDisabled = 2 constant RedemptionCodeStatusUsed (line 17) | RedemptionCodeStatusUsed = 3 type Redemption (line 20) | type Redemption struct method Insert (line 92) | func (redemption *Redemption) Insert() error { method SelectUpdate (line 98) | func (redemption *Redemption) SelectUpdate() error { method Update (line 104) | func (redemption *Redemption) Update() error { method Delete (line 110) | func (redemption *Redemption) Delete() error { function GetAllRedemptions (line 32) | func GetAllRedemptions(startIdx int, num int) ([]*Redemption, error) { function SearchRedemptions (line 39) | func SearchRedemptions(keyword string) (redemptions []*Redemption, err e... function GetRedemptionById (line 44) | func GetRedemptionById(id int) (*Redemption, error) { function Redeem (line 54) | func Redeem(ctx context.Context, key string, userId int) (quota int64, e... function DeleteRedemptionById (line 116) | func DeleteRedemptionById(id int) (err error) { FILE: model/token.go constant TokenStatusEnabled (line 17) | TokenStatusEnabled = 1 constant TokenStatusDisabled (line 18) | TokenStatusDisabled = 2 constant TokenStatusExpired (line 19) | TokenStatusExpired = 3 constant TokenStatusExhausted (line 20) | TokenStatusExhausted = 4 type Token (line 23) | type Token struct method Insert (line 126) | func (t *Token) Insert() error { method Update (line 133) | func (t *Token) Update() error { method SelectUpdate (line 139) | func (t *Token) SelectUpdate() error { method Delete (line 144) | func (t *Token) Delete() error { method GetModels (line 150) | func (t *Token) GetModels() string { function GetAllUserTokens (line 39) | func GetAllUserTokens(userId int, startIdx int, num int, order string) (... function SearchUserTokens (line 57) | func SearchUserTokens(userId int, keyword string) (tokens []*Token, err ... function ValidateUserToken (line 62) | func ValidateUserToken(key string) (token *Token, err error) { function GetTokenByIds (line 106) | func GetTokenByIds(id int, userId int) (*Token, error) { function GetTokenById (line 116) | func GetTokenById(id int) (*Token, error) { function DeleteTokenById (line 160) | func DeleteTokenById(id int, userId int) (err error) { function IncreaseTokenQuota (line 173) | func IncreaseTokenQuota(id int, quota int64) (err error) { function increaseTokenQuota (line 184) | func increaseTokenQuota(id int, quota int64) (err error) { function DecreaseTokenQuota (line 195) | func DecreaseTokenQuota(id int, quota int64) (err error) { function decreaseTokenQuota (line 206) | func decreaseTokenQuota(id int, quota int64) (err error) { function PreConsumeTokenQuota (line 217) | func PreConsumeTokenQuota(tokenId int, quota int64) (err error) { function PostConsumeTokenQuota (line 282) | func PostConsumeTokenQuota(tokenId int, quota int64) (err error) { FILE: model/user.go constant RoleGuestUser (line 20) | RoleGuestUser = 0 constant RoleCommonUser (line 21) | RoleCommonUser = 1 constant RoleAdminUser (line 22) | RoleAdminUser = 10 constant RoleRootUser (line 23) | RoleRootUser = 100 constant UserStatusEnabled (line 27) | UserStatusEnabled = 1 constant UserStatusDisabled (line 28) | UserStatusDisabled = 2 constant UserStatusDeleted (line 29) | UserStatusDeleted = 3 type User (line 34) | type User struct method Insert (line 120) | func (user *User) Insert(ctx context.Context, inviterId int) error { method Update (line 167) | func (user *User) Update(updatePassword bool) error { method Delete (line 184) | func (user *User) Delete() error { method ValidateAndFill (line 196) | func (user *User) ValidateAndFill() (err error) { method FillUserById (line 220) | func (user *User) FillUserById() error { method FillUserByEmail (line 228) | func (user *User) FillUserByEmail() error { method FillUserByGitHubId (line 236) | func (user *User) FillUserByGitHubId() error { method FillUserByLarkId (line 244) | func (user *User) FillUserByLarkId() error { method FillUserByOidcId (line 252) | func (user *User) FillUserByOidcId() error { method FillUserByWeChatId (line 260) | func (user *User) FillUserByWeChatId() error { method FillUserByUsername (line 268) | func (user *User) FillUserByUsername() error { function GetMaxUserId (line 56) | func GetMaxUserId() int { function GetAllUsers (line 62) | func GetAllUsers(startIdx int, num int, order string) (users []*User, er... function SearchUsers (line 80) | func SearchUsers(keyword string) (users []*User, err error) { function GetUserById (line 89) | func GetUserById(id int, selectAll bool) (*User, error) { function GetUserIdByAffCode (line 103) | func GetUserIdByAffCode(affCode string) (int, error) { function DeleteUserById (line 112) | func DeleteUserById(id int) (err error) { function IsEmailAlreadyTaken (line 276) | func IsEmailAlreadyTaken(email string) bool { function IsWeChatIdAlreadyTaken (line 280) | func IsWeChatIdAlreadyTaken(wechatId string) bool { function IsGitHubIdAlreadyTaken (line 284) | func IsGitHubIdAlreadyTaken(githubId string) bool { function IsLarkIdAlreadyTaken (line 288) | func IsLarkIdAlreadyTaken(githubId string) bool { function IsOidcIdAlreadyTaken (line 292) | func IsOidcIdAlreadyTaken(oidcId string) bool { function IsUsernameAlreadyTaken (line 296) | func IsUsernameAlreadyTaken(username string) bool { function ResetUserPasswordByEmail (line 300) | func ResetUserPasswordByEmail(email string, password string) error { function IsAdmin (line 312) | func IsAdmin(userId int) bool { function IsUserEnabled (line 325) | func IsUserEnabled(userId int) (bool, error) { function ValidateAccessToken (line 337) | func ValidateAccessToken(token string) (user *User) { function GetUserQuota (line 349) | func GetUserQuota(id int) (quota int64, err error) { function GetUserUsedQuota (line 354) | func GetUserUsedQuota(id int) (quota int64, err error) { function GetUserEmail (line 359) | func GetUserEmail(id int) (email string, err error) { function GetUserGroup (line 364) | func GetUserGroup(id int) (group string, err error) { function IncreaseUserQuota (line 374) | func IncreaseUserQuota(id int, quota int64) (err error) { function increaseUserQuota (line 385) | func increaseUserQuota(id int, quota int64) (err error) { function DecreaseUserQuota (line 390) | func DecreaseUserQuota(id int, quota int64) (err error) { function decreaseUserQuota (line 401) | func decreaseUserQuota(id int, quota int64) (err error) { function GetRootUserEmail (line 406) | func GetRootUserEmail() (email string) { function UpdateUserUsedQuotaAndRequestCount (line 411) | func UpdateUserUsedQuotaAndRequestCount(id int, quota int64) { function updateUserUsedQuotaAndRequestCount (line 420) | func updateUserUsedQuotaAndRequestCount(id int, quota int64, count int) { function updateUserUsedQuota (line 432) | func updateUserUsedQuota(id int, quota int64) { function updateUserRequestCount (line 443) | func updateUserRequestCount(id int, count int) { function GetUsernameById (line 450) | func GetUsernameById(id int) (username string) { FILE: model/utils.go constant BatchUpdateTypeUserQuota (line 11) | BatchUpdateTypeUserQuota = iota constant BatchUpdateTypeTokenQuota (line 12) | BatchUpdateTypeTokenQuota constant BatchUpdateTypeUsedQuota (line 13) | BatchUpdateTypeUsedQuota constant BatchUpdateTypeChannelUsedQuota (line 14) | BatchUpdateTypeChannelUsedQuota constant BatchUpdateTypeRequestCount (line 15) | BatchUpdateTypeRequestCount constant BatchUpdateTypeCount (line 16) | BatchUpdateTypeCount function init (line 22) | func init() { function InitBatchUpdater (line 29) | func InitBatchUpdater() { function addNewRecord (line 38) | func addNewRecord(type_ int, id int, value int64) { function batchUpdate (line 48) | func batchUpdate() { FILE: monitor/channel.go function notifyRootUser (line 12) | func notifyRootUser(subject string, content string) { function DisableChannel (line 31) | func DisableChannel(channelId int, channelName string, reason string) { function MetricDisableChannel (line 47) | func MetricDisableChannel(channelId int, successRate float64) { function EnableChannel (line 64) | func EnableChannel(channelId int, channelName string) { FILE: monitor/manage.go function ShouldDisableChannel (line 11) | func ShouldDisableChannel(err *model.Error, statusCode int) bool { function ShouldEnableChannel (line 46) | func ShouldEnableChannel(err error, openAIErr *model.Error) bool { FILE: monitor/metric.go function consumeSuccess (line 11) | func consumeSuccess(channelId int) { function consumeFail (line 18) | func consumeFail(channelId int) (bool, float64) { function metricSuccessConsumer (line 40) | func metricSuccessConsumer() { function metricFailConsumer (line 49) | func metricFailConsumer() { function init (line 61) | func init() { function Emit (line 68) | func Emit(channelId int, success bool) { FILE: relay/adaptor.go function GetAdaptor (line 27) | func GetAdaptor(apiType int) adaptor.Adaptor { FILE: relay/adaptor/aiproxy/adaptor.go type Adaptor (line 14) | type Adaptor struct method Init (line 18) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 22) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 26) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 32) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 41) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 48) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 52) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 61) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 65) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/aiproxy/constants.go function init (line 7) | func init() { FILE: relay/adaptor/aiproxy/main.go function ConvertRequest (line 25) | func ConvertRequest(request model.GeneralOpenAIRequest) *LibraryRequest { function aiProxyDocuments2Markdown (line 37) | func aiProxyDocuments2Markdown(documents []LibraryDocument) string { function responseAIProxyLibrary2OpenAI (line 48) | func responseAIProxyLibrary2OpenAI(response *LibraryResponse) *openai.Te... function documentsAIProxyLibrary (line 67) | func documentsAIProxyLibrary(documents []LibraryDocument) *openai.ChatCo... function streamResponseAIProxyLibrary2OpenAI (line 80) | func streamResponseAIProxyLibrary2OpenAI(response *LibraryStreamResponse... function StreamHandler (line 92) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 153) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... FILE: relay/adaptor/aiproxy/model.go type LibraryRequest (line 3) | type LibraryRequest struct type LibraryError (line 10) | type LibraryError struct type LibraryDocument (line 15) | type LibraryDocument struct type LibraryResponse (line 20) | type LibraryResponse struct type LibraryStreamResponse (line 27) | type LibraryStreamResponse struct FILE: relay/adaptor/ali/adaptor.go type Adaptor (line 17) | type Adaptor struct method Init (line 21) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 25) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 39) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 56) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 70) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 79) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 83) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 99) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 103) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/ali/image.go function ImageHandler (line 19) | func ImageHandler(c *gin.Context, resp *http.Response) (*model.ErrorWith... function asyncTask (line 71) | func asyncTask(taskID string, key string) (*TaskResponse, error, []byte) { function asyncTaskWait (line 103) | func asyncTaskWait(taskID string, key string) (*TaskResponse, []byte, er... function responseAli2OpenAIImage (line 142) | func responseAli2OpenAIImage(response *TaskResponse, responseFormat stri... function getImageData (line 174) | func getImageData(url string) ([]byte, error) { function Base64Encode (line 189) | func Base64Encode(data []byte) string { FILE: relay/adaptor/ali/main.go constant EnableSearchModelSuffix (line 22) | EnableSearchModelSuffix = "-internet" function ConvertRequest (line 24) | func ConvertRequest(request model.GeneralOpenAIRequest) *ChatRequest { function ConvertEmbeddingRequest (line 59) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) *Embedd... function ConvertImageRequest (line 70) | func ConvertImageRequest(request model.ImageRequest) *ImageRequest { function EmbeddingHandler (line 81) | func EmbeddingHandler(c *gin.Context, resp *http.Response) (*model.Error... function embeddingResponseAli2OpenAI (line 117) | func embeddingResponseAli2OpenAI(response *EmbeddingResponse) *openai.Em... function responseAli2OpenAI (line 135) | func responseAli2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponseAli2OpenAI (line 150) | func streamResponseAli2OpenAI(aliResponse *ChatResponse) *openai.ChatCom... function StreamHandler (line 171) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 230) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... FILE: relay/adaptor/ali/model.go type Message (line 8) | type Message struct type Input (line 13) | type Input struct type Parameters (line 18) | type Parameters struct type ChatRequest (line 30) | type ChatRequest struct type ImageRequest (line 36) | type ImageRequest struct type TaskResponse (line 51) | type TaskResponse struct type Header (line 76) | type Header struct type Payload (line 86) | type Payload struct type WSSMessage (line 104) | type WSSMessage struct type EmbeddingRequest (line 109) | type EmbeddingRequest struct type Embedding (line 119) | type Embedding struct type EmbeddingResponse (line 124) | type EmbeddingResponse struct type Error (line 132) | type Error struct type Usage (line 138) | type Usage struct type Output (line 144) | type Output struct type ChatResponse (line 150) | type ChatResponse struct FILE: relay/adaptor/alibailian/main.go function GetRequestURL (line 10) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/anthropic/adaptor.go type Adaptor (line 16) | type Adaptor struct method Init (line 19) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 23) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 27) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 46) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 53) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 60) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 64) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 73) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 77) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/anthropic/main.go function stopReasonClaude2OpenAI (line 21) | func stopReasonClaude2OpenAI(reason *string) string { function ConvertRequest (line 39) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) *Request { function StreamResponseClaude2OpenAI (line 149) | func StreamResponseClaude2OpenAI(claudeResponse *StreamResponse) (*opena... function ResponseClaude2OpenAI (line 210) | func ResponseClaude2OpenAI(claudeResponse *Response) *openai.TextResponse { function StreamHandler (line 249) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 338) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/anthropic/model.go type Metadata (line 5) | type Metadata struct type ImageSource (line 9) | type ImageSource struct type Content (line 15) | type Content struct type Message (line 27) | type Message struct type Tool (line 32) | type Tool struct type InputSchema (line 38) | type InputSchema struct type Request (line 44) | type Request struct type Usage (line 59) | type Usage struct type Error (line 64) | type Error struct type Response (line 69) | type Response struct type Delta (line 81) | type Delta struct type StreamResponse (line 89) | type StreamResponse struct FILE: relay/adaptor/aws/adaptor.go type Adaptor (line 20) | type Adaptor struct method Init (line 27) | func (a *Adaptor) Init(meta *meta.Meta) { method ConvertRequest (line 35) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 49) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 56) | func (a *Adaptor) GetModelList() (models []string) { method GetChannelName (line 63) | func (a *Adaptor) GetChannelName() string { method GetRequestURL (line 67) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 71) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertImageRequest (line 75) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 82) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... FILE: relay/adaptor/aws/claude/adapter.go type Adaptor (line 16) | type Adaptor struct method ConvertRequest (line 19) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 30) | func (a *Adaptor) DoResponse(c *gin.Context, awsCli *bedrockruntime.Cl... FILE: relay/adaptor/aws/claude/main.go function awsModelID (line 41) | func awsModelID(requestModel string) (string, error) { function Handler (line 49) | func Handler(c *gin.Context, awsCli *bedrockruntime.Client, modelName st... function StreamHandler (line 102) | func StreamHandler(c *gin.Context, awsCli *bedrockruntime.Client) (*rela... FILE: relay/adaptor/aws/claude/model.go type Request (line 8) | type Request struct FILE: relay/adaptor/aws/llama3/adapter.go type Adaptor (line 16) | type Adaptor struct method ConvertRequest (line 19) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 30) | func (a *Adaptor) DoResponse(c *gin.Context, awsCli *bedrockruntime.Cl... FILE: relay/adaptor/aws/llama3/main.go function awsModelID (line 35) | func awsModelID(requestModel string) (string, error) { constant promptTemplate (line 44) | promptTemplate = `<|begin_of_text|>{{range .Messages}}<|start_header_id|... function RenderPrompt (line 49) | func RenderPrompt(messages []relaymodel.Message) string { function ConvertRequest (line 58) | func ConvertRequest(textRequest relaymodel.GeneralOpenAIRequest) *Request { function Handler (line 72) | func Handler(c *gin.Context, awsCli *bedrockruntime.Client, modelName st... function ResponseLlama2OpenAI (line 118) | func ResponseLlama2OpenAI(llamaResponse *Response) *openai.TextResponse { function StreamHandler (line 141) | func StreamHandler(c *gin.Context, awsCli *bedrockruntime.Client) (*rela... function StreamResponseLlama2OpenAI (line 219) | func StreamResponseLlama2OpenAI(llamaResponse *StreamResponse) *openai.C... FILE: relay/adaptor/aws/llama3/main_test.go function TestRenderPrompt (line 11) | func TestRenderPrompt(t *testing.T) { FILE: relay/adaptor/aws/llama3/model.go type Request (line 6) | type Request struct type Response (line 16) | type Response struct type StreamResponse (line 24) | type StreamResponse struct FILE: relay/adaptor/aws/registry.go type AwsModelType (line 9) | type AwsModelType constant AwsClaude (line 12) | AwsClaude AwsModelType = iota + 1 constant AwsLlama3 (line 13) | AwsLlama3 function init (line 20) | func init() { function GetAdaptor (line 29) | func GetAdaptor(model string) utils.AwsAdapter { FILE: relay/adaptor/aws/utils/adaptor.go type AwsAdapter (line 16) | type AwsAdapter interface type Adaptor (line 21) | type Adaptor struct method Init (line 26) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 34) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 38) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertImageRequest (line 42) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 49) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... FILE: relay/adaptor/aws/utils/utils.go function WrapErr (line 9) | func WrapErr(err error) *relaymodel.ErrorWithStatusCode { FILE: relay/adaptor/baidu/adaptor.go type Adaptor (line 17) | type Adaptor struct method Init (line 20) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 24) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 92) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 98) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 112) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 119) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 123) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 137) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 141) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/baidu/main.go type TokenResponse (line 26) | type TokenResponse struct type Message (line 31) | type Message struct type ChatRequest (line 36) | type ChatRequest struct type Error (line 49) | type Error struct function ConvertRequest (line 56) | func ConvertRequest(request model.GeneralOpenAIRequest) *ChatRequest { function responseBaidu2OpenAI (line 81) | func responseBaidu2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponseBaidu2OpenAI (line 100) | func streamResponseBaidu2OpenAI(baiduResponse *ChatStreamResponse) *open... function ConvertEmbeddingRequest (line 116) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) *Embedd... function embeddingResponseBaidu2OpenAI (line 122) | func embeddingResponseBaidu2OpenAI(response *EmbeddingResponse) *openai.... function StreamHandler (line 139) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 184) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... function EmbeddingHandler (line 221) | func EmbeddingHandler(c *gin.Context, resp *http.Response) (*model.Error... function GetAccessToken (line 257) | func GetAccessToken(apiKey string) (string, error) { function getBaiduAccessTokenHelper (line 280) | func getBaiduAccessTokenHelper(apiKey string) (*AccessToken, error) { FILE: relay/adaptor/baidu/model.go type ChatResponse (line 8) | type ChatResponse struct type ChatStreamResponse (line 19) | type ChatStreamResponse struct type EmbeddingRequest (line 25) | type EmbeddingRequest struct type EmbeddingData (line 29) | type EmbeddingData struct type EmbeddingResponse (line 35) | type EmbeddingResponse struct type AccessToken (line 44) | type AccessToken struct FILE: relay/adaptor/baiduv2/main.go function GetRequestURL (line 10) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/cloudflare/adaptor.go type Adaptor (line 17) | type Adaptor struct method ConvertImageRequest (line 22) | func (*Adaptor) ConvertImageRequest(request *model.ImageRequest) (any,... method Init (line 28) | func (a *Adaptor) Init(meta *meta.Meta) { method isAIGateWay (line 35) | func (a *Adaptor) isAIGateWay(baseURL string) bool { method GetRequestURL (line 39) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 61) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 67) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoRequest (line 81) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 85) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 94) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 98) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/cloudflare/main.go function ConvertCompletionsRequest (line 21) | func ConvertCompletionsRequest(textRequest model.GeneralOpenAIRequest) *... function StreamHandler (line 31) | func StreamHandler(c *gin.Context, resp *http.Response, promptTokens int... function Handler (line 85) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/cloudflare/model.go type Request (line 5) | type Request struct FILE: relay/adaptor/cohere/adaptor.go type Adaptor (line 15) | type Adaptor struct method ConvertImageRequest (line 18) | func (*Adaptor) ConvertImageRequest(request *model.ImageRequest) (any,... method Init (line 24) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 28) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 32) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 38) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoRequest (line 45) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 49) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 58) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 62) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/cohere/constant.go function init (line 9) | func init() { FILE: relay/adaptor/cohere/main.go function stopReasonCohere2OpenAI (line 24) | func stopReasonCohere2OpenAI(reason *string) string { function ConvertRequest (line 36) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) *Request { function StreamResponseCohere2OpenAI (line 77) | func StreamResponseCohere2OpenAI(cohereResponse *StreamResponse) (*opena... function ResponseCohere2OpenAI (line 114) | func ResponseCohere2OpenAI(cohereResponse *Response) *openai.TextResponse { function StreamHandler (line 134) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 187) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/cohere/model.go type Request (line 3) | type Request struct type ChatMessage (line 26) | type ChatMessage struct type Tool (line 31) | type Tool struct type ParameterSpec (line 37) | type ParameterSpec struct type ToolResult (line 43) | type ToolResult struct type ToolCall (line 48) | type ToolCall struct type StreamResponse (line 53) | type StreamResponse struct type SearchQuery (line 66) | type SearchQuery struct type SearchResult (line 71) | type SearchResult struct type Connector (line 77) | type Connector struct type Document (line 81) | type Document struct type Citation (line 89) | type Citation struct type Response (line 96) | type Response struct type Message (line 110) | type Message struct type Version (line 115) | type Version struct type Units (line 119) | type Units struct type ChatEntry (line 124) | type ChatEntry struct type Meta (line 129) | type Meta struct type APIVersion (line 135) | type APIVersion struct type BilledUnits (line 139) | type BilledUnits struct type Usage (line 144) | type Usage struct FILE: relay/adaptor/common.go function SetupCommonRequestHeader (line 13) | func SetupCommonRequestHeader(c *gin.Context, req *http.Request, meta *m... function DoRequestHelper (line 21) | func DoRequestHelper(a Adaptor, c *gin.Context, meta *meta.Meta, request... function DoRequest (line 41) | func DoRequest(c *gin.Context, req *http.Request) (*http.Response, error) { FILE: relay/adaptor/coze/adaptor.go type Adaptor (line 15) | type Adaptor struct method Init (line 19) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 23) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 27) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 33) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 41) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 48) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 52) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 69) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 73) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/coze/constant/contenttype/define.go constant Text (line 4) | Text = "text" FILE: relay/adaptor/coze/constant/event/define.go constant Message (line 4) | Message = "message" constant Done (line 5) | Done = "done" constant Error (line 6) | Error = "error" FILE: relay/adaptor/coze/constant/messagetype/define.go constant Answer (line 4) | Answer = "answer" constant FollowUp (line 5) | FollowUp = "follow_up" FILE: relay/adaptor/coze/helper.go function event2StopReason (line 5) | func event2StopReason(e *string) string { FILE: relay/adaptor/coze/main.go function stopReasonCoze2OpenAI (line 24) | func stopReasonCoze2OpenAI(reason *string) string { function ConvertRequest (line 40) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) *Request { function StreamResponseCoze2OpenAI (line 60) | func StreamResponseCoze2OpenAI(cozeResponse *StreamResponse) (*openai.Ch... function ResponseCoze2OpenAI (line 83) | func ResponseCoze2OpenAI(cozeResponse *Response) *openai.TextResponse { function StreamHandler (line 110) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 165) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/coze/model.go type Message (line 3) | type Message struct type ErrorInformation (line 10) | type ErrorInformation struct type Request (line 15) | type Request struct type Response (line 24) | type Response struct type StreamResponse (line 31) | type StreamResponse struct FILE: relay/adaptor/deepl/adaptor.go type Adaptor (line 14) | type Adaptor struct method Init (line 19) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 23) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 27) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 33) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 42) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 49) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 53) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 67) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 71) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/deepl/helper.go function parseLangFromModelName (line 5) | func parseLangFromModelName(modelName string) string { FILE: relay/adaptor/deepl/main.go function ConvertRequest (line 19) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) (*Request, s... function StreamResponseDeepL2OpenAI (line 31) | func StreamResponseDeepL2OpenAI(deeplResponse *Response) *openai.ChatCom... function ResponseDeepL2OpenAI (line 46) | func ResponseDeepL2OpenAI(deeplResponse *Response) *openai.TextResponse { function StreamHandler (line 68) | func StreamHandler(c *gin.Context, resp *http.Response, modelName string... function Handler (line 103) | func Handler(c *gin.Context, resp *http.Response, modelName string) *mod... FILE: relay/adaptor/deepl/model.go type Request (line 3) | type Request struct type Translation (line 8) | type Translation struct type Response (line 13) | type Response struct FILE: relay/adaptor/doubao/main.go function GetRequestURL (line 9) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/gemini/adaptor.go type Adaptor (line 20) | type Adaptor struct method Init (line 23) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 26) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 49) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 55) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 69) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 76) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 80) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 96) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 100) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/gemini/constants.go function IsModelSupportSystemInstruction (line 27) | func IsModelSupportSystemInstruction(model string) bool { FILE: relay/adaptor/gemini/main.go constant VisionMaxImageNum (line 29) | VisionMaxImageNum = 16 function ConvertRequest (line 38) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) *ChatRequest { function ConvertEmbeddingRequest (line 164) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) *BatchE... type ChatResponse (line 187) | type ChatResponse struct method GetResponseText (line 192) | func (g *ChatResponse) GetResponseText() string { type ChatCandidate (line 202) | type ChatCandidate struct type ChatSafetyRating (line 209) | type ChatSafetyRating struct type ChatPromptFeedback (line 214) | type ChatPromptFeedback struct function getToolCalls (line 218) | func getToolCalls(candidate *ChatCandidate) []model.Tool { function responseGeminiChat2OpenAI (line 242) | func responseGeminiChat2OpenAI(response *ChatResponse) *openai.TextRespo... function streamResponseGeminiChat2OpenAI (line 279) | func streamResponseGeminiChat2OpenAI(geminiResponse *ChatResponse) *open... function embeddingResponseGemini2OpenAI (line 292) | func embeddingResponseGemini2OpenAI(response *EmbeddingResponse) *openai... function StreamHandler (line 309) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 359) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... function EmbeddingHandler (line 403) | func EmbeddingHandler(c *gin.Context, resp *http.Response) (*model.Error... FILE: relay/adaptor/gemini/model.go type ChatRequest (line 3) | type ChatRequest struct type EmbeddingRequest (line 11) | type EmbeddingRequest struct type BatchEmbeddingRequest (line 19) | type BatchEmbeddingRequest struct type EmbeddingData (line 23) | type EmbeddingData struct type EmbeddingResponse (line 27) | type EmbeddingResponse struct type Error (line 32) | type Error struct type InlineData (line 38) | type InlineData struct type FunctionCall (line 43) | type FunctionCall struct type Part (line 48) | type Part struct type ChatContent (line 54) | type ChatContent struct type ChatSafetySettings (line 59) | type ChatSafetySettings struct type ChatTools (line 64) | type ChatTools struct type ChatGenerationConfig (line 68) | type ChatGenerationConfig struct FILE: relay/adaptor/geminiv2/main.go function GetRequestURL (line 10) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/interface.go type Adaptor (line 11) | type Adaptor interface FILE: relay/adaptor/minimax/main.go function GetRequestURL (line 9) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/novita/main.go function GetRequestURL (line 10) | func GetRequestURL(meta *meta.Meta) (string, error) { FILE: relay/adaptor/ollama/adaptor.go type Adaptor (line 16) | type Adaptor struct method Init (line 19) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 23) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 32) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 38) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 51) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 58) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 62) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 76) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 80) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/ollama/main.go function ConvertRequest (line 25) | func ConvertRequest(request model.GeneralOpenAIRequest) *ChatRequest { function responseOllama2OpenAI (line 61) | func responseOllama2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponseOllama2OpenAI (line 87) | func streamResponseOllama2OpenAI(ollamaResponse *ChatResponse) *openai.C... function StreamHandler (line 104) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function ConvertEmbeddingRequest (line 162) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) *Embedd... function EmbeddingHandler (line 176) | func EmbeddingHandler(c *gin.Context, resp *http.Response) (*model.Error... function embeddingResponseOllama2OpenAI (line 211) | func embeddingResponseOllama2OpenAI(response *EmbeddingResponse) *openai... function Handler (line 229) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... FILE: relay/adaptor/ollama/model.go type Options (line 3) | type Options struct type Message (line 14) | type Message struct type ChatRequest (line 20) | type ChatRequest struct type ChatResponse (line 27) | type ChatResponse struct type EmbeddingRequest (line 41) | type EmbeddingRequest struct type EmbeddingResponse (line 49) | type EmbeddingResponse struct FILE: relay/adaptor/openai/adaptor.go type Adaptor (line 25) | type Adaptor struct method Init (line 29) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 33) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 70) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 84) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 98) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 105) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 109) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 131) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 136) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/openai/compatible.go function GetCompatibleChannelMeta (line 46) | func GetCompatibleChannelMeta(channelType int) (string, []string) { FILE: relay/adaptor/openai/helper.go function ResponseText2Usage (line 11) | func ResponseText2Usage(responseText string, modelName string, promptTok... function GetFullRequestURL (line 19) | func GetFullRequestURL(baseURL string, requestURL string, channelType in... FILE: relay/adaptor/openai/image.go function ImageHandler (line 12) | func ImageHandler(c *gin.Context, resp *http.Response) (*model.ErrorWith... FILE: relay/adaptor/openai/main.go constant dataPrefix (line 22) | dataPrefix = "data: " constant done (line 23) | done = "[DONE]" constant dataPrefixLength (line 24) | dataPrefixLength = len(dataPrefix) function StreamHandler (line 27) | func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (... function Handler (line 99) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/openai/model.go type TextContent (line 5) | type TextContent struct type ImageContent (line 10) | type ImageContent struct type ChatRequest (line 15) | type ChatRequest struct type TextRequest (line 21) | type TextRequest struct type ImageRequest (line 30) | type ImageRequest struct type WhisperJSONResponse (line 41) | type WhisperJSONResponse struct type WhisperVerboseJSONResponse (line 45) | type WhisperVerboseJSONResponse struct type Segment (line 53) | type Segment struct type TextToSpeechRequest (line 66) | type TextToSpeechRequest struct type UsageOrResponseText (line 74) | type UsageOrResponseText struct type SlimTextResponse (line 79) | type SlimTextResponse struct type TextResponseChoice (line 85) | type TextResponseChoice struct type TextResponse (line 91) | type TextResponse struct type EmbeddingResponseItem (line 100) | type EmbeddingResponseItem struct type EmbeddingResponse (line 106) | type EmbeddingResponse struct type ImageData (line 113) | type ImageData struct type ImageResponse (line 119) | type ImageResponse struct type ChatCompletionsStreamResponseChoice (line 125) | type ChatCompletionsStreamResponseChoice struct type ChatCompletionsStreamResponse (line 131) | type ChatCompletionsStreamResponse struct type CompletionsStreamResponse (line 140) | type CompletionsStreamResponse struct FILE: relay/adaptor/openai/token.go function InitTokenEncoders (line 22) | func InitTokenEncoders() { function getTokenEncoder (line 52) | func getTokenEncoder(model string) *tiktoken.Tiktoken { function getTokenNum (line 69) | func getTokenNum(tokenEncoder *tiktoken.Tiktoken, text string) int { function CountTokenMessages (line 76) | func CountTokenMessages(messages []model.Message, model string) int { constant lowDetailCost (line 137) | lowDetailCost = 85 constant highDetailCostPerTile (line 138) | highDetailCostPerTile = 170 constant additionalCost (line 139) | additionalCost = 85 constant gpt4oMiniLowDetailCost (line 141) | gpt4oMiniLowDetailCost = 2833 constant gpt4oMiniHighDetailCost (line 142) | gpt4oMiniHighDetailCost = 5667 constant gpt4oMiniAdditionalCost (line 143) | gpt4oMiniAdditionalCost = 2833 function countImageTokens (line 148) | func countImageTokens(url string, detail string, model string) (_ int, e... function CountTokenInput (line 214) | func CountTokenInput(input any, model string) int { function CountTokenText (line 228) | func CountTokenText(text string, model string) int { function CountToken (line 233) | func CountToken(text string) int { FILE: relay/adaptor/openai/util.go function ErrorWrapper (line 11) | func ErrorWrapper(err error, code string, statusCode int) *model.ErrorWi... FILE: relay/adaptor/palm/adaptor.go type Adaptor (line 15) | type Adaptor struct method Init (line 18) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 22) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 26) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 32) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 39) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 46) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 50) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 61) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 65) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/palm/model.go type ChatMessage (line 7) | type ChatMessage struct type Filter (line 12) | type Filter struct type Prompt (line 17) | type Prompt struct type ChatRequest (line 21) | type ChatRequest struct type Error (line 29) | type Error struct type ChatResponse (line 35) | type ChatResponse struct FILE: relay/adaptor/palm/palm.go function ConvertRequest (line 23) | func ConvertRequest(textRequest model.GeneralOpenAIRequest) *ChatRequest { function responsePaLM2OpenAI (line 47) | func responsePaLM2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponsePaLM2OpenAI (line 65) | func streamResponsePaLM2OpenAI(palmResponse *ChatResponse) *openai.ChatC... function StreamHandler (line 78) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 130) | func Handler(c *gin.Context, resp *http.Response, promptTokens int, mode... FILE: relay/adaptor/proxy/adaptor.go constant channelName (line 20) | channelName = "proxy" type Adaptor (line 22) | type Adaptor struct method Init (line 24) | func (a *Adaptor) Init(meta *meta.Meta) { method ConvertRequest (line 27) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 31) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 51) | func (a *Adaptor) GetModelList() (models []string) { method GetChannelName (line 55) | func (a *Adaptor) GetChannelName() string { method GetRequestURL (line 60) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 66) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertImageRequest (line 83) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 87) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... FILE: relay/adaptor/replicate/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertImageRequest (line 26) | func (*Adaptor) ConvertImageRequest(request *model.ImageRequest) (any,... method ConvertRequest (line 42) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method Init (line 94) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 98) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 106) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method DoRequest (line 112) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 117) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 130) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 134) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/replicate/chat.go function ChatHandler (line 20) | func ChatHandler(c *gin.Context, resp *http.Response) ( constant eventPrefix (line 111) | eventPrefix = "event: " constant dataPrefix (line 112) | dataPrefix = "data: " constant done (line 113) | done = "[DONE]" function chatStreamHandler (line 116) | func chatStreamHandler(c *gin.Context, streamUrl string) (responseText s... FILE: relay/adaptor/replicate/image.go function ImageHandler (line 44) | func ImageHandler(c *gin.Context, resp *http.Response) (*model.ErrorWith... function ConvertImageToPNG (line 188) | func ConvertImageToPNG(webpData []byte) ([]byte, error) { FILE: relay/adaptor/replicate/model.go type DrawImageRequest (line 12) | type DrawImageRequest struct type ImageInput (line 19) | type ImageInput struct type InpaintingImageByFlusReplicateRequest (line 36) | type InpaintingImageByFlusReplicateRequest struct type FluxInpaintingInput (line 43) | type FluxInpaintingInput struct type ImageResponse (line 58) | type ImageResponse struct method GetOutput (line 75) | func (r *ImageResponse) GetOutput() ([]string, error) { type FluxMetrics (line 101) | type FluxMetrics struct type FluxURLs (line 108) | type FluxURLs struct type ReplicateChatRequest (line 113) | type ReplicateChatRequest struct type ChatInput (line 120) | type ChatInput struct type ChatResponse (line 137) | type ChatResponse struct type ChatResponseUrl (line 155) | type ChatResponseUrl struct FILE: relay/adaptor/tencent/adaptor.go type Adaptor (line 22) | type Adaptor struct method Init (line 29) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 35) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 39) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 48) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 72) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 79) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 83) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 99) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 103) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/tencent/main.go function ConvertRequest (line 31) | func ConvertRequest(request model.GeneralOpenAIRequest) *ChatRequest { function ConvertEmbeddingRequest (line 49) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) *Embedd... function EmbeddingHandler (line 55) | func EmbeddingHandler(c *gin.Context, resp *http.Response) (*model.Error... function embeddingResponseTencent2OpenAI (line 90) | func embeddingResponseTencent2OpenAI(response *EmbeddingResponse) *opena... function responseTencent2OpenAI (line 108) | func responseTencent2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponseTencent2OpenAI (line 133) | func streamResponseTencent2OpenAI(TencentResponse *ChatResponse) *openai... function StreamHandler (line 151) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 197) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... function ParseConfig (line 237) | func ParseConfig(config string) (appId int64, secretId string, secretKey... function sha256hex (line 249) | func sha256hex(s string) string { function hmacSha256 (line 254) | func hmacSha256(s, key string) string { function GetSign (line 260) | func GetSign(req any, adaptor *Adaptor, secId, secKey string) string { FILE: relay/adaptor/tencent/model.go type Message (line 3) | type Message struct type ChatRequest (line 8) | type ChatRequest struct type Error (line 46) | type Error struct type Usage (line 51) | type Usage struct type ResponseChoices (line 57) | type ResponseChoices struct type ChatResponse (line 63) | type ChatResponse struct type ChatResponseP (line 73) | type ChatResponseP struct type EmbeddingRequest (line 77) | type EmbeddingRequest struct type EmbeddingData (line 81) | type EmbeddingData struct type EmbeddingUsage (line 87) | type EmbeddingUsage struct type EmbeddingResponse (line 92) | type EmbeddingResponse struct type EmbeddingResponseP (line 99) | type EmbeddingResponseP struct FILE: relay/adaptor/vertexai/adaptor.go constant channelName (line 20) | channelName = "vertexai" type Adaptor (line 22) | type Adaptor struct method Init (line 24) | func (a *Adaptor) Init(meta *meta.Meta) { method ConvertRequest (line 27) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 40) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 53) | func (a *Adaptor) GetModelList() (models []string) { method GetChannelName (line 58) | func (a *Adaptor) GetChannelName() string { method GetRequestURL (line 62) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 98) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertImageRequest (line 108) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 115) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... FILE: relay/adaptor/vertexai/claude/adapter.go constant anthropicVersion (line 24) | anthropicVersion = "vertex-2023-10-16" type Adaptor (line 26) | type Adaptor struct method ConvertRequest (line 29) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 53) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... FILE: relay/adaptor/vertexai/claude/model.go type Request (line 5) | type Request struct FILE: relay/adaptor/vertexai/gemini/adapter.go type Adaptor (line 27) | type Adaptor struct method ConvertRequest (line 30) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method DoResponse (line 41) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... FILE: relay/adaptor/vertexai/registry.go type VertexAIModelType (line 13) | type VertexAIModelType constant VerterAIClaude (line 16) | VerterAIClaude VertexAIModelType = iota + 1 constant VerterAIGemini (line 17) | VerterAIGemini function init (line 23) | func init() { type innerAIAdapter (line 35) | type innerAIAdapter interface function GetAdaptor (line 40) | func GetAdaptor(model string) innerAIAdapter { FILE: relay/adaptor/vertexai/token.go type ApplicationDefaultCredentials (line 15) | type ApplicationDefaultCredentials struct constant defaultScope (line 31) | defaultScope = "https://www.googleapis.com/auth/cloud-platform" function getToken (line 33) | func getToken(ctx context.Context, channelId int, adcJson string) (strin... FILE: relay/adaptor/xunfei/adaptor.go type Adaptor (line 15) | type Adaptor struct method Init (line 20) | func (a *Adaptor) Init(meta *meta.Meta) { method GetRequestURL (line 24) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 28) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 34) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 42) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 49) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponse (line 56) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 80) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 84) | func (a *Adaptor) GetChannelName() string { FILE: relay/adaptor/xunfei/domain.go function parseAPIVersionByModelName (line 31) | func parseAPIVersionByModelName(modelName string) string { function modelName2APIVersion (line 44) | func modelName2APIVersion(modelName string) string { function apiVersion2domain (line 63) | func apiVersion2domain(apiVersion string) string { function getXunfeiAuthUrl (line 83) | func getXunfeiAuthUrl(apiVersion string, apiKey string, apiSecret string... FILE: relay/adaptor/xunfei/main.go function requestOpenAI2Xunfei (line 32) | func requestOpenAI2Xunfei(request model.GeneralOpenAIRequest, xunfeiAppI... function getToolCalls (line 61) | func getToolCalls(response *ChatResponse) []model.Tool { function responseXunfei2OpenAI (line 79) | func responseXunfei2OpenAI(response *ChatResponse) *openai.TextResponse { function streamResponseXunfei2OpenAI (line 106) | func streamResponseXunfei2OpenAI(xunfeiResponse *ChatResponse) *openai.C... function buildXunfeiAuthUrl (line 130) | func buildXunfeiAuthUrl(hostUrl string, apiKey, apiSecret string) string { function StreamHandler (line 156) | func StreamHandler(c *gin.Context, meta *meta.Meta, textRequest model.Ge... function Handler (line 186) | func Handler(c *gin.Context, meta *meta.Meta, textRequest model.GeneralO... function xunfeiMakeRequest (line 224) | func xunfeiMakeRequest(textRequest model.GeneralOpenAIRequest, domain, a... FILE: relay/adaptor/xunfei/model.go type Message (line 7) | type Message struct type Functions (line 12) | type Functions struct type ChatRequest (line 16) | type ChatRequest struct type ChatResponseTextItem (line 37) | type ChatResponseTextItem struct type ChatResponse (line 45) | type ChatResponse struct FILE: relay/adaptor/zhipu/adaptor.go type Adaptor (line 18) | type Adaptor struct method Init (line 22) | func (a *Adaptor) Init(meta *meta.Meta) { method SetVersionByModeName (line 26) | func (a *Adaptor) SetVersionByModeName(modelName string) { method GetRequestURL (line 34) | func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) { method SetupRequestHeader (line 52) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request... method ConvertRequest (line 59) | func (a *Adaptor) ConvertRequest(c *gin.Context, relayMode int, reques... method ConvertImageRequest (line 83) | func (a *Adaptor) ConvertImageRequest(request *model.ImageRequest) (an... method DoRequest (line 95) | func (a *Adaptor) DoRequest(c *gin.Context, meta *meta.Meta, requestBo... method DoResponseV4 (line 99) | func (a *Adaptor) DoResponseV4(c *gin.Context, resp *http.Response, me... method DoResponse (line 108) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, meta... method GetModelList (line 143) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 147) | func (a *Adaptor) GetChannelName() string { function ConvertEmbeddingRequest (line 132) | func ConvertEmbeddingRequest(request model.GeneralOpenAIRequest) (*Embed... FILE: relay/adaptor/zhipu/main.go function GetToken (line 31) | func GetToken(apikey string) string { function ConvertRequest (line 78) | func ConvertRequest(request model.GeneralOpenAIRequest) *Request { function responseZhipu2OpenAI (line 94) | func responseZhipu2OpenAI(response *Response) *openai.TextResponse { function streamResponseZhipu2OpenAI (line 119) | func streamResponseZhipu2OpenAI(zhipuResponse string) *openai.ChatComple... function streamMetaResponseZhipu2OpenAI (line 131) | func streamMetaResponseZhipu2OpenAI(zhipuResponse *StreamMetaResponse) (... function StreamHandler (line 145) | func StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWit... function Handler (line 212) | func Handler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu... function EmbeddingsHandler (line 249) | func EmbeddingsHandler(c *gin.Context, resp *http.Response) (*model.Erro... function embeddingResponseZhipu2OpenAI (line 274) | func embeddingResponseZhipu2OpenAI(response *EmbeddingResponse) *openai.... FILE: relay/adaptor/zhipu/model.go type Message (line 8) | type Message struct type Request (line 13) | type Request struct type ResponseData (line 21) | type ResponseData struct type Response (line 29) | type Response struct type StreamMetaResponse (line 36) | type StreamMetaResponse struct type tokenData (line 43) | type tokenData struct type EmbeddingRequest (line 48) | type EmbeddingRequest struct type EmbeddingResponse (line 53) | type EmbeddingResponse struct type EmbeddingData (line 60) | type EmbeddingData struct type ImageRequest (line 66) | type ImageRequest struct FILE: relay/adaptor_test.go function TestGetAdaptor (line 9) | func TestGetAdaptor(t *testing.T) { FILE: relay/apitype/define.go constant OpenAI (line 4) | OpenAI = iota constant Anthropic (line 5) | Anthropic constant PaLM (line 6) | PaLM constant Baidu (line 7) | Baidu constant Zhipu (line 8) | Zhipu constant Ali (line 9) | Ali constant Xunfei (line 10) | Xunfei constant AIProxyLibrary (line 11) | AIProxyLibrary constant Tencent (line 12) | Tencent constant Gemini (line 13) | Gemini constant Ollama (line 14) | Ollama constant AwsClaude (line 15) | AwsClaude constant Coze (line 16) | Coze constant Cohere (line 17) | Cohere constant Cloudflare (line 18) | Cloudflare constant DeepL (line 19) | DeepL constant VertexAI (line 20) | VertexAI constant Proxy (line 21) | Proxy constant Replicate (line 22) | Replicate constant Dummy (line 24) | Dummy FILE: relay/billing/billing.go function ReturnPreConsumedQuota (line 11) | func ReturnPreConsumedQuota(ctx context.Context, preConsumedQuota int64,... function PostConsumeQuota (line 23) | func PostConsumeQuota(ctx context.Context, tokenId int, quotaDelta int64... FILE: relay/billing/ratio/group.go function GroupRatio2JSONString (line 16) | func GroupRatio2JSONString() string { function UpdateGroupRatioByJSONString (line 24) | func UpdateGroupRatioByJSONString(jsonStr string) error { function GetGroupRatio (line 31) | func GetGroupRatio(name string) float64 { FILE: relay/billing/ratio/model.go constant USD2RMB (line 13) | USD2RMB = 7 constant USD (line 14) | USD = 500 constant MILLI_USD (line 15) | MILLI_USD = 1.0 / 1000 * USD constant RMB (line 16) | RMB = USD / USD2RMB function init (line 640) | func init() { function AddNewMissingRatio (line 651) | func AddNewMissingRatio(oldRatio string) string { function ModelRatio2JSONString (line 671) | func ModelRatio2JSONString() string { function UpdateModelRatioByJSONString (line 679) | func UpdateModelRatioByJSONString(jsonStr string) error { function GetModelRatio (line 686) | func GetModelRatio(name string, channelType int) float64 { function CompletionRatio2JSONString (line 712) | func CompletionRatio2JSONString() string { function UpdateCompletionRatioByJSONString (line 720) | func UpdateCompletionRatioByJSONString(jsonStr string) error { function GetCompletionRatio (line 725) | func GetCompletionRatio(name string, channelType int) float64 { FILE: relay/channeltype/define.go constant Unknown (line 4) | Unknown = iota constant OpenAI (line 5) | OpenAI constant API2D (line 6) | API2D constant Azure (line 7) | Azure constant CloseAI (line 8) | CloseAI constant OpenAISB (line 9) | OpenAISB constant OpenAIMax (line 10) | OpenAIMax constant OhMyGPT (line 11) | OhMyGPT constant Custom (line 12) | Custom constant Ails (line 13) | Ails constant AIProxy (line 14) | AIProxy constant PaLM (line 15) | PaLM constant API2GPT (line 16) | API2GPT constant AIGC2D (line 17) | AIGC2D constant Anthropic (line 18) | Anthropic constant Baidu (line 19) | Baidu constant Zhipu (line 20) | Zhipu constant Ali (line 21) | Ali constant Xunfei (line 22) | Xunfei constant AI360 (line 23) | AI360 constant OpenRouter (line 24) | OpenRouter constant AIProxyLibrary (line 25) | AIProxyLibrary constant FastGPT (line 26) | FastGPT constant Tencent (line 27) | Tencent constant Gemini (line 28) | Gemini constant Moonshot (line 29) | Moonshot constant Baichuan (line 30) | Baichuan constant Minimax (line 31) | Minimax constant Mistral (line 32) | Mistral constant Groq (line 33) | Groq constant Ollama (line 34) | Ollama constant LingYiWanWu (line 35) | LingYiWanWu constant StepFun (line 36) | StepFun constant AwsClaude (line 37) | AwsClaude constant Coze (line 38) | Coze constant Cohere (line 39) | Cohere constant DeepSeek (line 40) | DeepSeek constant Cloudflare (line 41) | Cloudflare constant DeepL (line 42) | DeepL constant TogetherAI (line 43) | TogetherAI constant Doubao (line 44) | Doubao constant Novita (line 45) | Novita constant VertextAI (line 46) | VertextAI constant Proxy (line 47) | Proxy constant SiliconFlow (line 48) | SiliconFlow constant XAI (line 49) | XAI constant Replicate (line 50) | Replicate constant BaiduV2 (line 51) | BaiduV2 constant XunfeiV2 (line 52) | XunfeiV2 constant AliBailian (line 53) | AliBailian constant OpenAICompatible (line 54) | OpenAICompatible constant GeminiOpenAICompatible (line 55) | GeminiOpenAICompatible constant Dummy (line 56) | Dummy FILE: relay/channeltype/helper.go function ToAPIType (line 5) | func ToAPIType(channelType int) int { FILE: relay/channeltype/url.go function init (line 59) | func init() { FILE: relay/channeltype/url_test.go function TestChannelBaseURLs (line 8) | func TestChannelBaseURLs(t *testing.T) { FILE: relay/constant/finishreason/define.go constant Stop (line 4) | Stop = "stop" FILE: relay/constant/role/define.go constant System (line 4) | System = "system" constant Assistant (line 5) | Assistant = "assistant" FILE: relay/controller/audio.go function RelayAudioHelper (line 30) | func RelayAudioHelper(c *gin.Context, relayMode int) *relaymodel.ErrorWi... function getTextFromVTT (line 238) | func getTextFromVTT(body []byte) (string, error) { function getTextFromVerboseJSON (line 242) | func getTextFromVerboseJSON(body []byte) (string, error) { function getTextFromSRT (line 250) | func getTextFromSRT(body []byte) (string, error) { function getTextFromText (line 271) | func getTextFromText(body []byte) (string, error) { function getTextFromJSON (line 275) | func getTextFromJSON(body []byte) (string, error) { FILE: relay/controller/error.go type GeneralErrorResponse (line 14) | type GeneralErrorResponse struct method ToMessage (line 30) | func (e GeneralErrorResponse) ToMessage() string { function RelayErrorHandler (line 55) | func RelayErrorHandler(resp *http.Response) (ErrorWithStatusCode *model.... FILE: relay/controller/helper.go function getAndValidateTextRequest (line 29) | func getAndValidateTextRequest(c *gin.Context, relayMode int) (*relaymod... function getPromptTokens (line 48) | func getPromptTokens(textRequest *relaymodel.GeneralOpenAIRequest, relay... function getPreConsumedQuota (line 60) | func getPreConsumedQuota(textRequest *relaymodel.GeneralOpenAIRequest, p... function preConsumeQuota (line 68) | func preConsumeQuota(ctx context.Context, textRequest *relaymodel.Genera... function postConsumeQuota (line 97) | func postConsumeQuota(ctx context.Context, usage *relaymodel.Usage, meta... function getMappedModelName (line 143) | func getMappedModelName(modelName string, mapping map[string]string) (st... function isErrorHappened (line 154) | func isErrorHappened(meta *meta.Meta, resp *http.Response) bool { function setSystemPrompt (line 180) | func setSystemPrompt(ctx context.Context, request *relaymodel.GeneralOpe... FILE: relay/controller/image.go function getImageRequest (line 26) | func getImageRequest(c *gin.Context, _ int) (*relaymodel.ImageRequest, e... function isValidImageSize (line 44) | func isValidImageSize(model string, size string) bool { function isValidImagePromptLength (line 52) | func isValidImagePromptLength(model string, promptLength int) bool { function isWithinRange (line 57) | func isWithinRange(element string, value int) bool { function getImageSizeRatio (line 62) | func getImageSizeRatio(model string, size string) float64 { function validateImageRequest (line 69) | func validateImageRequest(imageRequest *relaymodel.ImageRequest, _ *meta... function getImageCostRatio (line 91) | func getImageCostRatio(imageRequest *relaymodel.ImageRequest) (float64, ... function RelayImageHelper (line 106) | func RelayImageHelper(c *gin.Context, relayMode int) *relaymodel.ErrorWi... FILE: relay/controller/proxy.go function RelayProxyHelper (line 17) | func RelayProxyHelper(c *gin.Context, relayMode int) *relaymodel.ErrorWi... FILE: relay/controller/text.go function RelayTextHelper (line 25) | func RelayTextHelper(c *gin.Context) *model.ErrorWithStatusCode { function getRequestBody (line 90) | func getRequestBody(c *gin.Context, meta *meta.Meta, textRequest *model.... FILE: relay/controller/validator/validation.go function ValidateTextRequest (line 10) | func ValidateTextRequest(textRequest *model.GeneralOpenAIRequest, relayM... FILE: relay/meta/relay_meta.go type Meta (line 15) | type Meta struct function GetByContext (line 40) | func GetByContext(c *gin.Context) *Meta { FILE: relay/model/constant.go constant ContentTypeText (line 4) | ContentTypeText = "text" constant ContentTypeImageURL (line 5) | ContentTypeImageURL = "image_url" constant ContentTypeInputAudio (line 6) | ContentTypeInputAudio = "input_audio" FILE: relay/model/general.go type ResponseFormat (line 3) | type ResponseFormat struct type JSONSchema (line 8) | type JSONSchema struct type Audio (line 15) | type Audio struct type StreamOptions (line 20) | type StreamOptions struct type GeneralOpenAIRequest (line 24) | type GeneralOpenAIRequest struct method ParseInput (line 71) | func (r GeneralOpenAIRequest) ParseInput() []string { FILE: relay/model/image.go type ImageRequest (line 3) | type ImageRequest struct FILE: relay/model/message.go type Message (line 3) | type Message struct method IsStringContent (line 12) | func (m Message) IsStringContent() bool { method StringContent (line 17) | func (m Message) StringContent() string { method ParseContent (line 41) | func (m Message) ParseContent() []MessageContent { type ImageURL (line 82) | type ImageURL struct type MessageContent (line 87) | type MessageContent struct FILE: relay/model/misc.go type Usage (line 3) | type Usage struct type CompletionTokensDetails (line 11) | type CompletionTokensDetails struct type Error (line 17) | type Error struct type ErrorWithStatusCode (line 24) | type ErrorWithStatusCode struct FILE: relay/model/tool.go type Tool (line 3) | type Tool struct type Function (line 9) | type Function struct FILE: relay/relaymode/define.go constant Unknown (line 4) | Unknown = iota constant ChatCompletions (line 5) | ChatCompletions constant Completions (line 6) | Completions constant Embeddings (line 7) | Embeddings constant Moderations (line 8) | Moderations constant ImagesGenerations (line 9) | ImagesGenerations constant Edits (line 10) | Edits constant AudioSpeech (line 11) | AudioSpeech constant AudioTranscription (line 12) | AudioTranscription constant AudioTranslation (line 13) | AudioTranslation constant Proxy (line 15) | Proxy FILE: relay/relaymode/helper.go function GetByPath (line 5) | func GetByPath(path string) int { FILE: router/api.go function SetApiRouter (line 12) | func SetApiRouter(router *gin.Engine) { FILE: router/dashboard.go function SetDashboardRouter (line 10) | func SetDashboardRouter(router *gin.Engine) { FILE: router/main.go function SetRouter (line 14) | func SetRouter(router *gin.Engine, buildFS embed.FS) { FILE: router/relay.go function SetRelayRouter (line 10) | func SetRelayRouter(router *gin.Engine) { FILE: router/web.go function SetWebRouter (line 17) | func SetWebRouter(router *gin.Engine, buildFS embed.FS) { FILE: web/air/src/App.js function App (line 30) | function App() { FILE: web/air/src/components/ChannelsTable.js function renderTimestamp (line 23) | function renderTimestamp(timestamp) { function renderType (line 33) | function renderType(type) { FILE: web/air/src/components/HeaderBar.js function logout (line 45) | async function logout() { FILE: web/air/src/components/LoginForm.js function handleChange (line 73) | function handleChange(name, value) { function handleSubmit (line 77) | async function handleSubmit(e) { FILE: web/air/src/components/LogsTable.js function renderTimestamp (line 11) | function renderTimestamp(timestamp) { constant MODE_OPTIONS (line 17) | const MODE_OPTIONS = [{ key: 'all', text: '全部用户', value: 'all' }, { key:... function renderType (line 21) | function renderType(type) { function renderIsStream (line 38) | function renderIsStream(bool) { function renderUseTime (line 46) | function renderUseTime(type) { FILE: web/air/src/components/MjLogsTable.js function renderType (line 13) | function renderType(type) { function renderCode (line 51) | function renderCode(code) { function renderStatus (line 67) | function renderStatus(type) { FILE: web/air/src/components/PasswordResetConfirm.js function handleSubmit (line 43) | async function handleSubmit(e) { FILE: web/air/src/components/PasswordResetForm.js function handleChange (line 32) | function handleChange(e) { function handleSubmit (line 37) | async function handleSubmit(e) { FILE: web/air/src/components/PrivateRoute.js function PrivateRoute (line 6) | function PrivateRoute({ children }) { FILE: web/air/src/components/RedemptionsTable.js function renderTimestamp (line 9) | function renderTimestamp(timestamp) { function renderStatus (line 17) | function renderStatus(status) { FILE: web/air/src/components/RegisterForm.js function handleChange (line 41) | function handleChange(e) { function handleSubmit (line 47) | async function handleSubmit(e) { FILE: web/air/src/components/TokensTable.js constant COPY_OPTIONS (line 11) | const COPY_OPTIONS = [ constant OPEN_LINK_OPTIONS (line 18) | const OPEN_LINK_OPTIONS = [ function renderTimestamp (line 24) | function renderTimestamp(timestamp) { function renderStatus (line 32) | function renderStatus(status, model_limits_enabled = false) { FILE: web/air/src/components/UsersTable.js function renderRole (line 9) | function renderRole(role) { FILE: web/air/src/components/WeChatIcon.js function CustomIcon (line 5) | function CustomIcon() { FILE: web/air/src/components/utils.js function getOAuthState (line 3) | async function getOAuthState() { function onGitHubOAuthClicked (line 14) | async function onGitHubOAuthClicked(github_client_id) { FILE: web/air/src/constants/channel.constants.js constant CHANNEL_OPTIONS (line 1) | const CHANNEL_OPTIONS = [ FILE: web/air/src/constants/common.constant.js constant ITEMS_PER_PAGE (line 1) | const ITEMS_PER_PAGE = 10; FILE: web/air/src/helpers/api.js constant API (line 4) | const API = axios.create({ FILE: web/air/src/helpers/auth-header.js function authHeader (line 1) | function authHeader() { FILE: web/air/src/helpers/render.js function renderText (line 4) | function renderText(text, limit) { function renderGroup (line 11) | function renderGroup(group) { function renderNumber (line 33) | function renderNumber(num) { function renderQuotaNumberWithDigit (line 45) | function renderQuotaNumberWithDigit(num, digits = 2) { function renderNumberWithPoint (line 54) | function renderNumberWithPoint(num) { function getQuotaPerUnit (line 82) | function getQuotaPerUnit() { function getQuotaWithUnit (line 88) | function getQuotaWithUnit(quota, digits = 6) { function renderQuota (line 94) | function renderQuota(quota, digits = 2) { function renderQuotaWithPrompt (line 105) | function renderQuotaWithPrompt(quota, digits) { function stringToColor (line 160) | function stringToColor(str) { FILE: web/air/src/helpers/utils.js function isAdmin (line 10) | function isAdmin() { function isRoot (line 17) | function isRoot() { function getSystemName (line 24) | function getSystemName() { function getLogo (line 30) | function getLogo() { function getFooterHTML (line 36) | function getFooterHTML() { function copy (line 40) | async function copy(text) { function isMobile (line 51) | function isMobile() { function showError (line 75) | function showError(error) { function showWarning (line 104) | function showWarning(message) { function showSuccess (line 108) | function showSuccess(message) { function showInfo (line 112) | function showInfo(message) { function showNotice (line 116) | function showNotice(message, isHTML = false) { function openPage (line 124) | function openPage(url) { function removeTrailingSlash (line 128) | function removeTrailingSlash(url) { function timestamp2string (line 136) | function timestamp2string(timestamp) { function timestamp2string1 (line 174) | function timestamp2string1(timestamp, dataExportDefaultTime = 'hour') { function downloadTextAsFile (line 207) | function downloadTextAsFile(text, filename) { function shouldShowPrompt (line 225) | function shouldShowPrompt(id) { function setPromptShown (line 231) | function setPromptShown(id) { FILE: web/air/src/pages/Channel/EditChannel.js constant MODEL_MAPPING_EXAMPLE (line 8) | const MODEL_MAPPING_EXAMPLE = { function type2secretPrompt (line 14) | function type2secretPrompt(type) { FILE: web/berry/src/constants/ChannelConstants.js constant CHANNEL_OPTIONS (line 1) | const CHANNEL_OPTIONS = { FILE: web/berry/src/constants/CommonConstants.js constant ITEMS_PER_PAGE (line 1) | const ITEMS_PER_PAGE = 10; FILE: web/berry/src/routes/index.js function ThemeRoutes (line 9) | function ThemeRoutes() { FILE: web/berry/src/serviceWorker.js function registerValidSW (line 21) | function registerValidSW(swUrl, config) { function checkValidServiceWorker (line 62) | function checkValidServiceWorker(swUrl, config) { function register (line 87) | function register(config) { function unregister (line 118) | function unregister() { FILE: web/berry/src/store/actions.js constant SET_MENU (line 2) | const SET_MENU = '@customization/SET_MENU'; constant MENU_TOGGLE (line 3) | const MENU_TOGGLE = '@customization/MENU_TOGGLE'; constant MENU_OPEN (line 4) | const MENU_OPEN = '@customization/MENU_OPEN'; constant SET_FONT_FAMILY (line 5) | const SET_FONT_FAMILY = '@customization/SET_FONT_FAMILY'; constant SET_BORDER_RADIUS (line 6) | const SET_BORDER_RADIUS = '@customization/SET_BORDER_RADIUS'; constant SET_SITE_INFO (line 7) | const SET_SITE_INFO = '@siteInfo/SET_SITE_INFO'; constant LOGIN (line 8) | const LOGIN = '@account/LOGIN'; constant LOGOUT (line 9) | const LOGOUT = '@account/LOGOUT'; constant SET_THEME (line 10) | const SET_THEME = '@customization/SET_THEME'; FILE: web/berry/src/themes/compStyleOverride.js function componentStyleOverrides (line 1) | function componentStyleOverrides(theme) { FILE: web/berry/src/themes/index.js function GetDarkOption (line 48) | function GetDarkOption() { function GetLightOption (line 71) | function GetLightOption() { FILE: web/berry/src/themes/palette.js function themePalette (line 6) | function themePalette(theme) { FILE: web/berry/src/themes/typography.js function themeTypography (line 6) | function themeTypography(theme) { FILE: web/berry/src/ui-component/TableToolBar.js function TableToolBar (line 12) | function TableToolBar({ filterName, handleFilterName, placeholder }) { FILE: web/berry/src/ui-component/ThemeButton.js function ThemeButton (line 7) | function ThemeButton() { FILE: web/berry/src/ui-component/cards/UserCard.js function UserCard (line 41) | function UserCard({ children }) { FILE: web/berry/src/utils/api.js constant API (line 7) | const API = axios.create({ FILE: web/berry/src/utils/chart.js function getLastSevenDays (line 1) | function getLastSevenDays() { function getTodayDay (line 16) | function getTodayDay() { function generateChartOptions (line 21) | function generateChartOptions(data, unit) { FILE: web/berry/src/utils/common.js function getSystemName (line 5) | function getSystemName() { function isMobile (line 11) | function isMobile() { function SnackbarHTMLContent (line 16) | function SnackbarHTMLContent({htmlContent}) { function getSnackbarOptions (line 20) | function getSnackbarOptions(variant) { function showError (line 29) | function showError(error) { function showNotice (line 52) | function showNotice(message, isHTML = false) { function showWarning (line 60) | function showWarning(message) { function showSuccess (line 64) | function showSuccess(message) { function showInfo (line 68) | function showInfo(message) { function getOAuthState (line 72) | async function getOAuthState() { function onGitHubOAuthClicked (line 83) | async function onGitHubOAuthClicked(github_client_id, openInNewTab = fal... function onLarkOAuthClicked (line 94) | async function onLarkOAuthClicked(lark_client_id) { function onOidcClicked (line 101) | async function onOidcClicked(auth_url, client_id, openInNewTab = false) { function isAdmin (line 115) | function isAdmin() { function timestamp2string (line 122) | function timestamp2string(timestamp) { function calculateQuota (line 148) | function calculateQuota(quota, digits = 2) { function renderQuota (line 155) | function renderQuota(quota, digits = 2) { function renderNumber (line 173) | function renderNumber(num) { function renderQuotaWithPrompt (line 185) | function renderQuotaWithPrompt(quota, digits) { function downloadTextAsFile (line 194) | function downloadTextAsFile(text, filename) { function removeTrailingSlash (line 203) | function removeTrailingSlash(url) { function loadChannelModels (line 213) | async function loadChannelModels() { function getChannelModels (line 223) | function getChannelModels(type) { function copy (line 238) | function copy(text, name = '') { FILE: web/berry/src/views/Channel/component/EditModal.js function initialModel (line 204) | function initialModel(channelModel) { FILE: web/berry/src/views/Channel/component/GroupLabel.js function name2color (line 6) | function name2color(name) { FILE: web/berry/src/views/Channel/component/TableRow.js function ChannelTableRow (line 33) | function ChannelTableRow({ function renderBalance (line 255) | function renderBalance(type, balance) { FILE: web/berry/src/views/Channel/index.js function ChannelPage (line 26) | function ChannelPage() { FILE: web/berry/src/views/Dashboard/index.js function getLineDataGroup (line 117) | function getLineDataGroup(statisticalData) { function getBarDataGroup (line 150) | function getBarDataGroup(data) { function getLineCardOption (line 178) | function getLineCardOption(lineDataGroup, field) { FILE: web/berry/src/views/Error/index.js function NotFoundView (line 9) | function NotFoundView() { FILE: web/berry/src/views/Log/component/TableRow.js function renderType (line 9) | function renderType(type) { function LogTableRow (line 28) | function LogTableRow({ item, userIsAdmin }) { FILE: web/berry/src/views/Log/component/TableToolBar.js function TableToolBar (line 25) | function TableToolBar({ FILE: web/berry/src/views/Log/index.js function Log (line 22) | function Log() { FILE: web/berry/src/views/Log/type/LogType.js constant LOG_TYPE (line 1) | const LOG_TYPE = { FILE: web/berry/src/views/Profile/index.js function Profile (line 41) | function Profile() { FILE: web/berry/src/views/Redemption/component/TableRow.js function RedemptionTableRow (line 25) | function RedemptionTableRow({ item, manageRedemption, handleOpenModal, s... FILE: web/berry/src/views/Redemption/index.js function Redemption (line 23) | function Redemption() { FILE: web/berry/src/views/Setting/index.js function CustomTabPanel (line 11) | function CustomTabPanel(props) { function a11yProps (line 27) | function a11yProps(index) { FILE: web/berry/src/views/Token/component/TableRow.js constant COPY_OPTIONS (line 27) | const COPY_OPTIONS = [ function replacePlaceholders (line 39) | function replacePlaceholders(text, key, serverAddress) { function createMenu (line 43) | function createMenu(menuItems) { function TokensTableRow (line 56) | function TokensTableRow({ item, manageToken, handleOpenModal, setModalTo... FILE: web/berry/src/views/Token/index.js function Token (line 24) | function Token() { FILE: web/berry/src/views/User/component/TableRow.js function renderRole (line 26) | function renderRole(role) { function UsersTableRow (line 39) | function UsersTableRow({ item, manageUser, handleOpenModal, setModalUser... FILE: web/berry/src/views/User/index.js function Users (line 23) | function Users() { FILE: web/default/src/App.js function App (line 33) | function App() { FILE: web/default/src/components/ChannelsTable.js function renderTimestamp (line 19) | function renderTimestamp(timestamp) { function renderType (line 25) | function renderType(type, t) { function renderBalance (line 44) | function renderBalance(type, balance, t) { function isShowDetail (line 74) | function isShowDetail() { FILE: web/default/src/components/Header.js function logout (line 93) | async function logout() { FILE: web/default/src/components/LoginForm.js function handleChange (line 69) | function handleChange(e) { function handleSubmit (line 74) | async function handleSubmit(e) { FILE: web/default/src/components/LogsTable.js function renderTimestamp (line 28) | function renderTimestamp(timestamp, request_id) { constant MODE_OPTIONS (line 45) | const MODE_OPTIONS = [ function renderType (line 50) | function renderType(type) { function getColorByElapsedTime (line 91) | function getColorByElapsedTime(elapsedTime) { function renderDetail (line 100) | function renderDetail(log) { FILE: web/default/src/components/PasswordResetConfirm.js function handleSubmit (line 52) | async function handleSubmit(e) { FILE: web/default/src/components/PasswordResetForm.js function handleChange (line 53) | function handleChange(e) { function handleSubmit (line 58) | async function handleSubmit(e) { FILE: web/default/src/components/PrivateRoute.js function PrivateRoute (line 6) | function PrivateRoute({ children }) { FILE: web/default/src/components/RedemptionsTable.js function renderTimestamp (line 25) | function renderTimestamp(timestamp) { function renderStatus (line 29) | function renderStatus(status, t) { FILE: web/default/src/components/RegisterForm.js function handleChange (line 67) | function handleChange(e) { function handleSubmit (line 73) | async function handleSubmit(e) { FILE: web/default/src/components/TokensTable.js function renderTimestamp (line 25) | function renderTimestamp(timestamp) { function renderStatus (line 29) | function renderStatus(status, t) { FILE: web/default/src/components/UsersTable.js function renderRole (line 23) | function renderRole(role, t) { FILE: web/default/src/components/utils.js function getOAuthState (line 3) | async function getOAuthState() { function onGitHubOAuthClicked (line 14) | async function onGitHubOAuthClicked(github_client_id) { function onLarkOAuthClicked (line 22) | async function onLarkOAuthClicked(lark_client_id) { FILE: web/default/src/constants/channel.constants.js constant CHANNEL_OPTIONS (line 1) | const CHANNEL_OPTIONS = [ FILE: web/default/src/constants/common.constant.js constant ITEMS_PER_PAGE (line 1) | const ITEMS_PER_PAGE = 10; FILE: web/default/src/helpers/api.js constant API (line 4) | const API = axios.create({ FILE: web/default/src/helpers/auth-header.js function authHeader (line 1) | function authHeader() { FILE: web/default/src/helpers/helper.js function getChannelOption (line 5) | function getChannelOption(channelId) { FILE: web/default/src/helpers/render.js function renderText (line 5) | function renderText(text, limit) { function renderGroup (line 12) | function renderGroup(group) { function renderNumber (line 40) | function renderNumber(num) { function renderQuota (line 52) | function renderQuota(quota, t, precision = 2) { function renderQuotaWithPrompt (line 67) | function renderQuotaWithPrompt(quota, t) { function renderColorLabel (line 98) | function renderColorLabel(text) { function renderChannelTip (line 111) | function renderChannelTip(channelId) { FILE: web/default/src/helpers/utils.js function isAdmin (line 11) | function isAdmin() { function isRoot (line 18) | function isRoot() { function getSystemName (line 25) | function getSystemName() { function getLogo (line 31) | function getLogo() { function getFooterHTML (line 37) | function getFooterHTML() { function copy (line 41) | async function copy(text) { function isMobile (line 52) | function isMobile() { function showError (line 76) | function showError(error) { function showWarning (line 106) | function showWarning(message) { function showSuccess (line 110) | function showSuccess(message) { function showInfo (line 114) | function showInfo(message) { function showNotice (line 118) | function showNotice(message, isHTML = false) { function openPage (line 126) | function openPage(url) { function removeTrailingSlash (line 130) | function removeTrailingSlash(url) { function timestamp2string (line 138) | function timestamp2string(timestamp) { function downloadTextAsFile (line 166) | function downloadTextAsFile(text, filename) { function shouldShowPrompt (line 184) | function shouldShowPrompt(id) { function setPromptShown (line 189) | function setPromptShown(id) { function loadChannelModels (line 194) | async function loadChannelModels() { function getChannelModels (line 204) | function getChannelModels(type) { FILE: web/default/src/pages/Channel/EditChannel.js constant MODEL_MAPPING_EXAMPLE (line 9) | const MODEL_MAPPING_EXAMPLE = { function type2secretPrompt (line 15) | function type2secretPrompt(type, t) {