omniai-openai 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32b555cd7f80abb2cc11a12986a0a8df15e5c1d9b6d31113f5e00b47174f4ec6
4
- data.tar.gz: 81046a31442f6f2b1a1eb5d37723deefbb82cf7c145907ae0bb72db738e09080
3
+ metadata.gz: 7cb12222b6c13b368f2f25d55c66ff57e98114830a32bdd54ee82947aaf38674
4
+ data.tar.gz: 7600584957b977be573321a25a995f720fde9e9112fdd3e1b8676ce3d75461e0
5
5
  SHA512:
6
- metadata.gz: '0939f67a3bc54221fc1141b00ab8eb1c38323178da2c3c78057cd25a288df776397eb204c18f5425005a92f05556a67b28b902b6520716c359b7901a70d7e183'
7
- data.tar.gz: 7611023c850321bec21b71dfb626b5c308905e55a1485d5c965d1e31f2e9ced8fa09929ada98eff681a933499e5735b88243c404cf7452c2fbf0aab3fd515606
6
+ metadata.gz: 75f8bdbfff09e789058e15bf962efcbbe0146b3e522e5efc701ca1303ef734b68f6d19094502c2e8fd89f5db213687b6c5001967e3dfd1b46eaab060b4c4e4c0
7
+ data.tar.gz: 5b206397432e32277bda4767bad41707699607cf93e9a396570cbe78ab668f42b5c34c75f99d26d93cccd042b9c08359a899a4f375fabae7fc6c55a587515550
data/README.md CHANGED
@@ -268,8 +268,17 @@ client.files.all
268
268
 
269
269
  ### Uploading a File
270
270
 
271
+ #### Using a File
272
+
273
+ ```ruby
274
+ file = client.files.build(io: File.open('demo.pdf', 'wb'))
275
+ file.save!
276
+ ```
277
+
278
+ #### Using a Path
279
+
271
280
  ```ruby
272
- file = client.files.build(io: File.open('...', 'wb'))
281
+ file = client.files.build(io: 'demo.pdf'))
273
282
  file.save!
274
283
  ```
275
284
 
@@ -428,6 +437,15 @@ run.metadata = { user: 'Ringo' }
428
437
  run.save!
429
438
  ```
430
439
 
440
+ #### Polling a Run
441
+
442
+ ```ruby
443
+ run.terminated? # false
444
+ run.poll!
445
+ run.terminated? # true
446
+ run.status # 'cancelled' / 'failed' / 'completed' / 'expired'
447
+ ```
448
+
431
449
  #### Cancelling a Run
432
450
 
433
451
  ```ruby
@@ -49,7 +49,7 @@ module OmniAI
49
49
  client: Client.new,
50
50
  id: nil,
51
51
  name: nil,
52
- model: nil,
52
+ model: OmniAI::Chat::DEFAULT_MODEL,
53
53
  description: nil,
54
54
  instructions: nil,
55
55
  metadata: {},
@@ -14,7 +14,7 @@ module OmniAI
14
14
 
15
15
  # @param limit [Integer] optional
16
16
  # @return [Array<OmniAI::Thread::Message>]
17
- def all(limit:)
17
+ def all(limit: nil)
18
18
  Message.all(thread_id: @thread.id, limit:, client: @client)
19
19
  end
20
20
 
@@ -5,6 +5,20 @@ module OmniAI
5
5
  class Thread
6
6
  # An OpenAI run within a thread.
7
7
  class Run
8
+ module Status
9
+ CANCELLED = 'cancelled'
10
+ FAILED = 'failed'
11
+ COMPLETED = 'completed'
12
+ EXPIRED = 'expired'
13
+ end
14
+
15
+ TERMINATED_STATUSES = [
16
+ Status::CANCELLED,
17
+ Status::FAILED,
18
+ Status::COMPLETED,
19
+ Status::EXPIRED,
20
+ ].freeze
21
+
8
22
  # @!attribute [rw] id
9
23
  # @return [String, nil]
10
24
  attr_accessor :id
@@ -143,6 +157,22 @@ module OmniAI
143
157
  self
144
158
  end
145
159
 
160
+ # @raise [HTTPError]
161
+ # @return [OmniAI::OpenAI::Thread]
162
+ def reload!
163
+ raise Error, 'unable to fetch! without an ID' unless @id
164
+
165
+ response = @client.connection
166
+ .accept(:json)
167
+ .headers(HEADERS)
168
+ .get(path)
169
+
170
+ raise HTTPError, response.flush unless response.status.ok?
171
+
172
+ parse(data: response.parse)
173
+ self
174
+ end
175
+
146
176
  # @raise [OmniAI::Error]
147
177
  # @return [OmniAI::OpenAI::Thread]
148
178
  def cancel!
@@ -153,6 +183,23 @@ module OmniAI
153
183
  self
154
184
  end
155
185
 
186
+ # @param interval [Integer, Float, nil] optional (seconds)
187
+ #
188
+ # @return [OmniAI::OpenAI::Thread::Run]
189
+ def poll!(delay: 2)
190
+ loop do
191
+ reload!
192
+ break if terminated?
193
+
194
+ sleep(delay) if delay
195
+ end
196
+ end
197
+
198
+ # @return [Boolean]
199
+ def terminated?
200
+ TERMINATED_STATUSES.include?(@status)
201
+ end
202
+
156
203
  private
157
204
 
158
205
  class << self
@@ -14,7 +14,7 @@ module OmniAI
14
14
 
15
15
  # @param limit [Integer] optional
16
16
  # @return [Array<OmniAI::Thread::Message>]
17
- def all(limit:)
17
+ def all(limit: nil)
18
18
  Run.all(thread_id: @thread.id, limit:, client: @client)
19
19
  end
20
20
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAI
4
4
  module OpenAI
5
- VERSION = '1.3.1'
5
+ VERSION = '1.3.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniai-openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sylvestre