Class: LlmCostTracker::Middleware::Faraday
- Inherits:
-
Faraday::Middleware
- Object
- Faraday::Middleware
- LlmCostTracker::Middleware::Faraday
- Defined in:
- lib/llm_cost_tracker/middleware/faraday.rb
Instance Method Summary collapse
- #call(request_env) ⇒ Object
-
#initialize(app, **options) ⇒ Faraday
constructor
A new instance of Faraday.
Constructor Details
#initialize(app, **options) ⇒ Faraday
Returns a new instance of Faraday.
15 16 17 18 |
# File 'lib/llm_cost_tracker/middleware/faraday.rb', line 15 def initialize(app, **) super(app) @tags = .fetch(:tags, {}) end |
Instance Method Details
#call(request_env) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/llm_cost_tracker/middleware/faraday.rb', line 20 def call(request_env) return @app.call(request_env) unless enabled? request_url = request_env.url.to_s request_body = read_body(request_env.body) parser = Parsers.find_for(request_url) request_parsed = parser ? safe_json_parse(request_body) : nil streaming = parser&.streaming_request?(request_url, request_parsed) if streaming request_body = inject_stream_usage_flag(request_env, parser, request_url, request_parsed) || request_body end stream_buffer = install_stream_tap(request_env) if streaming if parser Tracker.enforce_budget!( provider: parser.provider_for(request_url), model: parser.model_for(request_url, request_parsed), request: request_parsed ) end , = tag_snapshot(request_env) if parser started_at = LlmCostTracker::Timing.now_monotonic invoke_app_with_capture( request_env: request_env, parser: parser, request_url: request_url, request_body: request_body, streaming: streaming, stream_buffer: stream_buffer, context_tags: , metadata: , started_at: started_at ) end |