This commit refactors the logging mechanism across the application by replacing direct logger calls with a centralized logging approach using the `common` package. Key changes include: - Replaced instances of `logger.SysLog` and `logger.FatalLog` with `common.SysLog` and `common.FatalLog` for consistent logging practices. - Updated resource initialization error handling to utilize the new logging structure, enhancing maintainability and readability. - Minor adjustments to improve code clarity and organization throughout various modules. This change aims to streamline logging and improve the overall architecture of the codebase.
90 lines
3.9 KiB
Go
90 lines
3.9 KiB
Go
package service
|
|
|
|
import (
|
|
"one-api/common"
|
|
"one-api/constant"
|
|
"one-api/dto"
|
|
relaycommon "one-api/relay/common"
|
|
"one-api/types"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GenerateTextOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, modelRatio, groupRatio, completionRatio float64,
|
|
cacheTokens int, cacheRatio float64, modelPrice float64, userGroupRatio float64) map[string]interface{} {
|
|
other := make(map[string]interface{})
|
|
other["model_ratio"] = modelRatio
|
|
other["group_ratio"] = groupRatio
|
|
other["completion_ratio"] = completionRatio
|
|
other["cache_tokens"] = cacheTokens
|
|
other["cache_ratio"] = cacheRatio
|
|
other["model_price"] = modelPrice
|
|
other["user_group_ratio"] = userGroupRatio
|
|
other["frt"] = float64(relayInfo.FirstResponseTime.UnixMilli() - relayInfo.StartTime.UnixMilli())
|
|
if relayInfo.ReasoningEffort != "" {
|
|
other["reasoning_effort"] = relayInfo.ReasoningEffort
|
|
}
|
|
if relayInfo.IsModelMapped {
|
|
other["is_model_mapped"] = true
|
|
other["upstream_model_name"] = relayInfo.UpstreamModelName
|
|
}
|
|
|
|
isSystemPromptOverwritten := common.GetContextKeyBool(ctx, constant.ContextKeySystemPromptOverride)
|
|
if isSystemPromptOverwritten {
|
|
other["is_system_prompt_overwritten"] = true
|
|
}
|
|
|
|
adminInfo := make(map[string]interface{})
|
|
adminInfo["use_channel"] = ctx.GetStringSlice("use_channel")
|
|
isMultiKey := common.GetContextKeyBool(ctx, constant.ContextKeyChannelIsMultiKey)
|
|
if isMultiKey {
|
|
adminInfo["is_multi_key"] = true
|
|
adminInfo["multi_key_index"] = common.GetContextKeyInt(ctx, constant.ContextKeyChannelMultiKeyIndex)
|
|
}
|
|
other["admin_info"] = adminInfo
|
|
return other
|
|
}
|
|
|
|
func GenerateWssOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usage *dto.RealtimeUsage, modelRatio, groupRatio, completionRatio, audioRatio, audioCompletionRatio, modelPrice, userGroupRatio float64) map[string]interface{} {
|
|
info := GenerateTextOtherInfo(ctx, relayInfo, modelRatio, groupRatio, completionRatio, 0, 0.0, modelPrice, userGroupRatio)
|
|
info["ws"] = true
|
|
info["audio_input"] = usage.InputTokenDetails.AudioTokens
|
|
info["audio_output"] = usage.OutputTokenDetails.AudioTokens
|
|
info["text_input"] = usage.InputTokenDetails.TextTokens
|
|
info["text_output"] = usage.OutputTokenDetails.TextTokens
|
|
info["audio_ratio"] = audioRatio
|
|
info["audio_completion_ratio"] = audioCompletionRatio
|
|
return info
|
|
}
|
|
|
|
func GenerateAudioOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usage *dto.Usage, modelRatio, groupRatio, completionRatio, audioRatio, audioCompletionRatio, modelPrice, userGroupRatio float64) map[string]interface{} {
|
|
info := GenerateTextOtherInfo(ctx, relayInfo, modelRatio, groupRatio, completionRatio, 0, 0.0, modelPrice, userGroupRatio)
|
|
info["audio"] = true
|
|
info["audio_input"] = usage.PromptTokensDetails.AudioTokens
|
|
info["audio_output"] = usage.CompletionTokenDetails.AudioTokens
|
|
info["text_input"] = usage.PromptTokensDetails.TextTokens
|
|
info["text_output"] = usage.CompletionTokenDetails.TextTokens
|
|
info["audio_ratio"] = audioRatio
|
|
info["audio_completion_ratio"] = audioCompletionRatio
|
|
return info
|
|
}
|
|
|
|
func GenerateClaudeOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, modelRatio, groupRatio, completionRatio float64,
|
|
cacheTokens int, cacheRatio float64, cacheCreationTokens int, cacheCreationRatio float64, modelPrice float64, userGroupRatio float64) map[string]interface{} {
|
|
info := GenerateTextOtherInfo(ctx, relayInfo, modelRatio, groupRatio, completionRatio, cacheTokens, cacheRatio, modelPrice, userGroupRatio)
|
|
info["claude"] = true
|
|
info["cache_creation_tokens"] = cacheCreationTokens
|
|
info["cache_creation_ratio"] = cacheCreationRatio
|
|
return info
|
|
}
|
|
|
|
func GenerateMjOtherInfo(priceData types.PerCallPriceData) map[string]interface{} {
|
|
other := make(map[string]interface{})
|
|
other["model_price"] = priceData.ModelPrice
|
|
other["group_ratio"] = priceData.GroupRatioInfo.GroupRatio
|
|
if priceData.GroupRatioInfo.HasSpecialRatio {
|
|
other["user_group_ratio"] = priceData.GroupRatioInfo.GroupSpecialRatio
|
|
}
|
|
return other
|
|
}
|