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
- #official_metrics ⇒ Object
- #provider_detail(provider:, period: 'day') ⇒ Object
Instance Method Details
#circuit_summary(period: 'hour') ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 31 def circuit_summary(period: 'hour') since = Helpers::Queries.period_start(period) official_metrics .where { Sequel[:llm_message_inference_metrics][:inserted_at] >= since } .select_group( Sequel[:llm_message_inference_metrics][:provider], Sequel[:llm_message_inference_responses][:provider_instance], Sequel[:llm_message_inference_metrics][:model_key].as(:model_id), Sequel[:llm_message_inference_requests][:operation], Sequel[:llm_message_inference_metrics][:tier] ) .select_append( Sequel.function(:COUNT, Sequel.lit('*')).as(:request_count), Sequel.function(:AVG, Sequel[:llm_message_inference_metrics][:latency_ms]).as(:avg_latency_ms), Sequel.function(:SUM, Sequel[:llm_message_inference_metrics][:cost_usd]).as(:cost_usd) ) .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 26 27 28 29 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 11 def health_report ds = official_metrics .where { Sequel[:llm_message_inference_metrics][:inserted_at] >= Time.now.utc - 86_400 } .select_group( Sequel[:llm_message_inference_metrics][:provider], Sequel[:llm_message_inference_responses][:provider_instance], Sequel[:llm_message_inference_metrics][:model_key].as(:model_id), Sequel[:llm_message_inference_requests][:operation] ) .select_append( Sequel.function(:COUNT, Sequel.lit('*')).as(:request_count), Sequel.function(:SUM, Sequel[:llm_message_inference_metrics][:total_tokens]).as(:total_tokens), Sequel.function(:AVG, Sequel[:llm_message_inference_metrics][:latency_ms]).as(:avg_latency_ms), Sequel.function(:MAX, Sequel[:llm_message_inference_metrics][:latency_ms]).as(:max_latency_ms) ) .all ds.map { |row| row.merge(status: Helpers::Queries.latency_status(row[:avg_latency_ms])) } end |
#official_metrics ⇒ Object
72 73 74 75 76 77 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 72 def official_metrics metric = Sequel[:llm_message_inference_metrics] ::Legion::Data.connection[:llm_message_inference_metrics] .join(:llm_message_inference_requests, id: metric[:message_inference_request_id]) .join(:llm_message_inference_responses, id: metric[:message_inference_response_id]) end |
#provider_detail(provider:, period: 'day') ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/legion/extensions/llm/ledger/runners/provider_stats.rb', line 51 def provider_detail(provider:, period: 'day') since = Helpers::Queries.period_start(period) official_metrics .where(Sequel[:llm_message_inference_metrics][:provider] => provider) .where { Sequel[:llm_message_inference_metrics][:inserted_at] >= since } .select_group( Sequel[:llm_message_inference_metrics][:provider], Sequel[:llm_message_inference_responses][:provider_instance], Sequel[:llm_message_inference_metrics][:model_key].as(:model_id), Sequel[:llm_message_inference_requests][:operation] ) .select_append( Sequel.function(:COUNT, Sequel.lit('*')).as(:count), Sequel.function(:SUM, Sequel[:llm_message_inference_metrics][:total_tokens]).as(:total_tokens), Sequel.function(:AVG, Sequel[:llm_message_inference_metrics][:latency_ms]).as(:avg_latency_ms), Sequel.function(:SUM, Sequel[:llm_message_inference_metrics][:cost_usd]).as(:cost_usd) ) .order(Sequel.desc(:count)) .all end |