Module: ActiveAgent::Providers::OpenAI::Embedding::Transforms

Defined in:
lib/active_agent/providers/open_ai/embedding/transforms.rb

Overview

Provides transformation methods for normalizing embedding parameters to OpenAI gem’s native format

Class Method Summary collapse

Class Method Details

.cleanup_serialized_request(serialized, defaults = {}, gem_object = nil) ⇒ Hash

Removes nil values from serialized request

Parameters:

  • serialized (Hash)

    serialized request

  • defaults (Hash) (defaults to: {})

    default values to remove

  • gem_object (Object) (defaults to: nil)

    original gem object (unused but for consistency)

Returns:

  • (Hash)

    cleaned request hash



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/active_agent/providers/open_ai/embedding/transforms.rb', line 73

def self.cleanup_serialized_request(serialized, defaults = {}, gem_object = nil)
  # Remove nil values
  cleaned = serialized.compact

  # Remove default values
  defaults.each do |key, value|
    cleaned.delete(key) if cleaned[key] == value
  end

  cleaned
end

.gem_to_hash(obj) ⇒ Hash, Object

Converts OpenAI gem objects to hash representation

Parameters:

  • obj (Object)

    gem object or primitive value

Returns:

  • (Hash, Object)

    hash if object supports JSON serialization, otherwise original object



16
17
18
19
20
21
22
# File 'lib/active_agent/providers/open_ai/embedding/transforms.rb', line 16

def self.gem_to_hash(obj)
  if obj.respond_to?(:to_json)
    JSON.parse(obj.to_json)
  else
    obj
  end
end

.normalize_input(input) ⇒ String, Array

Normalizes input parameter to supported format

Handles multiple input formats:

  • ‘“text”` - single string for one embedding

  • ‘[“text1”, “text2”]` - array of strings for multiple embeddings

  • ‘[1, 2, 3]` - token array for single embedding

  • ‘[[1, 2], [3, 4]]` - array of token arrays for multiple embeddings

Parameters:

  • input (String, Array<String>, Array<Integer>, Array<Array<Integer>>)

Returns:

  • (String, Array)

    normalized input in gem-compatible format



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/active_agent/providers/open_ai/embedding/transforms.rb', line 48

def self.normalize_input(input)
  case input
  when String
    input
  when Array
    if input.empty?
      input
    elsif input.first.is_a?(Integer)
      input
    elsif input.first.is_a?(Array)
      input
    else
      input
    end
  else
    input
  end
end

.normalize_params(params) ⇒ Hash

Normalizes all embedding request parameters

Parameters:

  • params (Hash)

    raw request parameters

Returns:

  • (Hash)

    normalized parameters



28
29
30
31
32
33
34
35
36
# File 'lib/active_agent/providers/open_ai/embedding/transforms.rb', line 28

def self.normalize_params(params)
  normalized = params.dup

  if normalized[:input]
    normalized[:input] = normalize_input(normalized[:input])
  end

  normalized
end