Module: LlmCostTracker::Pricing
- Defined in:
- lib/llm_cost_tracker/pricing.rb,
lib/llm_cost_tracker/pricing/lookup.rb,
lib/llm_cost_tracker/pricing/explainer.rb,
lib/llm_cost_tracker/pricing/effective_prices.rb
Defined Under Namespace
Modules: EffectivePrices, Explainer, Lookup Classes: EffectivePriceSet, Explanation
Constant Summary collapse
- PRICES =
PriceRegistry.builtin_prices
Class Method Summary collapse
- .cost_for(provider:, model:, input_tokens:, output_tokens:, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) ⇒ Object
- .explain(provider:, model:, input_tokens: 1, output_tokens: 1, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) ⇒ Object
- .lookup(provider:, model:) ⇒ Object
Class Method Details
.cost_for(provider:, model:, input_tokens:, output_tokens:, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/llm_cost_tracker/pricing.rb', line 12 def cost_for(provider:, model:, input_tokens:, output_tokens:, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) prices = lookup(provider: provider, model: model) return nil unless prices usage = UsageBreakdown.build( input_tokens: input_tokens, output_tokens: output_tokens, cache_read_input_tokens: cache_read_input_tokens, cache_write_input_tokens: cache_write_input_tokens ) costs = calculate_costs(usage, prices, pricing_mode: pricing_mode) return nil unless costs Cost.new( input_cost: costs[:input].round(8), cache_read_input_cost: costs[:cache_read_input].round(8), cache_write_input_cost: costs[:cache_write_input].round(8), output_cost: costs[:output].round(8), total_cost: costs.values.sum.round(8), currency: "USD" ) end |
.explain(provider:, model:, input_tokens: 1, output_tokens: 1, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/llm_cost_tracker/pricing.rb', line 40 def explain(provider:, model:, input_tokens: 1, output_tokens: 1, cache_read_input_tokens: 0, cache_write_input_tokens: 0, pricing_mode: nil) Explainer.call( provider: provider, model: model, input_tokens: input_tokens, output_tokens: output_tokens, cache_read_input_tokens: cache_read_input_tokens, cache_write_input_tokens: cache_write_input_tokens, pricing_mode: pricing_mode ) end |