Module: Legion::Extensions::Llm::Ledger::Runners::ProviderStats
- Extended by:
- ProviderStats
- Included in:
- ProviderStats
- Defined in:
- lib/legion/extensions/llm/ledger/runners/provider_stats.rb
Instance Method Summary collapse
- #circuit_summary(period: 'hour') ⇒ Object
- #health_report ⇒ Object
- #provider_detail(provider:, period: 'day') ⇒ Object
Instance Method Details
#circuit_summary(period: 'hour') ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 27 def circuit_summary(period: 'hour') since = Helpers::Queries.period_start(period) ::Legion::Data::DB[:metering_records] .where { inserted_at >= since } .select( :provider, :tier, Sequel.function(:COUNT, Sequel.lit('*')).as(:request_count), Sequel.function(:AVG, :latency_ms).as(:avg_latency_ms), Sequel.function(:SUM, :cost_usd).as(:cost_usd) ) .group(:provider, :tier) .order(Sequel.desc(:request_count)) .all end |
#health_report ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 11 def health_report ds = ::Legion::Data::DB[:metering_records] .where { inserted_at >= Time.now.utc - 86_400 } .select( :provider, Sequel.function(:COUNT, Sequel.lit('*')).as(:request_count), Sequel.function(:SUM, :total_tokens).as(:total_tokens), Sequel.function(:AVG, :latency_ms).as(:avg_latency_ms), Sequel.function(:MAX, :latency_ms).as(:max_latency_ms) ) .group(:provider) .all ds.map { |row| row.merge(status: Helpers::Queries.latency_status(row[:avg_latency_ms])) } end |
#provider_detail(provider:, period: 'day') ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 42 def provider_detail(provider:, period: 'day') since = Helpers::Queries.period_start(period) ::Legion::Data::DB[:metering_records] .where(provider: provider) .where { inserted_at >= since } .select( :model_id, :request_type, Sequel.function(:COUNT, Sequel.lit('*')).as(:count), Sequel.function(:SUM, :total_tokens).as(:total_tokens), Sequel.function(:AVG, :latency_ms).as(:avg_latency_ms), Sequel.function(:SUM, :cost_usd).as(:cost_usd) ) .group(:model_id, :request_type) .order(Sequel.desc(:count)) .all end |