openai-client 0.7.0 → 0.8.1

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: fa13b10a22961929472de3fc7cb1ebedc43c5d46d2e1b221d3e7ac39293af99e
4
- data.tar.gz: d848b51aa150fe3b33f755cd774f8e959550bfeef82daf475976756fe0b3a12a
3
+ metadata.gz: 3cbf3dd44125f32b91842962afe23cd6c9598d1860134d9bbdf00f7aee8a0324
4
+ data.tar.gz: 5082017517a67520e653376ee73bc267c7775d2e85979b7fb38ef8a19267fc20
5
5
  SHA512:
6
- metadata.gz: 30b8d9843d40343ba72e06450c7262238a2d2d67bfffe6d59c55c61e4d20535985c513bc8b692bab193b5df3e2427b82ede2f441e50834d3fb15bf5f61d2d272
7
- data.tar.gz: '0817ca7dce3899b5e43a5a87fad228c370051475ccd41c475d5c5e32560cfa3cfca318006f59a8fb611be722cf08c76a82cb8184407c53d2e92999e6d38bed47'
6
+ metadata.gz: 24b0f29f7e4c58a3f881fcd06a68d833e8c3185990d572983f43e68d86a97ec4911d2ffa9f906c5408b0aac142e7a8fca6029f406325f3082dcf695a83e8c605
7
+ data.tar.gz: f82ba652ebcaea9407f6b4667a5b98351af1352c48e112a0a90773a909bd1f043979a1cd2fc261be9bd714c1fe85298b3a95eec32bd2878168307e1336724de9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openai-client (0.7.0)
4
+ openai-client (0.8.1)
5
5
  faraday (~> 1.8)
6
6
  faraday_middleware (~> 1.2)
7
7
 
