Class: RubyLLM::Transport::UsageMiddleware

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/ruby_llm/transport/usage_middleware.rb

Overview

Sits inside Faraday retry middleware so every transport attempt produces one usage observation.

Constant Summary collapse

CONTEXT_KEY =

:nodoc: all

:ruby_llm_usage_tracker

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ruby_llm/transport/usage_middleware.rb', line 12

def call(env)
  tracker = env.request.context&.[](CONTEXT_KEY)
  return @app.call(env) unless tracker

  entry = tracker.start
  begin
    @app.call(env)
  rescue StandardError => e
    tracker.fail_attempt(entry, e)
    raise
  end
end