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.
- checksums.yaml +4 -4
- data/lib/ruby_llm/aliases.json +14 -18
- data/lib/ruby_llm/attachment.rb +1 -1
- data/lib/ruby_llm/chat.rb +22 -12
- data/lib/ruby_llm/models.json +3518 -3578
- data/lib/ruby_llm/models.rb +2 -1
- data/lib/ruby_llm/provider.rb +1 -1
- data/lib/ruby_llm/providers/bedrock/streaming/prelude_handling.rb +4 -4
- data/lib/ruby_llm/providers/gemini/embeddings.rb +4 -2
- data/lib/ruby_llm/providers/openai/embeddings.rb +4 -3
- data/lib/ruby_llm/version.rb +1 -1
- data/lib/tasks/models_docs.rake +1 -1
- metadata +3 -3
data/lib/ruby_llm/models.rb
CHANGED
@@ -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)
|
data/lib/ruby_llm/provider.rb
CHANGED
@@ -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
|
-
|
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
|
28
|
-
|
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
|
data/lib/ruby_llm/version.rb
CHANGED
data/lib/tasks/models_docs.rake
CHANGED
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.
|
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.
|
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.
|
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: []
|