Class: Spurline::Memory::Embedder::OpenAI
- Defined in:
- lib/spurline/memory/embedder/open_ai.rb
Constant Summary collapse
- DEFAULT_MODEL =
"text-embedding-3-small"- DIMENSIONS =
1536
Instance Method Summary collapse
- #dimensions ⇒ Object
- #embed(text) ⇒ Object
-
#initialize(api_key: nil, model: nil) ⇒ OpenAI
constructor
A new instance of OpenAI.
Constructor Details
#initialize(api_key: nil, model: nil) ⇒ OpenAI
Returns a new instance of OpenAI.
10 11 12 13 |
# File 'lib/spurline/memory/embedder/open_ai.rb', line 10 def initialize(api_key: nil, model: nil) @api_key = resolve_api_key(api_key) @model = model || DEFAULT_MODEL end |
Instance Method Details
#dimensions ⇒ Object
32 33 34 |
# File 'lib/spurline/memory/embedder/open_ai.rb', line 32 def dimensions DIMENSIONS end |
#embed(text) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/spurline/memory/embedder/open_ai.rb', line 15 def (text) # ASYNC-READY: Embedding requests are blocking in v1 and run at this seam. response = build_client.(parameters: { model: @model, input: text.to_s }) = response.dig("data", 0, "embedding") if .is_a?(Array) && .all? { |value| value.is_a?(Numeric) } else raise Spurline::EmbedderError, "OpenAI embedding response did not include a valid embedding vector" end rescue Spurline::EmbedderError raise rescue StandardError => e raise Spurline::EmbedderError, "OpenAI embedding failed: #{e.message}" end |