Class: ActiveAgent::Providers::Ollama::Chat::Request
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- ActiveAgent::Providers::Ollama::Chat::Request
- Defined in:
- lib/active_agent/providers/ollama/chat/request.rb
Overview
Wraps OpenAI gem’s CompletionCreateParams with Ollama-specific extensions
Delegates to OpenAI::Models::Chat::CompletionCreateParams for OpenAI-compatible parameters while adding support for Ollama-specific features like format, options, keep_alive, and raw mode.
Ollama-specific parameters:
-
format: Return response in JSON or as a JSON schema (String “json” or Hash)
-
options: Additional model parameters (Hash of key-value pairs)
-
keep_alive: Controls how long model stays in memory (String duration or Integer seconds)
-
raw: If true, no formatting applied to prompt (Boolean)
Constant Summary collapse
- DEFAULTS =
Default parameter values
{ frequency_penalty: 0, logprobs: false, n: 1, parallel_tool_calls: true, presence_penalty: 0, temperature: 1, top_p: 1, raw: false, keep_alive: "5m" }.freeze
Instance Attribute Summary collapse
-
#ollama_params ⇒ Hash
readonly
Ollama-specific parameters.
- #stream ⇒ Boolean? readonly
Instance Method Summary collapse
-
#format ⇒ String, ...
Accessor for Ollama format parameter.
-
#format=(value) ⇒ void
Sets format parameter.
-
#initialize(**params) ⇒ Request
constructor
Creates a new Ollama request.
-
#instructions=(*values) ⇒ void
Sets instructions as developer messages.
-
#keep_alive ⇒ String, ...
Accessor for keep_alive parameter.
-
#keep_alive=(value) ⇒ void
Sets keep_alive parameter.
-
#message ⇒ Array<Hash>?
Alias for messages (common format compatibility).
- #message=(value) ⇒ void
- #messages ⇒ Array<Hash>?
-
#messages=(value) ⇒ void
Sets messages with normalization.
-
#options ⇒ Hash?
Accessor for Ollama options parameter.
-
#options=(value) ⇒ void
Sets options parameter.
-
#raw ⇒ Boolean
Accessor for raw parameter.
-
#raw=(value) ⇒ void
Sets raw parameter.
-
#serialize ⇒ Hash
Serializes request for API submission.
Constructor Details
#initialize(**params) ⇒ Request
Creates a new Ollama request
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 67 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 Ollama-specific openai_params, @ollama_params = Transforms.normalize_params(params) # Step 4: Validate Ollama-specific parameters validate_format(@ollama_params[:format]) if @ollama_params[:format] (@ollama_params[:options]) if @ollama_params[:options] # Step 5: Create gem model with OpenAI-compatible params gem_model = ::OpenAI::Models::Chat::CompletionCreateParams.new(**openai_params) # Step 6: Delegate to the gem model super(gem_model) rescue ArgumentError => e raise ArgumentError, "Invalid Ollama Chat request parameters: #{e.}" end |
Instance Attribute Details
#ollama_params ⇒ Hash (readonly)
Returns Ollama-specific parameters.
55 56 57 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 55 def ollama_params @ollama_params end |
#stream ⇒ Boolean? (readonly)
52 53 54 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 52 def stream @stream end |
Instance Method Details
#format ⇒ String, ...
Accessor for Ollama format parameter
151 152 153 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 151 def format @ollama_params[:format] end |
#format=(value) ⇒ void
This method returns an undefined value.
Sets format parameter
159 160 161 162 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 159 def format=(value) validate_format(value) @ollama_params[:format] = value end |
#instructions=(*values) ⇒ void
This method returns an undefined value.
Sets instructions as developer messages
Prepends developer messages to the messages array.
142 143 144 145 146 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 142 def instructions=(*values) = Transforms.normalize_instructions(values.flatten) = || [] self. = + end |
#keep_alive ⇒ String, ...
Accessor for keep_alive parameter
183 184 185 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 183 def keep_alive @ollama_params[:keep_alive] || DEFAULTS[:keep_alive] end |
#keep_alive=(value) ⇒ void
This method returns an undefined value.
Sets keep_alive parameter
191 192 193 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 191 def keep_alive=(value) @ollama_params[:keep_alive] = value end |
#message ⇒ Array<Hash>?
Alias for messages (common format compatibility)
126 127 128 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 126 def end |
#message=(value) ⇒ void
This method returns an undefined value.
132 133 134 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 132 def (value) self. = value end |
#messages ⇒ Array<Hash>?
104 105 106 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 104 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.
114 115 116 117 118 119 120 121 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 114 def (value) normalized_value = Transforms.(value) = || [] # Merge behavior for Ollama compatibility merged = | Array(normalized_value) __getobj__.instance_variable_get(:@data)[:messages] = merged end |
#options ⇒ Hash?
Accessor for Ollama options parameter
167 168 169 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 167 def @ollama_params[:options] end |
#options=(value) ⇒ void
This method returns an undefined value.
Sets options parameter
175 176 177 178 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 175 def (value) (value) @ollama_params[:options] = value end |
#raw ⇒ Boolean
Accessor for raw parameter
198 199 200 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 198 def raw @ollama_params[:raw] || DEFAULTS[:raw] end |
#raw=(value) ⇒ void
This method returns an undefined value.
Sets raw parameter
206 207 208 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 206 def raw=(value) @ollama_params[:raw] = value end |
#serialize ⇒ Hash
Serializes request for API submission
Merges OpenAI-compatible parameters with Ollama-specific extensions.
95 96 97 98 99 100 101 |
# File 'lib/active_agent/providers/ollama/chat/request.rb', line 95 def serialize # Get OpenAI params from gem model openai_hash = Transforms.gem_to_hash(__getobj__) # Merge with Ollama-specific params Transforms.cleanup_serialized_request(openai_hash, @ollama_params, DEFAULTS, __getobj__) end |