Module: LlmCostTracker

Defined in:
lib/llm_cost_tracker.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/parsers/gemini.rb,
lib/llm_cost_tracker/parsers/openai.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/storage/active_record_store.rb,
lib/llm_cost_tracker/generators/llm_cost_tracker/install_generator.rb

Defined Under Namespace

Modules: Generators, Middleware, Parsers, Pricing, Storage Classes: Configuration, Error, LlmApiCall, Railtie, Tracker

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



23
24
25
# File 'lib/llm_cost_tracker.rb', line 23

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

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

Yields:



27
28
29
# File 'lib/llm_cost_tracker.rb', line 27

def configure
  yield(configuration)
end

.reset_configuration!Object



31
32
33
# File 'lib/llm_cost_tracker.rb', line 31

def reset_configuration!
  @configuration = Configuration.new
end

.track(provider:, model:, input_tokens:, output_tokens:, **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
)


45
46
47
48
49
50
51
52
53
# File 'lib/llm_cost_tracker.rb', line 45

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