superagi 0.2.0 → 0.3.0

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: 477d9cd1d2f1dcdbdcc691730e62692e5ca732f555f7126d0814dc7e6b938f65
4
- data.tar.gz: 38e0496835095a59ca7f825dc0125da3053f39c2bbbc5358690ad0da9f971082
3
+ metadata.gz: a210eeb7bb52e127cb2b9ab235b3a483eb779dbf16bed7802fadb5eae17bc0c5
4
+ data.tar.gz: b3287833b9493ccf4d34ff90e95e47d0e11623da94d568c956ebdd26cf1d92c1
5
5
  SHA512:
6
- metadata.gz: ef9fa9c5e6ea03936a65dff236d338d3e7ffff9923149c86040175a0a1399b20a6e6545571765c386b21022cdb0c66baabbc42d3362a4011edc930e46279dad6
7
- data.tar.gz: ad7df73c2df566c168c5e90eb5e3b2b1ff7a25e0b4bb681c7e8528d02d963d30087788a59c0ccca90aa5b68e8b4326f35081bfb4f91f14b2f47a66dbf3d21907
6
+ metadata.gz: a5e3d55aec92a571d6b88a28cc14b82beae6ddc5a44d10216e4e54d863f2141ca59aad221c6bdcc8aeea044c2acd84c1187acd1e25bd0b57ac183744252f83c8
7
+ data.tar.gz: 9cd0bab2daff3d82a80495c12fa2e2bb83b777cf7a23f76065715980486e1269c29baa48ba5b644fa906150fb18ae2c96a89dede4ac15a586ecba50fb7902c3b
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2023-10-30
9
+
10
+ ### Added
11
+
12
+ - Add SuperAGI::Agent#pause and Agent#resume to pause and resume an agent run.
13
+ - Add SuperAGI::Agent#resources to get the output of an agent run.
14
+
8
15
  ## [0.2.0] - 2023-10-28
9
16
 
10
17
  ### Added
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
 
6
6
  gem "byebug", "~> 11.1.3"
7
7
  gem "dotenv", "~> 2.8.1"
8
- gem "rake", "~> 13.0"
8
+ gem "rake", "~> 13.1"
9
9
  gem "rspec", "~> 3.12"
10
10
  gem "rubocop", "~> 1.50.2"
11
11
  gem "vcr", "~> 6.1.0"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superagi (0.2.0)
4
+ superagi (0.3.0)
5
5
  faraday (>= 1)
6
6
  faraday-multipart (>= 1)
7
7
 
@@ -32,7 +32,7 @@ GEM
32
32
  ast (~> 2.4.1)
33
33
  public_suffix (5.0.3)
34
34
  rainbow (3.1.1)
35
- rake (13.0.6)
35
+ rake (13.1.0)
36
36
  regexp_parser (2.8.0)
37
37
  rexml (3.2.6)
38
38
  rspec (3.12.0)
@@ -75,7 +75,7 @@ PLATFORMS
75
75
  DEPENDENCIES
76
76
  byebug (~> 11.1.3)
77
77
  dotenv (~> 2.8.1)
78
- rake (~> 13.0)
78
+ rake (~> 13.1)
79
79
  rspec (~> 3.12)
80
80
  rubocop (~> 1.50.2)
81
81
  superagi!
data/README.md CHANGED
@@ -148,6 +148,29 @@ puts response
148
148
  # => {"run_id"=>29970}
149
149
  ```
150
150
 
151
+ ### Pause Agent
152
+
153
+ To pause an agent:
154
+
155
+ ```ruby
156
+ client.agent.run(id: 15312)
157
+ response = client.agent.pause(id: 15312)
158
+ puts response
159
+ # => {"result"=>"success"}
160
+ ```
161
+
162
+ ### Resume Agent
163
+
164
+ To resume an agent:
165
+
166
+ ```ruby
167
+ client.agent.run(id: 15312)
168
+ client.agent.pause(id: 15312)
169
+ response = client.agent.resume(id: 15312)
170
+ puts response
171
+ # => {"result"=>"success"}
172
+ ```
173
+
151
174
  ### Agent Status
152
175
 
153
176
  To get the status of Agent runs:
@@ -158,6 +181,17 @@ puts response
158
181
  # => [{"run_id"=>29970,"status"=>"CREATED"}]
159
182
  ```
