ruby-openai-swarm 0.2.4 → 0.2.6

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: ef97e65185db604611e9a15e4e5a3dcf3b35eb38e8c87e54040175f1947280b8
4
- data.tar.gz: cac5ea7cad0afc755fd528e39e5f77c10db1ecbda43d94b4021863d6f1ac5cea
3
+ metadata.gz: 143ab1b153e54393e27a5a2f02d77c94ecaa8ed477d6ecdc2f072730b63ffd1f
4
+ data.tar.gz: fa72888457647eefc2fedc5c5d97dcd1ccf7b2e35f1395eebf0500dc4a14fb22
5
5
  SHA512:
6
- metadata.gz: 80460e88514e6e117d11de243ddb44f3d412b6c009f6d5ace6f18e82c615fef54f6ccab33e0e0ebb1ec0b9a2d762a2011ed8bef48dc3d0afaf6dd908eb07d331
7
- data.tar.gz: 101d70a78daa2d7f2be6917b23aaa81ff0c6e76d37d6a49d5405af7983fd2ba19f974ef6620fec79b4899644a6b8c4d208b45df9292aee834456f6fea57bee6e
6
+ metadata.gz: 6b6830bb7dc3cb4e0512e0c5e0967ba7160b1967b5a44136923108df60cbb76450da27df55cadc9357a8a6c86d093db27dfbfdcf0f839e8db1e12114606055d7
7
+ data.tar.gz: f8f67a146f3e089973e333a9ae39d2310779fa89648b91459ebcfe83029b4b6328852085cfb4179ae6627e60d802ff974ddaa8bebeee2f638fedcd89f1020e2a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-openai-swarm (0.2.4)
4
+ ruby-openai-swarm (0.2.6)
5
5
  ruby-openai (~> 7.3)
6
6
 
7
7
  GEM
@@ -212,8 +212,16 @@ module OpenAISwarm
212
212
 
213
213
  yield({ delim: "start" }) if block_given?
214
214
  completion.each do |chunk|
215
-
216
- raise OpenAISwarm::Error.new(chunk['error']) if chunk['error']
215
+ if chunk['error']
216
+ details = {
217
+ 'response' =>
218
+ Response.new(
219
+ messages: messages,
220
+ agent: active_agent,
221
+ context_variables: context_variables)
222
+ }
223
+ raise OpenAISwarm::Error.new(chunk['error'], details)
224
+ end
217
225
 
218
226
  delta = chunk.dig('choices', 0, 'delta')
219
227
  if delta['role'] == "assistant"
@@ -1,10 +1,13 @@
1
1
  module OpenAISwarm
2
2
  class FunctionDescriptor
3
- attr_reader :target_method, :description
3
+ attr_reader :target_method,
4
+ :description,
5
+ :parameters
4
6
 
5
- def initialize(target_method:, description: '')
7
+ def initialize(target_method:, description: '', parameters: nil)
6
8
  @target_method = target_method.is_a?(Method) ? target_method : method(target_method)
7
9
  @description = description
10
+ @parameters = parameters
8
11
  end
9
12
  end
10
13
  end
@@ -52,6 +52,7 @@ module OpenAISwarm
52
52
  def self.function_to_json(func_instance)
53
53
  is_target_method = func_instance.respond_to?(:target_method) || func_instance.is_a?(OpenAISwarm::FunctionDescriptor)
54
54
  func = is_target_method ? func_instance.target_method : func_instance
55
+ custom_parameters = is_target_method ? func_instance.parameters : nil
55
56
 
56
57
  function_name = func.name
57
58
  function_parameters = func.parameters
@@ -82,16 +83,18 @@ module OpenAISwarm
82
83
 
83
84
  description = func_instance.respond_to?(:description) ? func_instance&.description : nil
84
85
 
86
+ json_parameters = {
87
+ type: "object",
88
+ properties: parameters,
89
+ required: required
90
+ }
91
+
85
92
  {
86
93
  type: "function",
87
94
  function: {
88
95
  name: function_name,
89
96
  description: description || '',
90
- parameters: {
91
- type: "object",
92
- properties: parameters,
93
- required: required
94
- }
97
+ parameters: custom_parameters || json_parameters
95
98
  }
96
99
  }
97
100
  end
@@ -1,3 +1,3 @@
1
1
  module OpenAISwarm
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.6"
3
3
  end
@@ -8,7 +8,13 @@ require 'ruby-openai-swarm/function_descriptor'
8
8
  require 'ruby-openai-swarm/repl'
9
9
 
10
10
  module OpenAISwarm
11
- class Error < StandardError; end
11
+ class Error < StandardError;
12
+ attr_reader :details
13
+ def initialize(message, details = {})
14
+ @details = details
15
+ super(message)
16
+ end
17
+ end
12
18
 
13
19
  class << self
14
20
  def new(client = nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-openai-swarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grayson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-27 00:00:00.000000000 Z
11
+ date: 2024-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-openai