Class: LlmCostTracker::PriceSync::Merger

Inherits:
Object
  • Object
show all
Defined in:
lib/llm_cost_tracker/price_sync/merger.rb

Defined Under Namespace

Classes: Discrepancy

Constant Summary collapse

PRIORITY_ORDER =
%i[litellm openrouter].freeze
SUPPLEMENTAL_FIELDS =
%i[cached_input cache_read_input cache_creation_input].freeze

Instance Method Summary collapse

Instance Method Details

#merge(results_by_source) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/llm_cost_tracker/price_sync/merger.rb', line 11

def merge(results_by_source)
  prices = collect_prices(results_by_source)
  discrepancies = []

  merged = prices.group_by(&:model).sort.to_h.transform_values do |candidates|
    sorted = sort_candidates(candidates)
    discrepancies.concat(detect_discrepancies(sorted))
    fill_missing_fields(sorted.first, sorted.drop(1))
  end

  [merged, discrepancies]
end