Module: LlmCostTracker::Pricing::PriceKey

Defined in:
lib/llm_cost_tracker/pricing/price_key.rb

Constant Summary collapse

ABOVE_CONTEXT_PREFIX =
"above_context_"

Class Method Summary collapse

Class Method Details

.build(dimension_key, mode: nil, above_context: false) ⇒ Object



12
13
14
15
# File 'lib/llm_cost_tracker/pricing/price_key.rb', line 12

def build(dimension_key, mode: nil, above_context: false)
  key = mode ? "#{mode}_#{dimension_key}" : dimension_key.to_s
  above_context ? "#{ABOVE_CONTEXT_PREFIX}#{key}" : key
end

.parse_dimension_key(key) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/llm_cost_tracker/pricing/price_key.rb', line 27

def parse_dimension_key(key)
  name = key.to_s
  exact = Usage::Catalog.all.find { |dimension| dimension.key == name }
  return [exact, nil] if exact

  Usage::Catalog.all.sort_by { |dimension| -dimension.key.length }.each do |dimension|
    suffix = "_#{dimension.key}"
    next unless name.end_with?(suffix)

    tier = name.delete_suffix(suffix)
    return [dimension, tier] unless tier.empty?
  end
  nil
end

.price_key_for(key) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/llm_cost_tracker/pricing/price_key.rb', line 17

def price_key_for(key)
  key = key.to_s
  dimension_key = strip_mode_prefix(key.delete_prefix(ABOVE_CONTEXT_PREFIX))
  dimension = Usage::Catalog[dimension_key]
  return nil unless dimension
  return key if key == dimension_key

  dimension.token_key ? key : nil
end