Module: LlmCostTracker

Defined in:
lib/llm_cost_tracker.rb,
lib/llm_cost_tracker/budget.rb,
lib/llm_cost_tracker/errors.rb,
lib/llm_cost_tracker/pricing.rb,
lib/llm_cost_tracker/railtie.rb,
lib/llm_cost_tracker/tracker.rb,
lib/llm_cost_tracker/version.rb,
lib/llm_cost_tracker/llm_api_call.rb,
lib/llm_cost_tracker/parsers/base.rb,
lib/llm_cost_tracker/configuration.rb,
lib/llm_cost_tracker/event_metadata.rb,
lib/llm_cost_tracker/parsers/gemini.rb,
lib/llm_cost_tracker/parsers/openai.rb,
lib/llm_cost_tracker/price_registry.rb,
lib/llm_cost_tracker/unknown_pricing.rb,
lib/llm_cost_tracker/parsers/registry.rb,
lib/llm_cost_tracker/parsers/anthropic.rb,
lib/llm_cost_tracker/middleware/faraday.rb,
lib/llm_cost_tracker/parsers/openai_compatible.rb,
lib/llm_cost_tracker/storage/active_record_store.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/install_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/add_latency_ms_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/upgrade_tags_to_jsonb_generator.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/upgrade_cost_precision_generator.rb

Defined Under Namespace

Modules: EventMetadata, Generators, Middleware, Parsers, PriceRegistry, Pricing, Storage Classes: Budget, BudgetExceededError, Configuration, Error, LlmApiCall, Railtie, StorageError, Tracker, UnknownPricing, UnknownPricingError

Constant Summary collapse

CONFIGURATION_MUTEX =
Mutex.new
VERSION =
"0.1.2"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



29
30
31
# File 'lib/llm_cost_tracker.rb', line 29

def configuration
  @configuration || CONFIGURATION_MUTEX.synchronize { @configuration ||= Configuration.new }
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



33
34
35
36
37
# File 'lib/llm_cost_tracker.rb', line 33

def configure
  yield(configuration)
  configuration.normalize_openai_compatible_providers!
  warn_for_configuration!
end

.reset_configuration!Object



39
40
41
# File 'lib/llm_cost_tracker.rb', line 39

def reset_configuration!
  CONFIGURATION_MUTEX.synchronize { @configuration = Configuration.new }
end

.track(provider:, model:, input_tokens:, output_tokens:, latency_ms: nil, **metadata) ⇒ Object

Manual tracking for non-Faraday clients

LlmCostTracker.track(
  provider: :openai,
  model: "gpt-4o",
  input_tokens: 150,
  output_tokens: 50,
  feature: "chat",
  user_id: current_user.id
)


53
54
55
56
57
58
59
60
61
62
# File 'lib/llm_cost_tracker.rb', line 53

def track(provider:, model:, input_tokens:, output_tokens:, latency_ms: nil, **)
  Tracker.record(
    provider: provider.to_s,
    model: model,
    input_tokens: input_tokens,
    output_tokens: output_tokens,
    latency_ms: latency_ms,
    metadata: 
  )
end