160
183
 
184
+ ### Agent Resources
185
+
186
+ To get the resources output by Agent runs:
187
+
188
+ ```ruby
189
+ run_id = client.agent.run(id: 15312)["run_id"]
190
+ response = client.agent.resources(parameters: { run_ids: [run_id] })
191
+ puts response
192
+ # => {}
193
+ ```
194
+
161
195
  ## Development
162
196
 
163
197
  After checking out the repo, run `bin/setup` to install dependencies. You can run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,5 +1,7 @@
1
1
  module SuperAGI
2
2
  class Agent
3
+ include SuperAGI::AgentValidation
4
+
3
5
  def initialize(client:)
4
6
  @client = client
5
7
  end
@@ -10,7 +12,7 @@ module SuperAGI
10
12
  end
11
13
 
12
14
  def update(id:, parameters:)
13
- parameters = DEFAULT_UPDATE_PARAMETERS.merge(parameters)
15
+ parameters = valid_parameters(method: :update, parameters: parameters)
14
16
  @client.json_put(path: "/agent/#{id}", parameters: parameters)
15
17
  end
16
18
 
@@ -18,76 +20,21 @@ module SuperAGI
18
20
  @client.json_post(path: "/agent/#{id}/run", parameters: {})
19
21
  end
20
22
 
21
- # def pause(id:)
22
- # end
23
-
24
- # def resume(id:)
25
- # end
26
-
27
- def status(id:)
28
- @client.json_post(path: "/agent/#{id}/run-status", parameters: {})
29
- end
30
-
31
- # def resources(id:)
32
- # end
33
-
34
- private
35
-
36
- ARRAY_PARAMETERS = %w[
37
- constraints
38
- goal
39
- tools
40
- ].freeze
41
-
42
- DEFAULT_CREATE_PARAMETERS = {
43
- agent_workflow: "Goal Based Workflow",
44
- model: "gpt-4"
45
- }.freeze
46
- REQUIRED_CREATE_PARAMETERS = (%w[
47
- description
48
- instruction
49
- iteration_interval
50
- max_iterations
51
- name
52
- ] + ARRAY_PARAMETERS + DEFAULT_CREATE_PARAMETERS.keys).freeze
53
-
54
- # Update parameters need to always include any List types, even if they are empty,
55
- # otherwise the API will return a NoneType error.
56
- DEFAULT_UPDATE_PARAMETERS = {
57
- constraints: [],
58
- goal: [],
59
- tools: []
60
- }.freeze
61
- REQUIRED_UPDATE_PARAMETERS = DEFAULT_UPDATE_PARAMETERS.keys.freeze
62
-
63
- def valid_parameters(method:, parameters:)
64
- parameters = default_parameters(method: method, parameters: parameters)
65
- validate_presence(method: method, parameters: parameters)
66
- validate_arrays(parameters: parameters)
67
- parameters
23
+ def pause(id:)
24
+ @client.json_post(path: "/agent/#{id}/pause", parameters: {})
68
25
  end
69
26
 
70
- def default_parameters(method:, parameters:)
71
- case method
72
- when :create then DEFAULT_CREATE_PARAMETERS.merge(parameters)
73
- when :update then DEFAULT_UPDATE_PARAMETERS.merge(parameters)
74
- end
27
+ def resume(id:)
28
+ @client.json_post(path: "/agent/#{id}/resume", parameters: {})
75
29
  end
76
30
 
77
- def validate_presence(method:, parameters:)
78
- required_parameters = case method
79
- when :create then REQUIRED_CREATE_PARAMETERS
80
- when :update then REQUIRED_UPDATE_PARAMETERS
81
- end
82
- required_parameters.each do |key|
83
- raise ArgumentError, "#{key} is required" unless parameters[key.to_sym]
84
- end
31
+ def status(id:)
32
+ @client.json_post(path: "/agent/#{id}/run-status", parameters: {})
85
33
  end
86
34
 
