Module: Legion::LLM::Metering
- Extended by:
- Legion::Logging::Helper
- Defined in:
- lib/legion/llm/metering.rb,
lib/legion/llm/metering/event.rb,
lib/legion/llm/metering/exchange.rb
Defined Under Namespace
Classes: Event
Constant Summary collapse
Class Method Summary collapse
- .emit(event) ⇒ Object
- .flush_spool ⇒ Object
- .spool_available? ⇒ Boolean
- .spool_event(event) ⇒ Object
- .transport_connected? ⇒ Boolean
Class Method Details
.emit(event) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/legion/llm/metering.rb', line 17 def emit(event) if transport_connected? && defined?(Legion::LLM::Metering::Event) Legion::LLM::Metering::Event.new(**event).publish log.info("[llm][metering] published provider=#{event[:provider]} model=#{event[:model_id]}") :published elsif spool_available? spool_event(event) log.info("[llm][metering] spooled provider=#{event[:provider]} model=#{event[:model_id]}") :spooled else log.warn("[llm][metering] dropped provider=#{event[:provider]} model=#{event[:model_id]}") :dropped end rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.metering.emit') :dropped end |
.flush_spool ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/legion/llm/metering.rb', line 35 def flush_spool return 0 unless spool_available? && transport_connected? spool = Legion::Data::Spool.for(Legion::LLM) flushed = spool.flush(:metering) { |event| emit(event) } log.info("[llm][metering] spool_flushed count=#{flushed}") flushed rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.metering.flush_spool') 0 end |
.spool_available? ⇒ Boolean
52 53 54 |
# File 'lib/legion/llm/metering.rb', line 52 def spool_available? !!defined?(Legion::Data::Spool) end |