ruby_llm 1.3.1 → 1.3.2beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -92,7 +92,8 @@ module RubyLLM
92
92
  f.response :json, parser_options: { symbolize_names: true }
93
93
  end
94
94
  response = connection.get 'https://api.parsera.org/v1/llm-specs'
95
- response.body.map { |data| Model::Info.new(data) }
95
+ models = response.body.map { |data| Model::Info.new(data) }
96
+ models.reject { |model| model.provider.nil? || model.id.nil? }
96
97
  end
97
98
 
98
99
  def merge_models(provider_models, parsera_models)
@@ -34,7 +34,7 @@ module RubyLLM
34
34
  def embed(text, model:, connection:, dimensions:)
35
35
  payload = render_embedding_payload(text, model:, dimensions:)
36
36
  response = connection.post(embedding_url(model:), payload)
37
- parse_embedding_response(response, model:)
37
+ parse_embedding_response(response, model:, text:)
38
38
  end
39
39
 
40
40
  def paint(prompt, model:, size:, connection:)
@@ -24,8 +24,8 @@ module RubyLLM
24
24
  end
25
25
 
26
26
  def read_prelude(chunk, offset)
27
- total_length = chunk[offset...offset + 4].unpack1('N')
28
- headers_length = chunk[offset + 4...offset + 8].unpack1('N')
27
+ total_length = chunk[offset...(offset + 4)].unpack1('N')
28
+ headers_length = chunk[(offset + 4)...(offset + 8)].unpack1('N')
29
29
  [total_length, headers_length]
30
30
  end
31
31
 
@@ -72,8 +72,8 @@ module RubyLLM
72
72
 
73
73
  def extract_potential_lengths(chunk, pos)
74
74
  [
75
- chunk[pos...pos + 4].unpack1('N'),
76
- chunk[pos + 4...pos + 8].unpack1('N')
75
+ chunk[pos...(pos + 4)].unpack1('N'),
76
+ chunk[(pos + 4)...(pos + 8)].unpack1('N')
77
77
  ]
78
78
  end
79
79
 
@@ -15,9 +15,11 @@ module RubyLLM
15
15
  { requests: [text].flatten.map { |t| single_embedding_payload(t, model:, dimensions:) } }
16
16
  end
17
17
 
18
- def parse_embedding_response(response, model:)
18
+ def parse_embedding_response(response, model:, text:)
19
19
  vectors = response.body['embeddings']&.map { |e| e['values'] }
20
- vectors in [vectors]
20
+ # If we only got one embedding AND the input was a single string (not an array),
21
+ # return it as a single vector
22
+ vectors = vectors.first if vectors&.length == 1 && !text.is_a?(Array)
21
23
 
22
24
  Embedding.new(vectors:, model:, input_tokens: 0)
23
25
  end
@@ -19,13 +19,14 @@ module RubyLLM
19
19
  }.compact
20
20
  end
21
21
 
22
- def parse_embedding_response(response, model:)
22
+ def parse_embedding_response(response, model:, text:)
23
23
  data = response.body
24
24
  input_tokens = data.dig('usage', 'prompt_tokens') || 0
25
25
  vectors = data['data'].map { |d| d['embedding'] }
26
26
 
27
- # If we only got one embedding, return it as a single vector
28
- vectors in [vectors]
27
+ # If we only got one embedding AND the input was a single string (not an array),
28
+ # return it as a single vector
29
+ vectors = vectors.first if vectors.length == 1 && !text.is_a?(Array)
29
30
 
30
31
  Embedding.new(vectors:, model:, input_tokens:)
31
32
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyLLM
4
- VERSION = '1.3.1'
4
+ VERSION = '1.3.2beta1'
5
5
  end
@@ -23,7 +23,7 @@ def generate_models_markdown
23
23
  layout: default
24
24
  title: Available Models
25
25
  parent: Guides
26
- nav_order: 10
26
+ nav_order: 11
27
27
  permalink: /guides/available-models
28
28
  ---
29
29
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carmine Paolino
@@ -235,14 +235,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
235
  requirements:
236
236
  - - ">="
237
237
  - !ruby/object:Gem::Version
238
- version: 3.1.0
238
+ version: 3.1.3
239
239
  required_rubygems_version: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - ">="
242
242
  - !ruby/object:Gem::Version
243
243
  version: '0'
244
244
  requirements: []
245
- rubygems_version: 3.6.7
245
+ rubygems_version: 3.6.9
246
246
  specification_version: 4
247
247
  summary: A single delightful Ruby way to work with AI.
248
248
  test_files: []