ruby_llm 1.13.0 → 1.13.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efa046d43a24a45287ca68b9ec54c12374dd7a716a41bda2226974925067f547
4
- data.tar.gz: e7d5187b9cb8d543e8b3b6b2590569cdcedec745f7ff35b6944d68768f803a6c
3
+ metadata.gz: c48130380955a0e6c768f4fe305e5ed165640586b4fe68521292684cfc9fba71
4
+ data.tar.gz: 510d06d85d1932eb8a4fed8d86f5bc91e05bdd5d62e8816a79d475ec31c01ac8
5
5
  SHA512:
6
- metadata.gz: 61a499df157a4276b21aaaebab88518ad8a57a497dc032307bce6a02522ae45eccad01e7989ae1dfafb7149502eb5878d1604cba99ab3f4e2c0a34ef33e43c56
7
- data.tar.gz: e2a03066ca8fdc265316bff01a9afed4c16a8e9bb32d7ed7f05bb594a00b3897c621039800b7fa8a75eb729b4511af133e240fdd054065d9aa82617899664595
6
+ metadata.gz: 4262b4a586ad32e4145a94e95bc96187c8476c5cbaf64f63ed475027efd45f3562517c19a86aeca6dd0a5e99b08b149f13971e379f7eef012ab4ee574e5ce027
7
+ data.tar.gz: 688aa065d9c5c6df785761f83258d7118c3d200e14a264e40216680ebdf49d5893fbed461487345df5bafa29b3a8db00d82710b229e1071ff4012d6aac10cd95
@@ -182,6 +182,15 @@
182
182
  "openrouter": "google/gemini-3-pro-preview",
183
183
  "vertexai": "gemini-3-pro-preview"
184
184
  },
185
+ "gemini-3.1-flash-image-preview": {
186
+ "gemini": "gemini-3.1-flash-image-preview",
187
+ "openrouter": "google/gemini-3.1-flash-image-preview",
188
+ "vertexai": "gemini-3.1-flash-image-preview"
189
+ },
190
+ "gemini-3.1-flash-lite-preview": {
191
+ "gemini": "gemini-3.1-flash-lite-preview",
192
+ "openrouter": "google/gemini-3.1-flash-lite-preview"
193
+ },
185
194
  "gemini-3.1-pro-preview": {
186
195
  "gemini": "gemini-3.1-pro-preview",
187
196
  "openrouter": "google/gemini-3.1-pro-preview",
@@ -189,6 +198,7 @@
189
198
  },
190
199
  "gemini-3.1-pro-preview-customtools": {
191
200
  "gemini": "gemini-3.1-pro-preview-customtools",
201
+ "openrouter": "google/gemini-3.1-pro-preview-customtools",
192
202
  "vertexai": "gemini-3.1-pro-preview-customtools"
193
203
  },
194
204
  "gemini-embedding-001": {
@@ -134,7 +134,7 @@ module RubyLLM
134
134
  end
135
135
 
136
136
  def load_content_from_path
137
- @content = File.read(@source)
137
+ @content = File.binread(@source)
138
138
  end
139
139
 
140
140
  def load_content_from_io
data/lib/ruby_llm/chat.rb CHANGED
@@ -152,7 +152,7 @@ module RubyLLM
152
152
 
153
153
  @on[:new_message]&.call unless block_given?
154
154
 
155
- if @schema && response.content.is_a?(String)
155
+ if @schema && response.content.is_a?(String) && !response.tool_call?
156
156
  begin
157
157
  response.content = JSON.parse(response.content)
158
158
  rescue JSON::ParserError
@@ -209,13 +209,18 @@ module RubyLLM
209
209
 
210
210
  def build_schema_payload(schema, schema_def, strict)
211
211
  {
212
- name: schema[:name] || 'response',
212
+ name: sanitize_schema_name(schema[:name] || 'response'),
213
213
  schema: schema_def,
214
214
  strict: strict.nil? || strict,
215
215
  description: schema[:description]
216
216
  }.compact
217
217
  end
218
218
 
219
+ def sanitize_schema_name(name)
220
+ sanitized = name.to_s.gsub(/[^a-zA-Z0-9_-]/, '_')
221
+ sanitized.empty? ? 'response' : sanitized
222
+ end
223
+
219
224
  def wrap_streaming_block(&block)
220
225
  return nil unless block_given?
221
226