feat: comprehensive token usage tracking for V2
Add provider-specific usage details, fix streaming usage, and return usage from all high-level APIs (Chat.Send, Generate[T], Agent.Run). Breaking changes: - Chat.Send/SendMessage/SendWithImages now return (string, *Usage, error) - Generate[T]/GenerateWith[T] now return (T, *Usage, error) - Agent.Run/RunMessages now return (string, *Usage, error) New features: - Usage.Details map for provider-specific token breakdowns (reasoning, cached, audio, thoughts tokens) - OpenAI streaming now captures usage via StreamOptions.IncludeUsage - Google streaming now captures UsageMetadata from final chunk - UsageTracker.Details() for accumulated detail totals - ModelPricing and PricingRegistry for cost computation Closes #2 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -64,8 +64,19 @@ type Usage struct {
|
||||
InputTokens int
|
||||
OutputTokens int
|
||||
TotalTokens int
|
||||
Details map[string]int // provider-specific breakdown (e.g., cached, reasoning tokens)
|
||||
}
|
||||
|
||||
// Standardized detail keys for provider-specific token breakdowns.
|
||||
const (
|
||||
UsageDetailReasoningTokens = "reasoning_tokens"
|
||||
UsageDetailCachedInputTokens = "cached_input_tokens"
|
||||
UsageDetailCacheCreationTokens = "cache_creation_tokens"
|
||||
UsageDetailAudioInputTokens = "audio_input_tokens"
|
||||
UsageDetailAudioOutputTokens = "audio_output_tokens"
|
||||
UsageDetailThoughtsTokens = "thoughts_tokens"
|
||||
)
|
||||
|
||||
// StreamEventType identifies the kind of stream event.
|
||||
type StreamEventType int
|
||||
|
||||
|
||||
Reference in New Issue
Block a user