data/README.md CHANGED
@@ -5,20 +5,33 @@ This gem is a wrapper for calling the OpenAI and GPT-3 APIs.
5
5
  * [Installation](#installation)
6
6
  * [Usage](#usage)
7
7
  * [OpenAI Models API](#openai-models-api)
8
+ * [List Models](#list-models)
9
+ * [Find Model](#find-model)
8
10
  * [OpenAI Completions API](#openai-completions-api)
11
+ * [Create Completion](#create-completion)
9
12
  * [OpenAI Edits API](#openai-edits-api)
13
+ * [Create Edit](#create-edit)
10
14
  * [OpenAI Image API](#openai-image-api)
11
15
  * [Create an Image](#create-an-image)
12
16
  * [Create an Image Edit](#create-an-image-edit)
13
17
  * [Create an Image Variation](#create-an-image-variation)
14
18
  * [OpenAI Embeddings API](#openai-embeddings-api)
19
+ * [Create Embeddings](#create-embeddings)
15
20
  * [OpenAI Moderations API](#openai-moderations-api)
21
+ * [Create Moderation](#create-moderation)
16
22
  * [OpenAI Files API](#openai-files-api)
17
23
  * [List Files](#list-files)
18
24
  * [Find File](#find-file)
19
25
  * [Find File Content](#find-file-content)
20
26
  * [Upload File](#upload-file)
21
27
  * [Delete File](#delete-file)
28
+ * [OpenAI Fine-Tunes API](#openai-fine-tunes-api)
29
+ * [Create Fine-Tune](#create-fine-tune)
30
+ * [List Fine-Tunes](#list-fine-tunes)
31
+ * [Find Fine-Tune](#find-fine-tune)
32
+ * [List Fine-Tune Events](#list-fine-tune-events)
33
+ * [Cancel Fine-Tune](#cancel-fine-tune)
34
+ * [Delete Fine-Tune Model](#delete-fine-tune-model)
22
35
 
23
36
  ## Installation
24
37
 
@@ -56,6 +69,18 @@ end
56
69
 
57
70
  ## OpenAI Models API
58
71
 
72
+ ### List Models
73
+
74
+ ```ruby
75
+ Openai::Client.models.list
76
+ ```
77
+
78
+ ### Find Model
79
+
80
+ ```ruby
81
+ Openai::Client.models.find(model_id)
82
+ ```
83
+
59
84
  ```ruby
60
85
  # Models
61
86
  Openai::Client.models.list
@@ -66,6 +91,8 @@ Openai::Client.models.find(model_id)
66
91
 
67
92
  ## OpenAI Completions API
68
93
 
94
+ ### Create Completion
95
+
69
96
  ```ruby
70
97
  request_body = {
71
98
  model: 'text-davinci-003',
@@ -81,10 +108,12 @@ request_body = {
81
108
  Openai::Client.completions.create(request_body)
82
109
  ```
83
110
 
84
- [API documentation](https://platform.openai.com/docs/api-reference/completions/create)
111
+ [API Documentation](https://platform.openai.com/docs/api-reference/completions/create)
85
112
 
86
113
  ## OpenAI Edits API
87
114
 
115
+ ### Create Edit
116
+
88
117
  ```ruby
89
118
  request_body = {
90
119
  model: 'text-davinci-edit-001',
@@ -94,7 +123,7 @@ request_body = {
94
123
  Openai::Client.edits.create(request_body)
95
124
  ```
96
125
 
97
- [API documentation](https://platform.openai.com/docs/api-reference/edits/create)
126
+ [API Documentation](https://platform.openai.com/docs/api-reference/edits/create)
98
127
 
99
128
  ## OpenAI Image API
100
129
 
@@ -110,7 +139,7 @@ request_body = {
110
139
  response = Openai::Client.images.create(request_body)
111
140
  ```
112
141
 
113
- [API documentation](https://platform.openai.com/docs/api-reference/images/create)
142
+ [API Documentation](https://platform.openai.com/docs/api-reference/images/create)
114
143
 
115
144
  ### Create an Image Edit
116
145
 
@@ -129,7 +158,7 @@ response = Openai::Client.images.edit(request_body)
129
158
  - `image` - must be a valid PNG file, less than 4MB, and square. If mask is not provided, image must have transparency, which will be used as the mask.
130
159
  - `mask` - an additional image whose fully transparent areas (e.g. where alpha is zero) indicate where image should be edited. Must be a valid PNG file, less than 4MB, and have the same dimensions as image.
131
160
 
132
- [API documentation](https://platform.openai.com/docs/api-reference/images/create-edit)
161
+ [API Documentation](https://platform.openai.com/docs/api-reference/images/create-edit)
133
162
 
134
163
  ### Create an Image Variation
135
164
 
@@ -145,10 +174,12 @@ response = Openai::Client.images.variations(request_body)
145
174
 
146
175
  - `image` - must be a valid PNG file, less than 4MB, and square.
147
176
 
148
- [API documentation](https://platform.openai.com/docs/api-reference/images/create-variation)
177
+ [API Documentation](https://platform.openai.com/docs/api-reference/images/create-variation)
149
178
 
150
179
  ## OpenAI Embeddings API
151
180
 
181
+ ### Create Embeddings
182
+
152
183
  ```ruby
153
184
  request_body = {
154
185
  model: 'text-embedding-ada-002',
@@ -157,10 +188,12 @@ request_body = {
157
188
  Openai::Client.embeddings.create(request_body)
158
189
  ```
159
190
 
160
- [API documentation](https://platform.openai.com/docs/api-reference/embeddings/create)
191
+ [API Documentation](https://platform.openai.com/docs/api-reference/embeddings/create)
161
192
 
162
193
  ## OpenAI Moderations API
163
194
 
195
+ ### Create Moderation
196
+
164
197
  ```ruby
165
198
  request_body = {
166
199
  model: 'text-moderation-latest', # text-moderation-stable or text-moderation-latest
@@ -169,7 +202,7 @@ request_body = {
169
202
  Openai::Client.moderations.create(request_body)
170
203
  ```
171
204
 
172
- [API documentation](https://platform.openai.com/docs/api-reference/moderations/create)
205
+ [API Documentation](https://platform.openai.com/docs/api-reference/moderations/create)
173
206
 
174
207
  ## OpenAI Files API
175
208
 
@@ -179,7 +212,7 @@ Openai::Client.moderations.create(request_body)
179
212
  Openai::Client.files.list
180
213
  ```
181
214
 
182
- [API documentation](https://platform.openai.com/docs/api-reference/files/list)
215
+ [API Documentation](https://platform.openai.com/docs/api-reference/files/list)
183
216
 
184
217
  ### Find File
185
218
 
@@ -187,7 +220,7 @@ Openai::Client.files.list
187
220
  Openai::Client.files.find(file_id)
188
221
  ```
189
222
 
190
- [API documentation](https://platform.openai.com/docs/api-reference/files/retrieve)
223
+ [API Documentation](https://platform.openai.com/docs/api-reference/files/retrieve)
191
224
 
192
225
  ### Find File Content
193
226
 
@@ -195,7 +228,7 @@ Openai::Client.files.find(file_id)
195
228
  Openai::Client.files.find_content(file_id)
196
229
  ```
197
230
 
198
- [API documentation](https://platform.openai.com/docs/api-reference/files/retrieve-content)
231
+ [API Documentation](https://platform.openai.com/docs/api-reference/files/retrieve-content)
199
232
 
200
233
  ### Upload File
201
234
 
@@ -216,7 +249,7 @@ Example (file.jsonl):
216
249
  ...
217
250
  ```
218
251
 
219
- [API documentation](https://platform.openai.com/docs/api-reference/files/upload)
252
+ [API Documentation](https://platform.openai.com/docs/api-reference/files/upload)
220
253
 
221
254
  ### Delete File
222
255
 
@@ -224,7 +257,64 @@ Example (file.jsonl):
224
257
  Openai::Client.files.delete(file_id)
225
258
  ```
226
259
 
227
- [API documentation](https://platform.openai.com/docs/api-reference/files/delete)
260
+ [API Documentation](https://platform.openai.com/docs/api-reference/files/delete)
261
+
262
+ ## OpenAI Fine-Tunes API
263
+
264
+ ### Create Fine-Tune
265
+
266
+ ```ruby
267
+ request_body = {
268
+ training_file: "file-XGinujblHPwGLSztz8cPS8XY"
269
+ }
270
+
271
+ Openai::Client.fine_tunes.create(request_body)
272
+ ```
273
+
274
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/create)
275
+
276
+ ### List Fine-Tunes
277
+
278
+ ```ruby
279
+ Openai::Client.fine_tunes.list
280
+ ```
281
+
282
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/list)
283
+
284
+ ### Find Fine-Tune
285
+
286
+ ```ruby
287
+ Openai::Client.fine_tunes.find(fine_tune_id)
288
+ ```
289
+
290
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/retrieve)
291
+
292
+ ### List Fine-Tune Events
293
+
294
+ ```ruby
295
+ Openai::Client.fine_tunes.find_events(fine_tune_id)
296
+ ```
297
+
298
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/events)
299
+
300
+ ### Cancel Fine-Tune
301
+
302
+ ```ruby
303
+ Openai::Client.fine_tunes.cancel(fine_tune_id)
304
+ ```
305
+
306
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/cancel)
307
+
308
+ ### Delete Fine-Tune Model
309
+
310
+ ```ruby
311
+ Openai::Client.models.delete(model_id)
312
+ ```
313
+
314
+ [API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/delete-model)
315
+
316
+ > - You must have the Owner role in your organization.
317
+ > - Make sure you provide the Model ID and not the Fine-Tune ID.
228
318
 
229
319
  ## Contributing
230
320
 
data/Rakefile CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
+ require 'yard'
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
 
@@ -10,3 +11,9 @@ require 'rubocop/rake_task'
10
11
  RuboCop::RakeTask.new
11
12
 
12
13
  task default: %i[spec rubocop]
14
+
15
+ YARD::Rake::YardocTask.new do |t|
16
+ t.files = ['lib/**/*.rb'] # optional
17
+ t.options = ['--any', '--extra', '--opts'] # optional
18
+ t.stats_options = ['--list-undoc'] # optional
19
+ end
@@ -46,7 +46,7 @@ module Openai
46
46
  #
47
47
  # @param [String] id file ID
48
48
  #
49
- # @return [Hash] found file or nil
49
+ # @return [Hash] found file
50
50
  def find(id)
51
51
  Http.new.get("#{PATH}/#{id}").body
52
52
  rescue Faraday::Error
@@ -58,7 +58,7 @@ module Openai
58
58
  #
59
59
  # @param [String] id file ID
60
60
  #
61
- # @return [Hash] the contents of the specified file or nil
61
+ # @return [Hash] the contents of the specified file
62
62
  def find_content(id)
63
63
  Http.new.get("#{PATH}/#{id}/content").body
64
64
  rescue Faraday::Error
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Openai
4
+ module Client
5
+ class FineTunes
6
+ PATH = 'fine-tunes'
7
+
8
+ # @api public
9
+ # Public: Makes an API call to return list the organization's fine-tuning jobs.
10
+ #
11
+ # @return [Hash] a list of fine-tuning jobs
12
+ def list
13
+ Http.new.get(PATH).body
14
+ rescue Faraday::Error
15
+ nil
16
+ end
17
+
18
+ # @api public
19
+ # Public: Makes an API call to find info about the fine-tune job.
20
+ #
21
+ # @param [String] id the ID of the fine-tune job
22
+ #
23
+ # @return [Hash] found fine-tune info
24
+ def find(id)
25
+ Http.new.get("#{PATH}/#{id}").body
26
+ rescue Faraday::Error
27
+ nil
28
+ end
29
+
30
+ # @api public
31
+ # Public: Makes an API call to find fine-grained status updates for a fine-tune job.
32
+ #
33
+ # @param [String] id the ID of the fine-tune job
34
+ #
35
+ # @return [Hash] found fine-grained status updates
36
+ def find_events(id)
37
+ Http.new.get("#{PATH}/#{id}/events").body
38
+ rescue Faraday::Error
39
+ nil
40
+ end
41
+
42
+ # @api public
43
+ # Public: Makes an API call to cancel a fine-tune job.
44
+ #
45
+ # @param [String] id the ID of the fine-tune job
46
+ #
47
+ # @return [Hash] the fine-tune related info
48
+ def cancel(id)
49
+ Http.new.post("#{PATH}/#{id}/cancel").body
50
+ rescue Faraday::Error
51
+ nil
52
+ end
53
+
54
+ # @api public
55
+ # Public: Makes an API call to create a job that fine-tunes a specified model from a given dataset.
56
+ #
57
+ # @param [Hash] body request body
58
+ #
59
+ # @return [Hash] details of the enqueued job including job status and the name of the fine-tuned models
60
+ def create(body)
61
+ Http.new.post(PATH, body).body
62
+ rescue Faraday::Error
63
+ nil
64
+ end
65
+ end
66
+ end
67
+ end
@@ -20,12 +20,24 @@ module Openai
20
20
  #
21
21
  # @param [String] id model id
22
22
  #
23
- # @return [Hash] found model or nil
23
+ # @return [Hash] found model
24
24
  def find(id)
25
25
  Http.new.get("#{PATH}/#{id}").body
26
26
  rescue Faraday::Error
27
27
  nil
28
28
  end
29
+
30
+ # @api public
31
+ # Public: Makes an API call to delete a model.
32
+ #
33
+ # @param [String] id model id
34
+ #
35
+ # @return [Hash] the model
36
+ def delete(id)
37
+ Http.new.delete("#{PATH}/#{id}").body
38
+ rescue Faraday::Error
39
+ nil
40
+ end
29
41
  end
30
42
  end
31
43
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Openai
4
4
  module Client
5
- VERSION = '0.7.0'
5
+ VERSION = '0.8.1'
6
6
  end
7
7
  end
data/lib/openai/client.rb CHANGED
@@ -15,18 +15,28 @@ require 'openai/client/images'
15
15
  require 'openai/client/embeddings'
16
16
  require 'openai/client/moderations'
17
17
  require 'openai/client/files'
18
+ require 'openai/client/fine_tunes'
18
19
 
19
20
  module Openai
20
21
  module Client
21
22
  extend Configurable
22
23
 
23
- ATTRS = ['models', 'edits', 'completions', 'images', 'embeddings', 'moderations', 'files'].freeze
24
+ ATTRS = [
25
+ 'models',
26
+ 'edits',
27
+ 'completions',
28
+ 'images',
29
+ 'embeddings',
30
+ 'moderations',
31
+ 'files',
32
+ 'fine_tunes'
33
+ ].freeze
24
34
 
25
35
  class << self
26
36
  ATTRS.each do |attr|
27
37
  define_method(attr) do
28
- instance_variable_get("@#{attr}") || instance_variable_set("@#{attr}",
29
- const_get(attr.capitalize, self).new)
38
+ klass = const_get(attr.split('_').map(&:capitalize).join, self)
39
+ instance_variable_get("@#{attr}") || instance_variable_set("@#{attr}", klass.new)
30
40
  end
31
41
  end
32
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ihor Tykhonenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-13 00:00:00.000000000 Z
11
+ date: 2023-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -60,6 +60,7 @@ files:
60
60
  - lib/openai/client/edits.rb
61
61
  - lib/openai/client/embeddings.rb
62
62
  - lib/openai/client/files.rb
63
+ - lib/openai/client/fine_tunes.rb
63
64
  - lib/openai/client/http.rb
64
65
  - lib/openai/client/images.rb
65
66
  - lib/openai/client/models.rb