Documentation
¶
Index ¶
- func ApproximateRequestTokens(messages []llm.Message) int64
- func ApproximateTokens(text string) int64
- func ResolveTurnUsage(request llm.ChatRequest, reply *llm.Message) llm.Usage
- type Agent
- type Alert
- type AlertResult
- type Config
- type DailyStats
- type DatabaseStorage
- func (s *DatabaseStorage) Cleanup() error
- func (s *DatabaseStorage) Close() error
- func (s *DatabaseStorage) DeleteSession(sessionID string) error
- func (s *DatabaseStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
- func (s *DatabaseStorage) LoadHistorical() (*HistoricalData, error)
- func (s *DatabaseStorage) LoadSession(sessionID string) (*SessionStats, error)
- func (s *DatabaseStorage) SaveHistorical(data *HistoricalData) error
- func (s *DatabaseStorage) SaveSession(sessionID string, stats *SessionStats) error
- type ErrorCode
- type ExportRequest
- type FileStorage
- func (s *FileStorage) Cleanup() error
- func (s *FileStorage) DeleteSession(sessionID string) error
- func (s *FileStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
- func (s *FileStorage) LoadHistorical() (*HistoricalData, error)
- func (s *FileStorage) LoadSession(sessionID string) (*SessionStats, error)
- func (s *FileStorage) SaveHistorical(data *HistoricalData) error
- func (s *FileStorage) SaveSession(sessionID string, stats *SessionStats) error
- type HistoricalData
- type LLMProvider
- type MemoryStorage
- func (s *MemoryStorage) Cleanup() error
- func (s *MemoryStorage) DeleteSession(sessionID string) error
- func (s *MemoryStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
- func (s *MemoryStorage) LoadHistorical() (*HistoricalData, error)
- func (s *MemoryStorage) LoadSession(sessionID string) (*SessionStats, error)
- func (s *MemoryStorage) SaveHistorical(data *HistoricalData) error
- func (s *MemoryStorage) SaveSession(sessionID string, stats *SessionStats) error
- type Message
- type Metrics
- type ModelStats
- type ModelUsageReport
- type MonthlyStats
- type Notifier
- type RealtimeStats
- type ReportRequest
- type Response
- type SessionStats
- type Storage
- type TokenRecordRequest
- type TokenUsageManager
- func (tm *TokenUsageManager) CheckThresholds() (*AlertResult, error)
- func (tm *TokenUsageManager) Close() error
- func (tm *TokenUsageManager) ExportData(req *ExportRequest) ([]byte, error)
- func (tm *TokenUsageManager) GenerateReport(req *ReportRequest) (*UsageReport, error)
- func (tm *TokenUsageManager) GetModelUsage(modelName string, period string) (*ModelUsageReport, error)
- func (tm *TokenUsageManager) GetRealtimeStats() (*RealtimeStats, error)
- func (tm *TokenUsageManager) GetSessionStats(sessionID string) (*SessionStats, error)
- func (tm *TokenUsageManager) GetUsageByPeriod(start, end time.Time, filter *UsageFilter) (*UsageReport, error)
- func (tm *TokenUsageManager) RecordTokenUsage(ctx context.Context, req *TokenRecordRequest) error
- func (tm *TokenUsageManager) SetNotifier(notifier Notifier)
- func (tm *TokenUsageManager) StartMonitoring(ctx context.Context) error
- type UsageError
- type UsageFilter
- type UsageRecord
- type UsageReport
- type WeeklyStats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApproximateRequestTokens ¶
ApproximateRequestTokens estimates the current request token size.
func ApproximateTokens ¶
ApproximateTokens uses a conservative fallback estimator (~4 chars/token).
func ResolveTurnUsage ¶
ResolveTurnUsage returns provider usage when present, otherwise falls back to approximation from request/reply payloads.
Types ¶
type Agent ¶
type Agent struct {
// contains filtered or unexported fields
}
Agent 示例:将token记录接入业务调用链。
type Config ¶
type Config struct {
StorageType string `json:"storage_type"` // memory/file/database
StoragePath string `json:"storage_path"`
BackupInterval time.Duration `json:"backup_interval"`
MaxSessions int `json:"max_sessions"`
AlertThreshold int64 `json:"alert_threshold"`
EnableRealtime bool `json:"enable_realtime"`
RetentionDays int `json:"retention_days"`
MonitorInterval time.Duration `json:"monitor_interval,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
DatabaseDriver string `json:"database_driver,omitempty"`
}
Config 配置结构。
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns a pragmatic production-safe default.
type DailyStats ¶
type DailyStats struct {
Date string `json:"date"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessCount int64 `json:"success_count"`
ErrorCount int64 `json:"error_count"`
AvgLatencyMs float64 `json:"avg_latency_ms"`
ModelTokens map[string]int64 `json:"model_tokens,omitempty"`
}
type DatabaseStorage ¶
type DatabaseStorage struct {
// contains filtered or unexported fields
}
DatabaseStorage 数据库存储实现。 该实现依赖外部注册的 database/sql driver。
func NewDatabaseStorage ¶
func NewDatabaseStorage(driverName, dsn string) (*DatabaseStorage, error)
func (*DatabaseStorage) Cleanup ¶
func (s *DatabaseStorage) Cleanup() error
func (*DatabaseStorage) Close ¶
func (s *DatabaseStorage) Close() error
func (*DatabaseStorage) DeleteSession ¶
func (s *DatabaseStorage) DeleteSession(sessionID string) error
func (*DatabaseStorage) ListSessions ¶
func (s *DatabaseStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
func (*DatabaseStorage) LoadHistorical ¶
func (s *DatabaseStorage) LoadHistorical() (*HistoricalData, error)
func (*DatabaseStorage) LoadSession ¶
func (s *DatabaseStorage) LoadSession(sessionID string) (*SessionStats, error)
func (*DatabaseStorage) SaveHistorical ¶
func (s *DatabaseStorage) SaveHistorical(data *HistoricalData) error
func (*DatabaseStorage) SaveSession ¶
func (s *DatabaseStorage) SaveSession(sessionID string, stats *SessionStats) error
type ExportRequest ¶
type ExportRequest struct {
Format string `json:"format"` // json/csv/excel
Report *ReportRequest `json:"report"`
}
type FileStorage ¶
type FileStorage struct {
// contains filtered or unexported fields
}
FileStorage JSON文件存储实现。
func NewFileStorage ¶
func NewFileStorage(path string) (*FileStorage, error)
func (*FileStorage) Cleanup ¶
func (s *FileStorage) Cleanup() error
func (*FileStorage) DeleteSession ¶
func (s *FileStorage) DeleteSession(sessionID string) error
func (*FileStorage) ListSessions ¶
func (s *FileStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
func (*FileStorage) LoadHistorical ¶
func (s *FileStorage) LoadHistorical() (*HistoricalData, error)
func (*FileStorage) LoadSession ¶
func (s *FileStorage) LoadSession(sessionID string) (*SessionStats, error)
func (*FileStorage) SaveHistorical ¶
func (s *FileStorage) SaveHistorical(data *HistoricalData) error
func (*FileStorage) SaveSession ¶
func (s *FileStorage) SaveSession(sessionID string, stats *SessionStats) error
type HistoricalData ¶
type HistoricalData struct {
DailyStats map[string]*DailyStats `json:"daily_stats"` // 按日期
WeeklyStats map[string]*WeeklyStats `json:"weekly_stats"` // 按周
MonthlyStats map[string]*MonthlyStats `json:"monthly_stats"` // 按月
ModelStats map[string]*ModelStats `json:"model_stats"` // 按模型
Records []*UsageRecord `json:"records,omitempty"`
}
HistoricalData 历史数据。
type LLMProvider ¶
type LLMProvider interface {
Complete(ctx context.Context, content string) (*Response, error)
ModelName() string
}
LLMProvider 示例接口,演示如何集成TokenUsageManager。
type MemoryStorage ¶
type MemoryStorage struct {
// contains filtered or unexported fields
}
MemoryStorage 内存存储实现。
func NewMemoryStorage ¶
func NewMemoryStorage() *MemoryStorage
func (*MemoryStorage) Cleanup ¶
func (s *MemoryStorage) Cleanup() error
func (*MemoryStorage) DeleteSession ¶
func (s *MemoryStorage) DeleteSession(sessionID string) error
func (*MemoryStorage) ListSessions ¶
func (s *MemoryStorage) ListSessions(start, end time.Time) ([]*SessionStats, error)
func (*MemoryStorage) LoadHistorical ¶
func (s *MemoryStorage) LoadHistorical() (*HistoricalData, error)
func (*MemoryStorage) LoadSession ¶
func (s *MemoryStorage) LoadSession(sessionID string) (*SessionStats, error)
func (*MemoryStorage) SaveHistorical ¶
func (s *MemoryStorage) SaveHistorical(data *HistoricalData) error
func (*MemoryStorage) SaveSession ¶
func (s *MemoryStorage) SaveSession(sessionID string, stats *SessionStats) error
type Metrics ¶
type Metrics struct {
CurrentTPS float64 `json:"current_tps"` // 每秒token数
PeakTPS float64 `json:"peak_tps"`
ActiveSessions int `json:"active_sessions"`
ErrorRate float64 `json:"error_rate"`
Latency time.Duration `json:"avg_latency"`
}
Metrics 实时指标。
type ModelStats ¶
type ModelStats struct {
ModelName string `json:"model_name"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessCount int64 `json:"success_count"`
ErrorCount int64 `json:"error_count"`
AvgLatencyMs float64 `json:"avg_latency_ms"`
LastUpdated time.Time `json:"last_updated"`
}
type ModelUsageReport ¶
type ModelUsageReport struct {
ModelName string `json:"model_name"`
Period string `json:"period"`
TotalInputTokens int64 `json:"total_input_tokens"`
TotalOutputTokens int64 `json:"total_output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessRate float64 `json:"success_rate"`
AverageTokens float64 `json:"average_tokens"`
AvgLatency time.Duration `json:"avg_latency"`
StartDate time.Time `json:"start_date"`
EndDate time.Time `json:"end_date"`
}
type MonthlyStats ¶
type MonthlyStats struct {
Month string `json:"month"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessCount int64 `json:"success_count"`
ErrorCount int64 `json:"error_count"`
AvgLatencyMs float64 `json:"avg_latency_ms"`
ModelTokens map[string]int64 `json:"model_tokens,omitempty"`
}
type RealtimeStats ¶
type RealtimeStats struct {
Metrics Metrics `json:"metrics"`
Sessions []*SessionStats `json:"sessions"`
GeneratedAt time.Time `json:"generated_at"`
TotalTokens int64 `json:"total_tokens"`
}
type ReportRequest ¶
type ReportRequest struct {
Type string `json:"type"` // daily/weekly/monthly/custom
StartDate time.Time `json:"start_date"`
EndDate time.Time `json:"end_date"`
Format string `json:"format"` // json/csv/excel
Filters *UsageFilter `json:"filters"`
}
ReportRequest 报表请求。
type SessionStats ¶
type SessionStats struct {
SessionID string `json:"session_id"`
StartTime time.Time `json:"start_time"`
LastUpdate time.Time `json:"last_update"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int `json:"request_count"`
AverageTokens float64 `json:"average_tokens"`
Metadata map[string]string `json:"metadata"`
}
SessionStats 会话统计。
type Storage ¶
type Storage interface {
SaveSession(sessionID string, stats *SessionStats) error
LoadSession(sessionID string) (*SessionStats, error)
SaveHistorical(data *HistoricalData) error
LoadHistorical() (*HistoricalData, error)
ListSessions(start, end time.Time) ([]*SessionStats, error)
DeleteSession(sessionID string) error
Cleanup() error
}
Storage 存储接口。
type TokenRecordRequest ¶
type TokenRecordRequest struct {
SessionID string `json:"session_id"`
ModelName string `json:"model_name"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
RequestID string `json:"request_id"`
Latency time.Duration `json:"latency"`
Success bool `json:"success"`
Metadata map[string]string `json:"metadata"`
}
TokenRecordRequest token记录请求。
type TokenUsageManager ¶
type TokenUsageManager struct {
// contains filtered or unexported fields
}
TokenUsageManager token使用量管理器。
func NewTokenUsageManager ¶
func NewTokenUsageManager(cfg *Config) (*TokenUsageManager, error)
NewTokenUsageManager 创建Token使用量管理器。
func (*TokenUsageManager) CheckThresholds ¶
func (tm *TokenUsageManager) CheckThresholds() (*AlertResult, error)
CheckThresholds 检查阈值。
func (*TokenUsageManager) ExportData ¶
func (tm *TokenUsageManager) ExportData(req *ExportRequest) ([]byte, error)
ExportData 导出数据。
func (*TokenUsageManager) GenerateReport ¶
func (tm *TokenUsageManager) GenerateReport(req *ReportRequest) (*UsageReport, error)
GenerateReport 生成使用报告。
func (*TokenUsageManager) GetModelUsage ¶
func (tm *TokenUsageManager) GetModelUsage(modelName string, period string) (*ModelUsageReport, error)
GetModelUsage 获取模型使用统计。
func (*TokenUsageManager) GetRealtimeStats ¶
func (tm *TokenUsageManager) GetRealtimeStats() (*RealtimeStats, error)
GetRealtimeStats 获取实时统计。
func (*TokenUsageManager) GetSessionStats ¶
func (tm *TokenUsageManager) GetSessionStats(sessionID string) (*SessionStats, error)
GetSessionStats 获取会话统计。
func (*TokenUsageManager) GetUsageByPeriod ¶
func (tm *TokenUsageManager) GetUsageByPeriod(start, end time.Time, filter *UsageFilter) (*UsageReport, error)
GetUsageByPeriod 获取时间段使用量。
func (*TokenUsageManager) RecordTokenUsage ¶
func (tm *TokenUsageManager) RecordTokenUsage(ctx context.Context, req *TokenRecordRequest) error
RecordTokenUsage 记录token使用。
func (*TokenUsageManager) SetNotifier ¶
func (tm *TokenUsageManager) SetNotifier(notifier Notifier)
func (*TokenUsageManager) StartMonitoring ¶
func (tm *TokenUsageManager) StartMonitoring(ctx context.Context) error
StartMonitoring 启动监控。
type UsageError ¶
func (*UsageError) Error ¶
func (e *UsageError) Error() string
func (*UsageError) Unwrap ¶
func (e *UsageError) Unwrap() error
type UsageFilter ¶
type UsageRecord ¶
type UsageRecord struct {
Time time.Time `json:"time"`
SessionID string `json:"session_id"`
ModelName string `json:"model_name"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestID string `json:"request_id"`
Latency time.Duration `json:"latency"`
Success bool `json:"success"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type UsageReport ¶
type UsageReport struct {
Type string `json:"type"`
StartDate time.Time `json:"start_date"`
EndDate time.Time `json:"end_date"`
TotalInputTokens int64 `json:"total_input_tokens"`
TotalOutputTokens int64 `json:"total_output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessCount int64 `json:"success_count"`
ErrorCount int64 `json:"error_count"`
AvgLatency time.Duration `json:"avg_latency"`
SessionStats map[string]SessionStats `json:"session_stats,omitempty"`
ModelStats map[string]ModelStats `json:"model_stats,omitempty"`
DailyStats map[string]DailyStats `json:"daily_stats,omitempty"`
GeneratedAt time.Time `json:"generated_at"`
}
type WeeklyStats ¶
type WeeklyStats struct {
Week string `json:"week"`
InputTokens int64 `json:"input_tokens"`
OutputTokens int64 `json:"output_tokens"`
TotalTokens int64 `json:"total_tokens"`
RequestCount int64 `json:"request_count"`
SuccessCount int64 `json:"success_count"`
ErrorCount int64 `json:"error_count"`
AvgLatencyMs float64 `json:"avg_latency_ms"`
ModelTokens map[string]int64 `json:"model_tokens,omitempty"`
}