Module: LlmCostTracker::Providers::Gemini::UsageExtractor
- Defined in:
- lib/llm_cost_tracker/providers/gemini/usage_extractor.rb
Class Method Summary collapse
- .audio_input_tokens(usage) ⇒ Object
- .audio_output_tokens(usage) ⇒ Object
- .gross_output_tokens(usage) ⇒ Object
- .image_input_tokens(usage) ⇒ Object
- .image_output_tokens(usage) ⇒ Object
- .modality_tokens(details, modality) ⇒ Object
- .regular_input_tokens(usage:, cache_read:, audio_input:, image_input:) ⇒ Object
- .regular_output_tokens(usage:, audio_output:, image_output:) ⇒ Object
- .token_usage(usage) ⇒ Object
Class Method Details
.audio_input_tokens(usage) ⇒ Object
46 47 48 49 50 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 46 def self.audio_input_tokens(usage) prompt_audio = modality_tokens(usage["promptTokensDetails"], "AUDIO") cache_audio = modality_tokens(usage["cacheTokensDetails"], "AUDIO") [prompt_audio - cache_audio, 0].max end |
.audio_output_tokens(usage) ⇒ Object
52 53 54 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 52 def self.audio_output_tokens(usage) modality_tokens(usage["candidatesTokensDetails"], "AUDIO") end |
.gross_output_tokens(usage) ⇒ Object
34 35 36 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 34 def self.gross_output_tokens(usage) usage["candidatesTokenCount"].to_i + usage["thoughtsTokenCount"].to_i end |
.image_input_tokens(usage) ⇒ Object
56 57 58 59 60 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 56 def self.image_input_tokens(usage) prompt_image = modality_tokens(usage["promptTokensDetails"], "IMAGE") cache_image = modality_tokens(usage["cacheTokensDetails"], "IMAGE") [prompt_image - cache_image, 0].max end |
.image_output_tokens(usage) ⇒ Object
62 63 64 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 62 def self.image_output_tokens(usage) modality_tokens(usage["candidatesTokensDetails"], "IMAGE") end |
.modality_tokens(details, modality) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 66 def self.modality_tokens(details, modality) Array(details).sum do |detail| next 0 unless detail["modality"] == modality detail["tokenCount"].to_i end end |
.regular_input_tokens(usage:, cache_read:, audio_input:, image_input:) ⇒ Object
38 39 40 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 38 def self.regular_input_tokens(usage:, cache_read:, audio_input:, image_input:) [usage["promptTokenCount"].to_i - cache_read - audio_input - image_input, 0].max end |
.regular_output_tokens(usage:, audio_output:, image_output:) ⇒ Object
42 43 44 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 42 def self.regular_output_tokens(usage:, audio_output:, image_output:) [gross_output_tokens(usage) - audio_output - image_output, 0].max end |
.token_usage(usage) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/llm_cost_tracker/providers/gemini/usage_extractor.rb', line 7 def self.token_usage(usage) cache_read = usage["cachedContentTokenCount"].to_i tool_use_prompt = usage["toolUsePromptTokenCount"].to_i audio_input = audio_input_tokens(usage) audio_output = audio_output_tokens(usage) image_input = image_input_tokens(usage) image_output = image_output_tokens(usage) Usage::TokenUsage.build( input_tokens: regular_input_tokens(usage: usage, cache_read: cache_read, audio_input: audio_input, image_input: image_input) + tool_use_prompt, output_tokens: regular_output_tokens(usage: usage, audio_output: audio_output, image_output: image_output), total_tokens: usage["totalTokenCount"], cache_read_input_tokens: cache_read, audio_input_tokens: audio_input, audio_output_tokens: audio_output, image_input_tokens: image_input, image_output_tokens: image_output, hidden_output_tokens: usage["thoughtsTokenCount"] ) end |