18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/llm_cost_tracker/tracker.rb', line 18
def record(provider:, model:, input_tokens:, output_tokens:, latency_ms: nil, stream: false,
usage_source: nil, provider_response_id: nil, pricing_mode: nil, metadata: {})
return unless LlmCostTracker.configuration.enabled
model = normalize_model(model)
usage = usage_data(input_tokens, output_tokens, metadata, pricing_mode)
cost_data = cost_for_usage(provider, model, usage)
UnknownPricing.handle!(model) unless cost_data
event = build_event(
provider: provider,
model: model,
usage: usage,
cost_data: cost_data,
metadata: metadata,
latency_ms: latency_ms,
stream: stream,
usage_source: usage_source,
provider_response_id: provider_response_id
)
ActiveSupport::Notifications.instrument(EVENT_NAME, event.to_h)
stored = Storage::Dispatcher.save(event)
Budget.check!(event) unless stored == false
event
end
|