Class: SwarmSDK::Agent::LLMInstrumentationMiddleware
- Inherits:
-
Faraday::Middleware
- Object
- Faraday::Middleware
- SwarmSDK::Agent::LLMInstrumentationMiddleware
- Defined in:
- lib/swarm_sdk/agent/llm_instrumentation_middleware.rb
Overview
Faraday middleware for capturing LLM API requests and responses
This middleware intercepts HTTP calls to LLM providers and emits structured events via LogStream for logging and monitoring.
Events emitted:
- llm_api_request: Before sending request to LLM API
- llm_api_response: After receiving response from LLM API
The middleware is injected at runtime into the provider's Faraday connection stack (see Agent::Chat#inject_llm_instrumentation).
Instance Method Summary collapse
-
#call(env) ⇒ Faraday::Response
Intercept HTTP call.
-
#initialize(app, on_request:, on_response:, provider_name:) ⇒ LLMInstrumentationMiddleware
constructor
Initialize middleware.
Constructor Details
#initialize(app, on_request:, on_response:, provider_name:) ⇒ LLMInstrumentationMiddleware
Initialize middleware
23 24 25 26 27 28 |
# File 'lib/swarm_sdk/agent/llm_instrumentation_middleware.rb', line 23 def initialize(app, on_request:, on_response:, provider_name:) super(app) @on_request = on_request @on_response = on_response @provider_name = provider_name end |
Instance Method Details
#call(env) ⇒ Faraday::Response
Intercept HTTP call
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/swarm_sdk/agent/llm_instrumentation_middleware.rb', line 34 def call(env) start_time = Time.now # Emit request event emit_request_event(env, start_time) # Execute request @app.call(env).on_complete do |response_env| end_time = Time.now duration = end_time - start_time # Emit response event emit_response_event(response_env, start_time, end_time, duration) end end |