Class: Ask::Agent::Middleware::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ask/agent/middleware/base.rb

Overview

Base class for middleware that wraps LLM provider calls.

Subclasses override #around_request to inject behavior before, after, or around the provider call. The default implementation yields to the next middleware in the chain (or the actual provider if this is the innermost wrapper).

Examples:

A logging middleware

class LogCalls < Base
  def around_request(provider, request)
    logger.info "LLM call: #{request[:model]}"
    start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
    result = yield
    elapsed = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
    logger.info "LLM call finished in #{elapsed.round(3)}s"
    result
  end
end

Direct Known Subclasses

DefaultSettings, LogCalls, RetryOnFailure

Instance Method Summary collapse

Instance Method Details

#around_request(provider, request) { ... } ⇒ Object

Called before/after each provider.chat(...) call.

Parameters:

  • provider (Object)

    the LLM provider instance

  • request (Hash)

    the request parameters (:messages, :model, :tools, etc.)

Yields:

  • call the next middleware (or the actual provider)

Returns:

  • (Object)

    the provider's response



31
32
33
# File 'lib/ask/agent/middleware/base.rb', line 31

def around_request(provider, request)
  yield
end