Class: LlmCostTracker::Doctor

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

Defined Under Namespace

Classes: Check

Constant Summary collapse

CORE_COLUMNS =
%w[provider model input_tokens output_tokens total_tokens total_cost tags tracked_at].freeze
FEATURE_COLUMNS =
{
  "latency_ms" => "bin/rails generate llm_cost_tracker:add_latency_ms",
  "stream" => "bin/rails generate llm_cost_tracker:add_streaming",
  "usage_source" => "bin/rails generate llm_cost_tracker:add_streaming",
  "provider_response_id" => "bin/rails generate llm_cost_tracker:add_provider_response_id",
  "cache_read_input_tokens" => "bin/rails generate llm_cost_tracker:add_usage_breakdown",
  "cache_write_input_tokens" => "bin/rails generate llm_cost_tracker:add_usage_breakdown",
  "hidden_output_tokens" => "bin/rails generate llm_cost_tracker:add_usage_breakdown",
  "pricing_mode" => "bin/rails generate llm_cost_tracker:add_usage_breakdown"
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.callObject



21
# File 'lib/llm_cost_tracker/doctor.rb', line 21

def call = new.checks

.healthy?(checks = call) ⇒ Boolean

Returns:

  • (Boolean)


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

def healthy?(checks = call)
  checks.none? { |check| check.status == :error }
end

.report(checks = call) ⇒ Object



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

def report(checks = call)
  (["LLM Cost Tracker doctor"] + checks.map { |check| format_check(check) }).join("\n")
end

Instance Method Details

#checksObject



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/llm_cost_tracker/doctor.rb', line 38

def checks
  [
    configuration_check,
    *integration_checks,
    active_record_check,
    table_check,
    column_check,
    period_totals_check,
    prices_check,
    calls_check
  ].compact
end