MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / HandleUsage

Method HandleUsage

internal/redisqueue/plugin.go:20–115  ·  view source on GitHub ↗
(ctx context.Context, record coreusage.Record)

Source from the content-addressed store, hash-verified

18type usageQueuePlugin struct{}
19
20func (p *usageQueuePlugin) HandleUsage(ctx context.Context, record coreusage.Record) {
21 if p == nil {
22 return
23 }
24 if !Enabled() || !UsageStatisticsEnabled() {
25 return
26 }
27
28 timestamp := record.RequestedAt
29 if timestamp.IsZero() {
30 timestamp = time.Now()
31 }
32
33 modelName := strings.TrimSpace(record.Model)
34 if modelName == "" {
35 modelName = "unknown"
36 }
37 aliasName := strings.TrimSpace(record.Alias)
38 if aliasName == "" {
39 aliasName = modelName
40 }
41 provider := strings.TrimSpace(record.Provider)
42 if provider == "" {
43 provider = "unknown"
44 }
45 executorType := strings.TrimSpace(record.ExecutorType)
46 if executorType == "" {
47 executorType = "unknown"
48 }
49 authType := strings.TrimSpace(record.AuthType)
50 if authType == "" {
51 authType = "unknown"
52 }
53 apiKey := strings.TrimSpace(record.APIKey)
54 requestID := strings.TrimSpace(internallogging.GetRequestID(ctx))
55 reasoningEffort := strings.TrimSpace(record.ReasoningEffort)
56 if reasoningEffort == "" {
57 reasoningEffort = coreusage.ReasoningEffortFromContext(ctx)
58 }
59 serviceTier := strings.TrimSpace(record.ServiceTier)
60 if serviceTier == "" {
61 serviceTier = coreusage.ServiceTierFromContext(ctx)
62 }
63
64 tokens := tokenStats{
65 InputTokens: record.Detail.InputTokens,
66 OutputTokens: record.Detail.OutputTokens,
67 ReasoningTokens: record.Detail.ReasoningTokens,
68 CachedTokens: record.Detail.CachedTokens,
69 CacheReadTokens: record.Detail.CacheReadTokens,
70 CacheCreationTokens: record.Detail.CacheCreationTokens,
71 TotalTokens: record.Detail.TotalTokens,
72 }
73 if tokens.TotalTokens == 0 {
74 tokens.TotalTokens = tokens.InputTokens + tokens.OutputTokens + tokens.ReasoningTokens
75 }
76 if tokens.TotalTokens == 0 {
77 tokens.TotalTokens = tokens.InputTokens + tokens.OutputTokens + tokens.ReasoningTokens + tokens.CachedTokens

Calls 6

EnabledFunction · 0.85
UsageStatisticsEnabledFunction · 0.85
resolveSuccessFunction · 0.85
resolveFailFunction · 0.85
resolveEndpointFunction · 0.85
EnqueueFunction · 0.85