ops_openai_token_stats_models.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package service
  2. import "time"
  3. type OpsOpenAITokenStatsFilter struct {
  4. TimeRange string
  5. StartTime time.Time
  6. EndTime time.Time
  7. Platform string
  8. GroupID *int64
  9. // Pagination mode (default): page/page_size
  10. Page int
  11. PageSize int
  12. // TopN mode: top_n
  13. TopN int
  14. }
  15. func (f *OpsOpenAITokenStatsFilter) IsTopNMode() bool {
  16. return f != nil && f.TopN > 0
  17. }
  18. type OpsOpenAITokenStatsItem struct {
  19. Model string `json:"model"`
  20. RequestCount int64 `json:"request_count"`
  21. AvgTokensPerSec *float64 `json:"avg_tokens_per_sec"`
  22. AvgFirstTokenMs *float64 `json:"avg_first_token_ms"`
  23. TotalOutputTokens int64 `json:"total_output_tokens"`
  24. AvgDurationMs int64 `json:"avg_duration_ms"`
  25. RequestsWithFirstToken int64 `json:"requests_with_first_token"`
  26. }
  27. type OpsOpenAITokenStatsResponse struct {
  28. TimeRange string `json:"time_range"`
  29. StartTime time.Time `json:"start_time"`
  30. EndTime time.Time `json:"end_time"`
  31. Platform string `json:"platform,omitempty"`
  32. GroupID *int64 `json:"group_id,omitempty"`
  33. Items []*OpsOpenAITokenStatsItem `json:"items"`
  34. // Total model rows before pagination/topN trimming.
  35. Total int64 `json:"total"`
  36. // Pagination mode metadata.
  37. Page int `json:"page,omitempty"`
  38. PageSize int `json:"page_size,omitempty"`
  39. // TopN mode metadata.
  40. TopN *int `json:"top_n,omitempty"`
  41. }