openai-client 0.7.0 → 0.8.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +76 -12
- data/lib/openai/client/files.rb +2 -2
- data/lib/openai/client/fine_tunes.rb +67 -0
- data/lib/openai/client/models.rb +13 -1
- data/lib/openai/client/version.rb +1 -1
- data/lib/openai/client.rb +13 -3
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a80665d3e20f6c56644b2dd0b03b5f7a4231b3e0ef1d947af3094917944c885c
|
4
|
+
data.tar.gz: fd1bb8de6a7d955be8b2265e637a3bad4b09823e538a1c5b49ae8e3b4c8f067a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz: '
|
6
|
+
metadata.gz: 5e6414ba8bf6453fb683870b8a90a7ffaea0101461d73baded7c0572a47bddabca443b1854b42f31db9a1ce95f957111a93bde585692d1f69a15a942d6b42ddd
|
7
|
+
data.tar.gz: '043982ac4ac832a6d8c8078996469bbddc794d56f113a35e2d3869338a34d49f2db58888d15cdd6713cb0e36a254d69e5eb9d26ab301bd9442de44e75298fba6'
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -19,6 +19,13 @@ This gem is a wrapper for calling the OpenAI and GPT-3 APIs.
|
|
19
19
|
* [Find File Content](#find-file-content)
|
20
20
|
* [Upload File](#upload-file)
|
21
21
|
* [Delete File](#delete-file)
|
22
|
+
* [OpenAI Fine-Tunes API](#openai-fine-tunes-api)
|
23
|
+
* [Create Fine-Tune](#create-fine-tune)
|
24
|
+
* [List Fine-Tunes](#list-fine-tunes)
|
25
|
+
* [Find Fine-Tune](#find-fine-tune)
|
26
|
+
* [List Fine-Tune Events](#list-fine-tune-events)
|
27
|
+
* [Cancel Fine-Tune](#cancel-fine-tune)
|
28
|
+
* [Delete Fine-Tune Model](#delete-fine-tune-model)
|
22
29
|
|
23
30
|
## Installation
|
24
31
|
|
@@ -81,7 +88,7 @@ request_body = {
|
|
81
88
|
Openai::Client.completions.create(request_body)
|
82
89
|
```
|
83
90
|
|
84
|
-
[API
|
91
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/completions/create)
|
85
92
|
|
86
93
|
## OpenAI Edits API
|
87
94
|
|
@@ -94,7 +101,7 @@ request_body = {
|
|
94
101
|
Openai::Client.edits.create(request_body)
|
95
102
|
```
|
96
103
|
|
97
|
-
[API
|
104
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/edits/create)
|
98
105
|
|
99
106
|
## OpenAI Image API
|
100
107
|
|
@@ -110,7 +117,7 @@ request_body = {
|
|
110
117
|
response = Openai::Client.images.create(request_body)
|
111
118
|
```
|
112
119
|
|
113
|
-
[API
|
120
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/images/create)
|
114
121
|
|
115
122
|
### Create an Image Edit
|
116
123
|
|
@@ -129,7 +136,7 @@ response = Openai::Client.images.edit(request_body)
|
|
129
136
|
- `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
137
|
- `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
138
|
|
132
|
-
[API
|
139
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/images/create-edit)
|
133
140
|
|
134
141
|
### Create an Image Variation
|
135
142
|
|
@@ -145,7 +152,7 @@ response = Openai::Client.images.variations(request_body)
|
|
145
152
|
|
146
153
|
- `image` - must be a valid PNG file, less than 4MB, and square.
|
147
154
|
|
148
|
-
[API
|
155
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/images/create-variation)
|
149
156
|
|
150
157
|
## OpenAI Embeddings API
|
151
158
|
|
@@ -157,7 +164,7 @@ request_body = {
|
|
157
164
|
Openai::Client.embeddings.create(request_body)
|
158
165
|
```
|
159
166
|
|
160
|
-
[API
|
167
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/embeddings/create)
|
161
168
|
|
162
169
|
## OpenAI Moderations API
|
163
170
|
|
@@ -169,7 +176,7 @@ request_body = {
|
|
169
176
|
Openai::Client.moderations.create(request_body)
|
170
177
|
```
|
171
178
|
|
172
|
-
[API
|
179
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/moderations/create)
|
173
180
|
|
174
181
|
## OpenAI Files API
|
175
182
|
|
@@ -179,7 +186,7 @@ Openai::Client.moderations.create(request_body)
|
|
179
186
|
Openai::Client.files.list
|
180
187
|
```
|
181
188
|
|
182
|
-
[API
|
189
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/files/list)
|
183
190
|
|
184
191
|
### Find File
|
185
192
|
|
@@ -187,7 +194,7 @@ Openai::Client.files.list
|
|
187
194
|
Openai::Client.files.find(file_id)
|
188
195
|
```
|
189
196
|
|
190
|
-
[API
|
197
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/files/retrieve)
|
191
198
|
|
192
199
|
### Find File Content
|
193
200
|
|
@@ -195,7 +202,7 @@ Openai::Client.files.find(file_id)
|
|
195
202
|
Openai::Client.files.find_content(file_id)
|
196
203
|
```
|
197
204
|
|
198
|
-
[API
|
205
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/files/retrieve-content)
|
199
206
|
|
200
207
|
### Upload File
|
201
208
|
|
@@ -216,7 +223,7 @@ Example (file.jsonl):
|
|
216
223
|
...
|
217
224
|
```
|
218
225
|
|
219
|
-
[API
|
226
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/files/upload)
|
220
227
|
|
221
228
|
### Delete File
|
222
229
|
|
@@ -224,7 +231,64 @@ Example (file.jsonl):
|
|
224
231
|
Openai::Client.files.delete(file_id)
|
225
232
|
```
|
226
233
|
|
227
|
-
[API
|
234
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/files/delete)
|
235
|
+
|
236
|
+
## OpenAI Fine-Tunes API
|
237
|
+
|
238
|
+
### Create Fine-Tune
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
request_body = {
|
242
|
+
training_file: "file-XGinujblHPwGLSztz8cPS8XY"
|
243
|
+
}
|
244
|
+
|
245
|
+
Openai::Client.fine_tunes.create(request_body)
|
246
|
+
```
|
247
|
+
|
248
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/create)
|
249
|
+
|
250
|
+
### List Fine-Tunes
|
251
|
+
|
252
|
+
```ruby
|
253
|
+
Openai::Client.fine_tunes.list
|
254
|
+
```
|
255
|
+
|
256
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/list)
|
257
|
+
|
258
|
+
### Find Fine-Tune
|
259
|
+
|
260
|
+
```ruby
|
261
|
+
Openai::Client.fine_tunes.find(fine_tune_id)
|
262
|
+
```
|
263
|
+
|
264
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/retrieve)
|
265
|
+
|
266
|
+
### List Fine-Tune Events
|
267
|
+
|
268
|
+
```ruby
|
269
|
+
Openai::Client.fine_tunes.find_events(fine_tune_id)
|
270
|
+
```
|
271
|
+
|
272
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/events)
|
273
|
+
|
274
|
+
### Cancel Fine-Tune
|
275
|
+
|
276
|
+
```ruby
|
277
|
+
Openai::Client.fine_tunes.cancel(fine_tune_id)
|
278
|
+
```
|
279
|
+
|
280
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/cancel)
|
281
|
+
|
282
|
+
### Delete Fine-Tune Model
|
283
|
+
|
284
|
+
```ruby
|
285
|
+
Openai::Client.models.delete(model_id)
|
286
|
+
```
|
287
|
+
|
288
|
+
[API Documentation](https://platform.openai.com/docs/api-reference/fine-tunes/delete-model)
|
289
|
+
|
290
|
+
> - You must have the Owner role in your organization.
|
291
|
+
> - Make sure you provide the Model ID and not the Fine-Tune ID.
|
228
292
|
|
229
293
|
## Contributing
|
230
294
|
|
data/lib/openai/client/files.rb
CHANGED
@@ -46,7 +46,7 @@ module Openai
|
|
46
46
|
#
|
47
47
|
# @param [String] id file ID
|
48
48
|
#
|
49
|
-
# @return [Hash] found file
|
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
|
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
|
data/lib/openai/client/models.rb
CHANGED
@@ -20,12 +20,24 @@ module Openai
|
|
20
20
|
#
|
21
21
|
# @param [String] id model id
|
22
22
|
#
|
23
|
-
# @return [Hash] found model
|
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
|
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 = [
|
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
|
-
|
29
|
-
|
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,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openai-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ihor Tykhonenko
|
@@ -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
|