ruby_llm-sequel 0.1.3 → 0.1.4

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: '0585a697d4f1e5f54bc6da6a34c9efb31a1f14089b0831f4fdd251393b13607b'
4
- data.tar.gz: e21a843d782f843a0c07cc5101399598d0e80b7b7c523cd8b14d045afe130814
3
+ metadata.gz: 330da9ca4ee162f14bf3279e78c82ec8af719912565a2f89f381cb635ac9f30a
4
+ data.tar.gz: 26e46591377ad3412f1088089cbcd2f7ab46a0dd8c9633c69bb44d1a77b4ec74
5
5
  SHA512:
6
- metadata.gz: 4bad9d895bf1efb29b79a893169d31053e13b4826d5a15a1961d88bd8580c0f3fef8c147b6b9562692e93fe19274bc4b1b06a88f9496d011601f55588085fde9
7
- data.tar.gz: c76b4e7a17de940f381145e7ccd7fe981ea5895b18a2ff4e8c0883f54c4396330d504a2c70bffaaaa48fd8be569b6baf5d1a1487e09f0981516e9b51a9425097
6
+ metadata.gz: 3196bcf05083317ae9d13888ebf4849a8f3cc6f332061d75750b848969f571c6c564d55be559723a22dcdb4d0a0be212c69e01014a8972d37649b30491f96140
7
+ data.tar.gz: b35bae79b504befd0c64c5681653c427bbff4efafeb7cf154476f1197ef6ffc23073109155346c01a41733aae1bb740aa673b677d02750c2803eabd3f2bc9831
@@ -105,6 +105,11 @@ module RubyLLM
105
105
  self
106
106
  end
107
107
 
108
+ def with_thinking(...)
109
+ to_llm.with_thinking(...)
110
+ self
111
+ end
112
+
108
113
  def on_new_message(&block)
109
114
  to_llm
110
115
 
@@ -244,6 +249,9 @@ module RubyLLM
244
249
  if @message.columns.include?(:cache_creation_tokens)
245
250
  attrs[:cache_creation_tokens] = message.cache_creation_tokens
246
251
  end
252
+ attrs[:thinking_text] = message.thinking&.text if @message.columns.include?(:thinking_text)
253
+ attrs[:thinking_signature] = message.thinking&.signature if @message.columns.include?(:thinking_signature)
254
+ attrs[:thinking_tokens] = message.thinking_tokens if @message.columns.include?(:thinking_tokens)
247
255
 
248
256
  attrs[self.class.model_association_name] = send(self.class.model_association_name)
249
257
 
@@ -262,9 +270,13 @@ module RubyLLM
262
270
  end
263
271
 
264
272
  def persist_tool_calls(tool_calls)
273
+ tool_call_klass = @message.class.tool_call_class.constantize
274
+ supports_thought_signature = tool_call_klass.columns.include?(:thought_signature)
275
+
265
276
  tool_calls.each_value do |tool_call|
266
277
  attributes = tool_call.to_h
267
278
  attributes[:tool_call_id] = attributes.delete(:id)
279
+ attributes.delete(:thought_signature) unless supports_thought_signature
268
280
  @message.send("add_#{@message.class.tool_calls_association_name.to_s.singularize}", **attributes)
269
281
  end
270
282
  end
@@ -6,16 +6,19 @@ module RubyLLM
6
6
  def to_llm
7
7
  cached = columns.include?(:cached_tokens) ? self[:cached_tokens] : nil
8
8
  cache_creation = columns.include?(:cache_creation_tokens) ? self[:cache_creation_tokens] : nil
9
+ thinking_tokens_val = columns.include?(:thinking_tokens) ? self[:thinking_tokens] : nil
9
10
 
10
11
  ::RubyLLM::Message.new(
11
12
  role: role.to_sym,
12
13
  content: extract_content,
14
+ thinking: extract_thinking,
13
15
  tool_calls: extract_tool_calls,
14
16
  tool_call_id: extract_tool_call_id,
15
17
  input_tokens: input_tokens,
16
18
  output_tokens: output_tokens,
17
19
  cached_tokens: cached,
18
20
  cache_creation_tokens: cache_creation,
21
+ thinking_tokens: thinking_tokens_val,
19
22
  model_id: model_association&.model_id
20
23
  )
21
24
  end
@@ -30,6 +33,13 @@ module RubyLLM
30
33
 
31
34
  private
32
35
 
36
+ def extract_thinking
37
+ text = columns.include?(:thinking_text) ? self[:thinking_text] : nil
38
+ signature = columns.include?(:thinking_signature) ? self[:thinking_signature] : nil
39
+
40
+ ::RubyLLM::Thinking.build(text: text, signature: signature)
41
+ end
42
+
33
43
  def extract_content
34
44
  return ::RubyLLM::Content::Raw.new(content_raw) if columns.include?(:content_raw) && !content_raw.nil?
35
45
 
@@ -4,11 +4,14 @@ module RubyLLM
4
4
  module Sequel
5
5
  module ToolCallMethods
6
6
  def to_llm
7
- ::RubyLLM::ToolCall.new(
7
+ attrs = {
8
8
  id: tool_call_id,
9
9
  name: name,
10
10
  arguments: parse_arguments
11
- )
11
+ }
12
+ attrs[:thought_signature] = self[:thought_signature] if columns.include?(:thought_signature)
13
+
14
+ ::RubyLLM::ToolCall.new(**attrs)
12
15
  end
13
16
 
14
17
  def result_message
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyLLM
4
4
  module Sequel
5
- VERSION = '0.1.3'
5
+ VERSION = '0.1.4'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_llm-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Pasquale
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '1.9'
18
+ version: '1.10'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '1.9'
25
+ version: '1.10'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sequel
28
28
  requirement: !ruby/object:Gem::Requirement