Class: LlmCostTracker::Tracker

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

Constant Summary collapse

EVENT_NAME =
"llm_request.llm_cost_tracker"

Class Method Summary collapse

Class Method Details

.record(provider:, model:, input_tokens:, output_tokens:, metadata: {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/llm_cost_tracker/tracker.rb', line 8

def record(provider:, model:, input_tokens:, output_tokens:, metadata: {})
  cost_data = Pricing.cost_for(
    model: model,
    input_tokens: input_tokens,
    output_tokens: output_tokens
  )

  event = {
    provider: provider,
    model: model,
    input_tokens: input_tokens,
    output_tokens: output_tokens,
    total_tokens: input_tokens + output_tokens,
    cost: cost_data,
    tags: LlmCostTracker.configuration.default_tags.merge(),
    tracked_at: Time.now.utc
  }

  # Emit ActiveSupport::Notifications event
  ActiveSupport::Notifications.instrument(EVENT_NAME, event)

  # Store based on backend
  store(event)

  # Budget check
  check_budget(event)

  event
end