class LittleGhost::Providers::OpenRouter
OpenRouter gives one LittleGhost provider access to models routed through OpenRouter. Agents keep their model roles while the registry selects an OpenRouter model for each role.
provider = LittleGhost::Providers::OpenRouter.new( api_key: ENV.fetch("OPENROUTER_API_KEY"), model: ENV.fetch("OPENROUTER_MODEL"), app_name: "Support Console" )
site_url and app_name populate attribution headers. Capability metadata controls structured output, tools, tool choice, and parameter filtering. Requests that need a capability ask OpenRouter to route only to providers that advertise it.
Constants
- DEFAULT_BASE_URL
-
The
OpenRouterAPI endpoint used whenbase_urlis omitted.
Public Class Methods
# File lib/little_ghost/providers/open_router.rb, line 37 def initialize(site_url: nil, app_name: nil, base_url: DEFAULT_BASE_URL, **arguments) @site_url = site_url @app_name = app_name super(base_url:, api: :chat_completions, **arguments) end
Configures an OpenRouter client. All OpenAICompatible options, including api_key, model, retry limits, timeouts, and custom transport, apply.
Public Instance Methods
Source
# File lib/little_ghost/providers/open_router.rb, line 45 def capabilities(metadata: {}) parameters = metadata[:supported_parameters] || metadata["supported_parameters"] return ModelCapabilities.unknown unless parameters.is_a?(Array) values = parameters.map(&:to_s) ModelCapabilities.new( native_structured_output: values.any? { |value| %w[structured_outputs response_format].include?(value) }, tools: values.include?("tools"), tool_choice: values.include?("tool_choice"), supported_parameters: values ) end
Reads model capabilities from OpenRouter supported_parameters metadata. Missing metadata produces ModelCapabilities.unknown.
# File lib/little_ghost/providers/open_router.rb, line 60 def prepare_request(request, capabilities:) return request if request.required_capabilities.empty? return request unless capabilities.supported_parameters settings = filter_supported_settings(request.settings, capabilities) ModelRequest.new( messages: request.messages, tools: request.tools, settings:, output_schema: request.output_schema, tool_choice: request.tool_choice, required_capabilities: request.required_capabilities, cancellation_token: request.cancellation_token, deadline: request.deadline ) end
Filters unsupported model settings when the request requires advertised capabilities.