MCPcopy Create free account
hub / github.com/astercloud/aster / extractTokenUsage

Method extractTokenUsage

pkg/middleware/telemetry.go:308–330  ·  view source on GitHub ↗

extractTokenUsage 从响应 Metadata 中提取 token 使用情况

(span telemetry.Span, metadata map[string]any)

Source from the content-addressed store, hash-verified

306
307// extractTokenUsage 从响应 Metadata 中提取 token 使用情况
308func (m *TelemetryMiddleware) extractTokenUsage(span telemetry.Span, metadata map[string]any) {
309 if inputTokens, ok := metadata["input_tokens"].(int64); ok {
310 span.SetAttributes(telemetry.Int64(genai.AttrUsageInputTokens, inputTokens))
311 } else if inputTokens, ok := metadata["input_tokens"].(int); ok {
312 span.SetAttributes(telemetry.Int64(genai.AttrUsageInputTokens, int64(inputTokens)))
313 }
314
315 if outputTokens, ok := metadata["output_tokens"].(int64); ok {
316 span.SetAttributes(telemetry.Int64(genai.AttrUsageOutputTokens, outputTokens))
317 } else if outputTokens, ok := metadata["output_tokens"].(int); ok {
318 span.SetAttributes(telemetry.Int64(genai.AttrUsageOutputTokens, int64(outputTokens)))
319 }
320
321 // 支持 usage 嵌套结构
322 if usage, ok := metadata["usage"].(map[string]any); ok {
323 if inputTokens, ok := usage["input_tokens"].(int); ok {
324 span.SetAttributes(telemetry.Int64(genai.AttrUsageInputTokens, int64(inputTokens)))
325 }
326 if outputTokens, ok := usage["output_tokens"].(int); ok {
327 span.SetAttributes(telemetry.Int64(genai.AttrUsageOutputTokens, int64(outputTokens)))
328 }
329 }
330}
331
332// extractResponseInfo 从响应 Metadata 中提取响应信息
333func (m *TelemetryMiddleware) extractResponseInfo(span telemetry.Span, metadata map[string]any) {

Callers 1

WrapModelCallMethod · 0.95

Calls 2

Int64Function · 0.92
SetAttributesMethod · 0.65

Tested by

no test coverage detected