Class: ActiveAgent::Providers::OpenRouter::Request
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- ActiveAgent::Providers::OpenRouter::Request
- Defined in:
- lib/active_agent/providers/open_router/request.rb
Overview
Wraps OpenAI gem’s CompletionCreateParams with OpenRouter-specific extensions
Delegates to OpenAI::Models::Chat::CompletionCreateParams for OpenAI-compatible parameters while adding support for OpenRouter-specific features like plugins, provider preferences, model fallbacks, and extended sampling parameters.
OpenRouter-specific parameters:
-
plugins: Array of plugin configurations (e.g., file-parser for PDFs)
-
provider: ProviderPreferences object with require_parameters, data_collection, etc.
-
transforms: Array of transformation strings
-
models: Array of model strings for fallback routing
-
route: Routing strategy (default: “fallback”)
-
top_k, min_p, top_a, repetition_penalty: Extended sampling parameters
Constant Summary collapse
- DEFAULTS =
Default parameter values
{ frequency_penalty: 0, logprobs: false, n: 1, presence_penalty: 0, temperature: 1, top_p: 1, route: "fallback", models: [], transforms: [] }.freeze
Instance Attribute Summary collapse
-
#openrouter_params ⇒ Hash
readonly
OpenRouter-specific parameters.
- #stream ⇒ Boolean? readonly
Instance Method Summary collapse
-
#initialize(**params) ⇒ Request
constructor
Creates a new OpenRouter request.
-
#instructions=(*values) ⇒ void
Sets instructions as developer messages.
-
#message ⇒ Array<Hash>?
Alias for messages (common format compatibility).
- #message=(value) ⇒ void
- #messages ⇒ Array<Hash>?
-
#messages=(value) ⇒ void
Sets messages with normalization.
-
#models ⇒ Array
(also: #fallback_models)
Accessor for fallback models.
-
#models=(value) ⇒ void
(also: #fallback_models=)
Sets fallback models.
-
#plugins ⇒ Array?
Accessor for OpenRouter plugins.
-
#plugins=(value) ⇒ void
Sets plugins.
-
#provider ⇒ Hash?
Accessor for OpenRouter-specific provider preferences.
-
#provider=(value) ⇒ void
Sets provider preferences.
-
#route ⇒ String
Accessor for routing strategy.
-
#route=(value) ⇒ void
Sets routing strategy.
-
#serialize ⇒ Hash
Serializes request for API submission.
-
#tool_choice ⇒ String, ...
Gets tool_choice bypassing gem validation.
-
#tool_choice=(value) ⇒ void
Sets tool_choice bypassing gem validation.
-
#transforms ⇒ Array
Accessor for OpenRouter transforms.
-
#transforms=(value) ⇒ void
Sets transforms.
Constructor Details
#initialize(**params) ⇒ Request
Creates a new OpenRouter request
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/active_agent/providers/open_router/request.rb', line 73 def initialize(**params) # Step 1: Extract stream flag @stream = params[:stream] # Step 2: Apply defaults params = apply_defaults(params) # Step 3: Normalize parameters and split into OpenAI vs OpenRouter-specific # This handles response_format special logic for structured output openai_params, @openrouter_params = Transforms.normalize_params(params) # Step 4: Create gem model with OpenAI-compatible params gem_model = ::OpenAI::Models::Chat::CompletionCreateParams.new(**openai_params) # Step 5: Delegate to the gem model super(gem_model) rescue ArgumentError => e raise ArgumentError, "Invalid OpenRouter request parameters: #{e.}" end |
Instance Attribute Details
#openrouter_params ⇒ Hash (readonly)
Returns OpenRouter-specific parameters.
56 57 58 |
# File 'lib/active_agent/providers/open_router/request.rb', line 56 def openrouter_params @openrouter_params end |
#stream ⇒ Boolean? (readonly)
53 54 55 |
# File 'lib/active_agent/providers/open_router/request.rb', line 53 def stream @stream end |
Instance Method Details
#instructions=(*values) ⇒ void
This method returns an undefined value.
Sets instructions as developer messages
Prepends developer messages to the messages array.
145 146 147 148 149 |
# File 'lib/active_agent/providers/open_router/request.rb', line 145 def instructions=(*values) = OpenAI::Chat::Transforms.normalize_instructions(values.flatten) = || [] self. = + end |
#message ⇒ Array<Hash>?
Alias for messages (common format compatibility)
129 130 131 |
# File 'lib/active_agent/providers/open_router/request.rb', line 129 def end |
#message=(value) ⇒ void
This method returns an undefined value.
135 136 137 |
# File 'lib/active_agent/providers/open_router/request.rb', line 135 def (value) self. = value end |
#messages ⇒ Array<Hash>?
107 108 109 |
# File 'lib/active_agent/providers/open_router/request.rb', line 107 def __getobj__.instance_variable_get(:@data)[:messages] end |
#messages=(value) ⇒ void
This method returns an undefined value.
Sets messages with normalization
Merges new messages with existing ones for compatibility.
117 118 119 120 121 122 123 124 |
# File 'lib/active_agent/providers/open_router/request.rb', line 117 def (value) normalized_value = Transforms.(value) = || [] # Merge behavior for OpenRouter compatibility merged = | Array(normalized_value) __getobj__.instance_variable_get(:@data)[:messages] = merged end |
#models ⇒ Array Also known as: fallback_models
Accessor for fallback models
219 220 221 |
# File 'lib/active_agent/providers/open_router/request.rb', line 219 def models @openrouter_params[:models] || [] end |
#models=(value) ⇒ void Also known as: fallback_models=
This method returns an undefined value.
Sets fallback models
227 228 229 |
# File 'lib/active_agent/providers/open_router/request.rb', line 227 def models=(value) @openrouter_params[:models] = value end |
#plugins ⇒ Array?
Accessor for OpenRouter plugins
189 190 191 |
# File 'lib/active_agent/providers/open_router/request.rb', line 189 def plugins @openrouter_params[:plugins] end |
#plugins=(value) ⇒ void
This method returns an undefined value.
Sets plugins
197 198 199 |
# File 'lib/active_agent/providers/open_router/request.rb', line 197 def plugins=(value) @openrouter_params[:plugins] = value end |
#provider ⇒ Hash?
Accessor for OpenRouter-specific provider preferences
174 175 176 |
# File 'lib/active_agent/providers/open_router/request.rb', line 174 def provider @openrouter_params[:provider] end |
#provider=(value) ⇒ void
This method returns an undefined value.
Sets provider preferences
182 183 184 |
# File 'lib/active_agent/providers/open_router/request.rb', line 182 def provider=(value) @openrouter_params[:provider] = value end |
#route ⇒ String
Accessor for routing strategy
238 239 240 |
# File 'lib/active_agent/providers/open_router/request.rb', line 238 def route @openrouter_params[:route] || DEFAULTS[:route] end |
#route=(value) ⇒ void
This method returns an undefined value.
Sets routing strategy
246 247 248 |
# File 'lib/active_agent/providers/open_router/request.rb', line 246 def route=(value) @openrouter_params[:route] = value end |
#serialize ⇒ Hash
Serializes request for API submission
Merges OpenAI-compatible parameters with OpenRouter-specific extensions.
98 99 100 101 102 103 104 |
# File 'lib/active_agent/providers/open_router/request.rb', line 98 def serialize # Get OpenAI params from gem model openai_hash = Transforms.gem_to_hash(__getobj__) # Merge with OpenRouter-specific params Transforms.cleanup_serialized_request(openai_hash, @openrouter_params, DEFAULTS, __getobj__) end |
#tool_choice ⇒ String, ...
Gets tool_choice bypassing gem validation
OpenRouter supports “any” which isn’t valid in OpenAI gem types.
156 157 158 |
# File 'lib/active_agent/providers/open_router/request.rb', line 156 def tool_choice __getobj__.instance_variable_get(:@data)[:tool_choice] end |
#tool_choice=(value) ⇒ void
This method returns an undefined value.
Sets tool_choice bypassing gem validation
OpenRouter supports “any” which isn’t valid in OpenAI gem types, so we bypass the gem’s type validation by setting @data directly.
167 168 169 |
# File 'lib/active_agent/providers/open_router/request.rb', line 167 def tool_choice=(value) __getobj__.instance_variable_get(:@data)[:tool_choice] = value end |
#transforms ⇒ Array
Accessor for OpenRouter transforms
204 205 206 |
# File 'lib/active_agent/providers/open_router/request.rb', line 204 def transforms @openrouter_params[:transforms] || [] end |
#transforms=(value) ⇒ void
This method returns an undefined value.
Sets transforms
212 213 214 |
# File 'lib/active_agent/providers/open_router/request.rb', line 212 def transforms=(value) @openrouter_params[:transforms] = value end |