Class: ActiveAgent::Providers::Ollama::Embedding::Request

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/active_agent/providers/ollama/embedding/request.rb

Overview

Wraps OpenAI gem’s EmbeddingCreateParams with Ollama-specific extensions

Delegates to OpenAI::Models::EmbeddingCreateParams for OpenAI-compatible parameters while adding support for Ollama-specific features like options, keep_alive, and truncate.

Ollama-specific parameters:

  • options: Additional model parameters (Hash with temperature, seed, etc.)

  • keep_alive: Controls how long model stays in memory (String duration)

  • truncate: Truncates input to fit context length (Boolean)

Examples:

Basic usage

request = Request.new(
  model: "llama2",
  input: "Hello world"
)

With Ollama-specific features

request = Request.new(
  model: "llama2",
  input: ["Hello", "World"],
  options: {temperature: 0.7, seed: 42},
  keep_alive: "10m",
  truncate: false
)

With delegated option attributes

request = Request.new(
  model: "llama2",
  input: "Hello",
  temperature: 0.7,  # Automatically goes to options
  seed: 42           # Automatically goes to options
)

Constant Summary collapse

DEFAULTS =

Default parameter values

{
  truncate: true,
  keep_alive: "5m"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**params) ⇒ Request

Creates a new Ollama embedding request

Parameters:

  • params (Hash)

    request parameters

Options Hash (**params):

  • :model (String)

    model identifier (required)

  • :input (String, Array<String>)

    text to embed (required)

  • :options (Hash)

    model-specific options

  • :keep_alive (String)

    memory duration

  • :truncate (Boolean)

    truncate to context length

  • :temperature (Float)

    delegated to options

  • :seed (Integer)

    delegated to options

Raises:

  • (ArgumentError)

    when parameters are invalid



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 65

def initialize(**params)
  # Step 1: Apply defaults
  params = apply_defaults(params)

  # Step 2: Validate presence of required params before normalization
  raise ArgumentError, "model is required" unless params[:model]
  raise ArgumentError, "input is required" unless params[:input]

  # Step 3: Normalize parameters and split into OpenAI vs Ollama-specific
  openai_params, @ollama_params = Transforms.normalize_params(params)

  # Step 4: Create gem model with OpenAI-compatible params
  gem_model = ::OpenAI::Models::EmbeddingCreateParams.new(**openai_params)

  # Step 5: Delegate to the gem model
  super(gem_model)
rescue ArgumentError => e
  raise ArgumentError, "Invalid Ollama Embedding request parameters: #{e.message}"
end

Instance Attribute Details

#ollama_paramsHash (readonly)

Returns Ollama-specific parameters.

Returns:

  • (Hash)

    Ollama-specific parameters



52
53
54
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 52

def ollama_params
  @ollama_params
end

Instance Method Details

#inputArray<String>?

Accessor for input parameter

Returns:

  • (Array<String>, nil)


101
102
103
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 101

def input
  __getobj__.instance_variable_get(:@data)[:input]
end

#input=(value) ⇒ void

This method returns an undefined value.

Sets input with normalization

Parameters:

  • value (String, Array<String>)


109
110
111
112
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 109

def input=(value)
  normalized_value = Transforms.normalize_input(value)
  __getobj__.instance_variable_get(:@data)[:input] = normalized_value
end

#keep_aliveString?

Accessor for keep_alive parameter

Returns:

  • (String, nil)


132
133
134
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 132

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

Parameters:

  • value (String)


140
141
142
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 140

def keep_alive=(value)
  @ollama_params[:keep_alive] = value
end

#optionsHash?

Accessor for Ollama options parameter

Returns:

  • (Hash, nil)


117
118
119
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 117

def options
  @ollama_params[:options]
end

#options=(value) ⇒ void

This method returns an undefined value.

Sets options parameter

Parameters:

  • value (Hash)


125
126
127
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 125

def options=(value)
  @ollama_params[:options] = value
end

#serializeHash

Serializes request for API submission

Merges OpenAI-compatible parameters with Ollama-specific extensions.

Returns:

  • (Hash)

    cleaned request hash



90
91
92
93
94
95
96
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 90

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)
end

#truncateBoolean

Accessor for truncate parameter

Returns:

  • (Boolean)


147
148
149
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 147

def truncate
  @ollama_params.fetch(:truncate, DEFAULTS[:truncate])
end

#truncate=(value) ⇒ void

This method returns an undefined value.

Sets truncate parameter

Parameters:

  • value (Boolean)


155
156
157
# File 'lib/active_agent/providers/ollama/embedding/request.rb', line 155

def truncate=(value)
  @ollama_params[:truncate] = value
end