ruby-openai 2.0.1 → 2.2.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/CHANGELOG.md +13 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/README.md +22 -5
- data/lib/ruby/openai/client.rb +14 -6
- data/lib/ruby/openai/engines.rb +6 -3
- data/lib/ruby/openai/files.rb +10 -5
- data/lib/ruby/openai/finetunes.rb +12 -6
- data/lib/ruby/openai/images.rb +29 -0
- data/lib/ruby/openai/models.rb +6 -3
- data/lib/ruby/openai/version.rb +1 -1
- data/lib/ruby/openai.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b9c4dc42598004908a840d7f014259502f876df499c2bcfc93170e4fc44f729
|
|
4
|
+
data.tar.gz: 4149a872b11219223412e9a1c8ce0e8f4c25706b75e30acb8c41ae80144cfd83
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2dbfdb269b5cee46758307b32ad149ed198a994aa79274d1790e12c13c5505e6b7a126647725d8169204bea69b16b82f37e42a69903e20af9d3f5f5b07f5b51
|
|
7
|
+
data.tar.gz: 5c75f720b3f329f4ef4d37ed7b768c7edc46b97de843687543e382b49db98fc0df730c3dbab068f05862e765be59a75c7efadc405f9864554db84246efe61ece
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ 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
|
+
## [2.2.0] - 2022-12-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add Organization ID to headers so users can charge credits to the correct organization.
|
|
13
|
+
- Thanks [@mridul911](https://github.com/mridul911) for raising this and [@maks112v](https://github.com/maks112v) for adding it!
|
|
14
|
+
|
|
15
|
+
## [2.1.0] - 2022-11-13
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Add Images#generate endpoint to generate images with DALL·E!
|
|
20
|
+
|
|
8
21
|
## [2.0.1] - 2022-10-22
|
|
9
22
|
|
|
10
23
|
### Removed
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ruby-openai (2.0
|
|
4
|
+
ruby-openai (2.2.0)
|
|
5
5
|
dotenv (>= 2.7.6, < 2.9.0)
|
|
6
6
|
httparty (>= 0.18.1, < 0.21.0)
|
|
7
7
|
|
|
@@ -20,43 +20,43 @@ GEM
|
|
|
20
20
|
httparty (0.20.0)
|
|
21
21
|
mime-types (~> 3.0)
|
|
22
22
|
multi_xml (>= 0.5.2)
|
|
23
|
-
json (2.6.
|
|
23
|
+
json (2.6.3)
|
|
24
24
|
mime-types (3.4.1)
|
|
25
25
|
mime-types-data (~> 3.2015)
|
|
26
26
|
mime-types-data (3.2022.0105)
|
|
27
27
|
multi_xml (0.6.0)
|
|
28
28
|
parallel (1.22.1)
|
|
29
|
-
parser (3.1.
|
|
29
|
+
parser (3.1.3.0)
|
|
30
30
|
ast (~> 2.4.1)
|
|
31
31
|
public_suffix (4.0.7)
|
|
32
32
|
rainbow (3.1.1)
|
|
33
33
|
rake (13.0.6)
|
|
34
|
-
regexp_parser (2.6.
|
|
34
|
+
regexp_parser (2.6.1)
|
|
35
35
|
rexml (3.2.5)
|
|
36
|
-
rspec (3.
|
|
37
|
-
rspec-core (~> 3.
|
|
38
|
-
rspec-expectations (~> 3.
|
|
39
|
-
rspec-mocks (~> 3.
|
|
40
|
-
rspec-core (3.
|
|
41
|
-
rspec-support (~> 3.
|
|
42
|
-
rspec-expectations (3.
|
|
36
|
+
rspec (3.12.0)
|
|
37
|
+
rspec-core (~> 3.12.0)
|
|
38
|
+
rspec-expectations (~> 3.12.0)
|
|
39
|
+
rspec-mocks (~> 3.12.0)
|
|
40
|
+
rspec-core (3.12.0)
|
|
41
|
+
rspec-support (~> 3.12.0)
|
|
42
|
+
rspec-expectations (3.12.0)
|
|
43
43
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
44
|
-
rspec-support (~> 3.
|
|
45
|
-
rspec-mocks (3.
|
|
44
|
+
rspec-support (~> 3.12.0)
|
|
45
|
+
rspec-mocks (3.12.0)
|
|
46
46
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
47
|
-
rspec-support (~> 3.
|
|
48
|
-
rspec-support (3.
|
|
49
|
-
rubocop (1.
|
|
47
|
+
rspec-support (~> 3.12.0)
|
|
48
|
+
rspec-support (3.12.0)
|
|
49
|
+
rubocop (1.40.0)
|
|
50
50
|
json (~> 2.3)
|
|
51
51
|
parallel (~> 1.10)
|
|
52
52
|
parser (>= 3.1.2.1)
|
|
53
53
|
rainbow (>= 2.2.2, < 4.0)
|
|
54
54
|
regexp_parser (>= 1.8, < 3.0)
|
|
55
55
|
rexml (>= 3.2.5, < 4.0)
|
|
56
|
-
rubocop-ast (>= 1.
|
|
56
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
|
57
57
|
ruby-progressbar (~> 1.7)
|
|
58
58
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
59
|
-
rubocop-ast (1.
|
|
59
|
+
rubocop-ast (1.24.0)
|
|
60
60
|
parser (>= 3.1.1.0)
|
|
61
61
|
ruby-progressbar (1.11.0)
|
|
62
62
|
unicode-display_width (2.3.0)
|
|
@@ -72,8 +72,8 @@ PLATFORMS
|
|
|
72
72
|
DEPENDENCIES
|
|
73
73
|
byebug (~> 11.1.3)
|
|
74
74
|
rake (~> 13.0)
|
|
75
|
-
rspec (~> 3.
|
|
76
|
-
rubocop (~> 1.
|
|
75
|
+
rspec (~> 3.12)
|
|
76
|
+
rubocop (~> 1.40.0)
|
|
77
77
|
ruby-openai!
|
|
78
78
|
vcr (~> 6.1.0)
|
|
79
79
|
webmock (~> 3.18.1)
|
data/README.md
CHANGED
|
@@ -35,14 +35,16 @@ and require with:
|
|
|
35
35
|
|
|
36
36
|
## Usage
|
|
37
37
|
|
|
38
|
-
Get your API key from [https://beta.openai.com/account/api-keys](https://beta.openai.com/account/api-keys)
|
|
38
|
+
- Get your API key from [https://beta.openai.com/account/api-keys](https://beta.openai.com/account/api-keys)
|
|
39
|
+
- If you belong to multiple organizations, you can get your Organization ID from [https://beta.openai.com/account/org-settings](https://beta.openai.com/account/org-settings)
|
|
39
40
|
|
|
40
41
|
### With dotenv
|
|
41
42
|
|
|
42
|
-
If you're using [dotenv](https://github.com/motdotla/dotenv), you can add your secret
|
|
43
|
+
If you're using [dotenv](https://github.com/motdotla/dotenv), you can add your secret keys to your .env file:
|
|
43
44
|
|
|
44
45
|
```
|
|
45
46
|
OPENAI_ACCESS_TOKEN=access_token_goes_here
|
|
47
|
+
OPENAI_ORGANIZATION_ID=organization_id_goes_here # Optional.
|
|
46
48
|
```
|
|
47
49
|
|
|
48
50
|
And create a client:
|
|
@@ -56,7 +58,10 @@ And create a client:
|
|
|
56
58
|
Alternatively you can pass your key directly to a new client:
|
|
57
59
|
|
|
58
60
|
```ruby
|
|
59
|
-
client = OpenAI::Client.new(
|
|
61
|
+
client = OpenAI::Client.new(
|
|
62
|
+
access_token: "access_token_goes_here",
|
|
63
|
+
organization_id: "organization_id_goes_here"
|
|
64
|
+
)
|
|
60
65
|
```
|
|
61
66
|
|
|
62
67
|
### Models
|
|
@@ -194,6 +199,18 @@ This fine-tuned model name can then be used in classifications:
|
|
|
194
199
|
JSON.parse(response.body)["choices"].map { |c| c["text"] }
|
|
195
200
|
```
|
|
196
201
|
|
|
202
|
+
### Images
|
|
203
|
+
|
|
204
|
+
Generate an image using DALL·E!
|
|
205
|
+
|
|
206
|
+
```ruby
|
|
207
|
+
response = client.images.generate(parameters: { prompt: "A baby sea otter cooking pasta wearing a hat of some sort" })
|
|
208
|
+
puts response.dig("data", 0, "url")
|
|
209
|
+
=> "https://oaidalleapiprodscus.blob.core.windows.net/private/org-Rf437IxKhh..."
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+

|
|
213
|
+
|
|
197
214
|
### Moderations
|
|
198
215
|
|
|
199
216
|
Pass a string to check if it violates OpenAI's Content Policy:
|
|
@@ -260,11 +277,11 @@ Or use the ID of a file you've uploaded:
|
|
|
260
277
|
|
|
261
278
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
262
279
|
|
|
263
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, update `CHANGELOG.md`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
280
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, update `CHANGELOG.md`, run `bundle install` to update Gemfile.lock, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
264
281
|
|
|
265
282
|
## Contributing
|
|
266
283
|
|
|
267
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/alexrudall/ruby-openai
|
|
284
|
+
Bug reports and pull requests are welcome on GitHub at <https://github.com/alexrudall/ruby-openai>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/alexrudall/ruby-openai/blob/main/CODE_OF_CONDUCT.md).
|
|
268
285
|
|
|
269
286
|
## License
|
|
270
287
|
|
data/lib/ruby/openai/client.rb
CHANGED
|
@@ -3,8 +3,9 @@ module OpenAI
|
|
|
3
3
|
include HTTParty
|
|
4
4
|
base_uri "https://api.openai.com"
|
|
5
5
|
|
|
6
|
-
def initialize(access_token: nil)
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
7
|
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def answers(version: default_version, parameters: {})
|
|
@@ -43,19 +44,25 @@ module OpenAI
|
|
|
43
44
|
warn "[DEPRECATION WARNING] [ruby-openai] `Client#engines` is deprecated and will
|
|
44
45
|
be removed from ruby-openai v3.0. Use `Client#models` instead."
|
|
45
46
|
|
|
46
|
-
@engines ||= OpenAI::Engines.new(access_token: @access_token
|
|
47
|
+
@engines ||= OpenAI::Engines.new(access_token: @access_token,
|
|
48
|
+
organization_id: @organization_id)
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
def files
|
|
50
|
-
@files ||= OpenAI::Files.new(access_token: @access_token)
|
|
52
|
+
@files ||= OpenAI::Files.new(access_token: @access_token, organization_id: @organization_id)
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
def finetunes
|
|
54
|
-
@finetunes ||= OpenAI::Finetunes.new(access_token: @access_token
|
|
56
|
+
@finetunes ||= OpenAI::Finetunes.new(access_token: @access_token,
|
|
57
|
+
organization_id: @organization_id)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def images
|
|
61
|
+
@images ||= OpenAI::Images.new(access_token: @access_token, organization_id: @organization_id)
|
|
55
62
|
end
|
|
56
63
|
|
|
57
64
|
def models
|
|
58
|
-
@models ||= OpenAI::Models.new(access_token: @access_token)
|
|
65
|
+
@models ||= OpenAI::Models.new(access_token: @access_token, organization_id: @organization_id)
|
|
59
66
|
end
|
|
60
67
|
|
|
61
68
|
def moderations(version: default_version, parameters: {})
|
|
@@ -97,7 +104,8 @@ module OpenAI
|
|
|
97
104
|
url,
|
|
98
105
|
headers: {
|
|
99
106
|
"Content-Type" => "application/json",
|
|
100
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
107
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
108
|
+
"OpenAI-Organization" => @organization_id
|
|
101
109
|
},
|
|
102
110
|
body: parameters.to_json
|
|
103
111
|
)
|
data/lib/ruby/openai/engines.rb
CHANGED
|
@@ -3,8 +3,9 @@ module OpenAI
|
|
|
3
3
|
include HTTParty
|
|
4
4
|
base_uri "https://api.openai.com"
|
|
5
5
|
|
|
6
|
-
def initialize(access_token: nil)
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
7
|
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def list(version: default_version)
|
|
@@ -12,7 +13,8 @@ module OpenAI
|
|
|
12
13
|
"/#{version}/engines",
|
|
13
14
|
headers: {
|
|
14
15
|
"Content-Type" => "application/json",
|
|
15
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
16
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
17
|
+
"OpenAI-Organization" => @organization_id
|
|
16
18
|
}
|
|
17
19
|
)
|
|
18
20
|
end
|
|
@@ -22,7 +24,8 @@ module OpenAI
|
|
|
22
24
|
"/#{version}/engines/#{id}",
|
|
23
25
|
headers: {
|
|
24
26
|
"Content-Type" => "application/json",
|
|
25
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
27
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
28
|
+
"OpenAI-Organization" => @organization_id
|
|
26
29
|
}
|
|
27
30
|
)
|
|
28
31
|
end
|
data/lib/ruby/openai/files.rb
CHANGED
|
@@ -3,8 +3,9 @@ module OpenAI
|
|
|
3
3
|
include HTTParty
|
|
4
4
|
base_uri "https://api.openai.com"
|
|
5
5
|
|
|
6
|
-
def initialize(access_token: nil)
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
7
|
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def list(version: default_version)
|
|
@@ -12,7 +13,8 @@ module OpenAI
|
|
|
12
13
|
"/#{version}/files",
|
|
13
14
|
headers: {
|
|
14
15
|
"Content-Type" => "application/json",
|
|
15
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
16
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
17
|
+
"OpenAI-Organization" => @organization_id
|
|
16
18
|
}
|
|
17
19
|
)
|
|
18
20
|
end
|
|
@@ -24,7 +26,8 @@ module OpenAI
|
|
|
24
26
|
"/#{version}/files",
|
|
25
27
|
headers: {
|
|
26
28
|
"Content-Type" => "application/json",
|
|
27
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
29
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
30
|
+
"OpenAI-Organization" => @organization_id
|
|
28
31
|
},
|
|
29
32
|
body: parameters.merge(file: File.open(parameters[:file]))
|
|
30
33
|
)
|
|
@@ -35,7 +38,8 @@ module OpenAI
|
|
|
35
38
|
"/#{version}/files/#{id}",
|
|
36
39
|
headers: {
|
|
37
40
|
"Content-Type" => "application/json",
|
|
38
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
41
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
42
|
+
"OpenAI-Organization" => @organization_id
|
|
39
43
|
}
|
|
40
44
|
)
|
|
41
45
|
end
|
|
@@ -45,7 +49,8 @@ module OpenAI
|
|
|
45
49
|
"/#{version}/files/#{id}",
|
|
46
50
|
headers: {
|
|
47
51
|
"Content-Type" => "application/json",
|
|
48
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
52
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
53
|
+
"OpenAI-Organization" => @organization_id
|
|
49
54
|
}
|
|
50
55
|
)
|
|
51
56
|
end
|
|
@@ -3,8 +3,9 @@ module OpenAI
|
|
|
3
3
|
include HTTParty
|
|
4
4
|
base_uri "https://api.openai.com"
|
|
5
5
|
|
|
6
|
-
def initialize(access_token: nil)
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
7
|
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def list(version: default_version)
|
|
@@ -12,7 +13,8 @@ module OpenAI
|
|
|
12
13
|
"/#{version}/fine-tunes",
|
|
13
14
|
headers: {
|
|
14
15
|
"Content-Type" => "application/json",
|
|
15
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
16
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
17
|
+
"OpenAI-Organization" => @organization_id
|
|
16
18
|
}
|
|
17
19
|
)
|
|
18
20
|
end
|
|
@@ -22,7 +24,8 @@ module OpenAI
|
|
|
22
24
|
"/#{version}/fine-tunes",
|
|
23
25
|
headers: {
|
|
24
26
|
"Content-Type" => "application/json",
|
|
25
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
27
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
28
|
+
"OpenAI-Organization" => @organization_id
|
|
26
29
|
},
|
|
27
30
|
body: parameters.to_json
|
|
28
31
|
)
|
|
@@ -33,7 +36,8 @@ module OpenAI
|
|
|
33
36
|
"/#{version}/fine-tunes/#{id}",
|
|
34
37
|
headers: {
|
|
35
38
|
"Content-Type" => "application/json",
|
|
36
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
39
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
40
|
+
"OpenAI-Organization" => @organization_id
|
|
37
41
|
}
|
|
38
42
|
)
|
|
39
43
|
end
|
|
@@ -43,7 +47,8 @@ module OpenAI
|
|
|
43
47
|
"/#{version}/fine-tunes/#{id}/cancel",
|
|
44
48
|
headers: {
|
|
45
49
|
"Content-Type" => "application/json",
|
|
46
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
50
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
51
|
+
"OpenAI-Organization" => @organization_id
|
|
47
52
|
}
|
|
48
53
|
)
|
|
49
54
|
end
|
|
@@ -53,7 +58,8 @@ module OpenAI
|
|
|
53
58
|
"/#{version}/fine-tunes/#{id}/events",
|
|
54
59
|
headers: {
|
|
55
60
|
"Content-Type" => "application/json",
|
|
56
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
61
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
62
|
+
"OpenAI-Organization" => @organization_id
|
|
57
63
|
}
|
|
58
64
|
)
|
|
59
65
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module OpenAI
|
|
2
|
+
class Images
|
|
3
|
+
include HTTParty
|
|
4
|
+
base_uri "https://api.openai.com"
|
|
5
|
+
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
|
+
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def generate(version: default_version, parameters: {})
|
|
12
|
+
self.class.post(
|
|
13
|
+
"/#{version}/images/generations",
|
|
14
|
+
headers: {
|
|
15
|
+
"Content-Type" => "application/json",
|
|
16
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
17
|
+
"OpenAI-Organization" => @organization_id
|
|
18
|
+
},
|
|
19
|
+
body: parameters.to_json
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def default_version
|
|
26
|
+
"v1".freeze
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
data/lib/ruby/openai/models.rb
CHANGED
|
@@ -3,8 +3,9 @@ module OpenAI
|
|
|
3
3
|
include HTTParty
|
|
4
4
|
base_uri "https://api.openai.com"
|
|
5
5
|
|
|
6
|
-
def initialize(access_token: nil)
|
|
6
|
+
def initialize(access_token: nil, organization_id: nil)
|
|
7
7
|
@access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
|
|
8
|
+
@organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def list(version: default_version)
|
|
@@ -12,7 +13,8 @@ module OpenAI
|
|
|
12
13
|
"/#{version}/models",
|
|
13
14
|
headers: {
|
|
14
15
|
"Content-Type" => "application/json",
|
|
15
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
16
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
17
|
+
"OpenAI-Organization" => @organization_id
|
|
16
18
|
}
|
|
17
19
|
)
|
|
18
20
|
end
|
|
@@ -22,7 +24,8 @@ module OpenAI
|
|
|
22
24
|
"/#{version}/models/#{id}",
|
|
23
25
|
headers: {
|
|
24
26
|
"Content-Type" => "application/json",
|
|
25
|
-
"Authorization" => "Bearer #{@access_token}"
|
|
27
|
+
"Authorization" => "Bearer #{@access_token}",
|
|
28
|
+
"OpenAI-Organization" => @organization_id
|
|
26
29
|
}
|
|
27
30
|
)
|
|
28
31
|
end
|
data/lib/ruby/openai/version.rb
CHANGED
data/lib/ruby/openai.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-openai
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-12-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dotenv
|
|
@@ -80,6 +80,7 @@ files:
|
|
|
80
80
|
- lib/ruby/openai/engines.rb
|
|
81
81
|
- lib/ruby/openai/files.rb
|
|
82
82
|
- lib/ruby/openai/finetunes.rb
|
|
83
|
+
- lib/ruby/openai/images.rb
|
|
83
84
|
- lib/ruby/openai/models.rb
|
|
84
85
|
- lib/ruby/openai/version.rb
|
|
85
86
|
- pull_request_template.md
|