Class: LlmCostTracker::PriceSync::ModelCatalog

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

Constant Summary collapse

OPENROUTER_PROVIDER_PREFIXES =
{
  openai: %w[openai],
  anthropic: %w[anthropic],
  gemini: %w[google]
}.freeze
LITELLM_PROVIDER_PREFIXES =
{
  openai: [nil, "openai"],
  anthropic: [nil, "anthropic"],
  gemini: [nil, "gemini"]
}.freeze
ALIASES =
{
  "gpt-4o-2024-05-13" => "gpt-4o"
}.freeze

Class Method Summary collapse

Class Method Details

.guess_provider(our_model) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/llm_cost_tracker/price_sync/model_catalog.rb', line 29

def guess_provider(our_model)
  case our_model.to_s
  when /\A(?:gpt-|o1|o3|o4|chatgpt|text-embedding)/
    :openai
  when /\Aclaude-/
    :anthropic
  when /\Agemini-/
    :gemini
  end
end

.resolve_from_litellm(our_model, payload) ⇒ Object



21
22
23
# File 'lib/llm_cost_tracker/price_sync/model_catalog.rb', line 21

def resolve_from_litellm(our_model, payload)
  litellm_candidates(our_model).find { |candidate| payload.key?(candidate) }
end

.resolve_from_openrouter(our_model, index) ⇒ Object



25
26
27
# File 'lib/llm_cost_tracker/price_sync/model_catalog.rb', line 25

def resolve_from_openrouter(our_model, index)
  openrouter_candidates(our_model).find { |candidate| index.key?(candidate) }
end