87
- def validate_arrays(parameters:)
88
- ARRAY_PARAMETERS.each do |key|
89
- raise ArgumentError, "#{key} must be an array" unless parameters[key.to_sym].is_a?(Array)
90
- end
35
+ def resources(parameters:)
36
+ parameters = valid_parameters(method: :resources, parameters: parameters)
37
+ @client.json_post(path: "/agent/resources/output", parameters: parameters)
91
38
  end
92
39
  end
93
40
  end
@@ -0,0 +1,70 @@
1
+ module SuperAGI
2
+ module AgentValidation
3
+ private
4
+
5
+ ARRAY_CREATE_PARAMETERS = %w[
6
+ constraints
7
+ goal
8
+ tools
9
+ ].freeze
10
+
11
+ DEFAULT_CREATE_PARAMETERS = {
12
+ agent_workflow: "Goal Based Workflow",
13
+ model: "gpt-4"
14
+ }.freeze
15
+ REQUIRED_CREATE_PARAMETERS = (%w[
16
+ description
17
+ instruction
18
+ iteration_interval
19
+ max_iterations
20
+ name
21
+ ] + ARRAY_CREATE_PARAMETERS + DEFAULT_CREATE_PARAMETERS.keys).freeze
22
+
23
+ # Update parameters need to always include any List types, even if they are empty,
24
+ # otherwise the API will return a NoneType error.
25
+ DEFAULT_UPDATE_PARAMETERS = {
26
+ constraints: [],
27
+ goal: [],
28
+ tools: []
29
+ }.freeze
30
+ REQUIRED_UPDATE_PARAMETERS = DEFAULT_UPDATE_PARAMETERS.keys.freeze
31
+
32
+ REQUIRED_RESOURCES_PARAMETERS = %w[run_ids].freeze
33
+
34
+ def valid_parameters(method:, parameters:)
35
+ parameters = default_parameters(method: method, parameters: parameters)
36
+ validate_presence(method: method, parameters: parameters)
37
+ validate_arrays(method: method, parameters: parameters)
38
+ parameters
39
+ end
40
+
41
+ def default_parameters(method:, parameters:)
42
+ case method
43
+ when :create then DEFAULT_CREATE_PARAMETERS.merge(parameters)
44
+ when :update then DEFAULT_UPDATE_PARAMETERS.merge(parameters)
45
+ else parameters
46
+ end
47
+ end
48
+
49
+ def validate_presence(method:, parameters:)
50
+ required_parameters = case method
51
+ when :create then REQUIRED_CREATE_PARAMETERS
52
+ when :update then REQUIRED_UPDATE_PARAMETERS
53
+ when :resources then REQUIRED_RESOURCES_PARAMETERS
54
+ end
55
+ required_parameters.each do |key|
56
+ raise ArgumentError, "#{key} is required" unless parameters[key.to_sym]
57
+ end
58
+ end
59
+
60
+ def validate_arrays(method:, parameters:)
61
+ array_parameters = case method
62
+ when :create, :update then ARRAY_CREATE_PARAMETERS
63
+ when :resources then REQUIRED_RESOURCES_PARAMETERS
64
+ end
65
+ array_parameters.each do |key|
66
+ raise ArgumentError, "#{key} must be an array" unless parameters[key.to_sym].is_a?(Array)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module SuperAGI
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
data/lib/superagi.rb CHANGED
@@ -3,6 +3,7 @@ require "faraday/multipart"
3
3
 
4
4
  require_relative "superagi/http"
5
5
  require_relative "superagi/client"
6
+ require_relative "superagi/agent_validation"
6
7
  require_relative "superagi/agent"
7
8
 
8
9
  module SuperAGI
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superagi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-28 00:00:00.000000000 Z
11
+ date: 2023-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -69,6 +69,7 @@ files:
69
69
  - lib/ruby/superagi.rb
70
70
  - lib/superagi.rb
71
71
  - lib/superagi/agent.rb
72
+ - lib/superagi/agent_validation.rb
72
73
  - lib/superagi/client.rb
73
74
  - lib/superagi/compatibility.rb
74
75
  - lib/superagi/http.rb