ruby-openai 2.1.0 → 2.2.0

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: 141a4b28c980797b7b04fd8434e03755341fdfbc542e7ba2425b8d467662ef34
4
- data.tar.gz: 934ed9a6b66897c370c8d5c8787d2508a95f55e695d312bab2c4227af5f820ca
3
+ metadata.gz: 6b9c4dc42598004908a840d7f014259502f876df499c2bcfc93170e4fc44f729
4
+ data.tar.gz: 4149a872b11219223412e9a1c8ce0e8f4c25706b75e30acb8c41ae80144cfd83
5
5
  SHA512:
6
- metadata.gz: f4bccb5f8b6ac3fc05ac592af972412a284dfb2aa4015657faa8358d7e00e060b508153413c8d8416e991886724e795a5c26125485ffec3181dcb2fd3d84e298
7
- data.tar.gz: 7a2138265ae5235d870d6ddae69acf016132c71bef8b5781d5854c6ad970396d3b466b59cd14f82891b11d81b8833483ccf757f899be71cbb9f12f6608aaffd8
6
+ metadata.gz: b2dbfdb269b5cee46758307b32ad149ed198a994aa79274d1790e12c13c5505e6b7a126647725d8169204bea69b16b82f37e42a69903e20af9d3f5f5b07f5b51
7
+ data.tar.gz: 5c75f720b3f329f4ef4d37ed7b768c7edc46b97de843687543e382b49db98fc0df730c3dbab068f05862e765be59a75c7efadc405f9864554db84246efe61ece
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
+ ## [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
+
8
15
  ## [2.1.0] - 2022-11-13
9
16
 
10
17
  ### Added
data/Gemfile CHANGED
@@ -6,6 +6,6 @@ gemspec
6
6
  gem "byebug", "~> 11.1.3"
7
7
  gem "rake", "~> 13.0"
8
8
  gem "rspec", "~> 3.12"
9
- gem "rubocop", "~> 1.38.0"
9
+ gem "rubocop", "~> 1.40.0"
10
10
  gem "vcr", "~> 6.1.0"
11
11
  gem "webmock", "~> 3.18.1"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-openai (2.1.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,18 +20,18 @@ GEM
20
20
  httparty (0.20.0)
21
21
  mime-types (~> 3.0)
22
22
  multi_xml (>= 0.5.2)
23
- json (2.6.2)
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.2.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.0)
34
+ regexp_parser (2.6.1)
35
35
  rexml (3.2.5)
36
36
  rspec (3.12.0)
37
37
  rspec-core (~> 3.12.0)
@@ -46,7 +46,7 @@ GEM
46
46
  diff-lcs (>= 1.2.0, < 2.0)
47
47
  rspec-support (~> 3.12.0)
48
48
  rspec-support (3.12.0)
49
- rubocop (1.38.0)
49
+ rubocop (1.40.0)
50
50
  json (~> 2.3)
51
51
  parallel (~> 1.10)
52
52
  parser (>= 3.1.2.1)
@@ -56,7 +56,7 @@ GEM
56
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.23.0)
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)
@@ -73,7 +73,7 @@ DEPENDENCIES
73
73
  byebug (~> 11.1.3)
74
74
  rake (~> 13.0)
75
75
  rspec (~> 3.12)
76
- rubocop (~> 1.38.0)
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 key to your .env file:
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(access_token: "access_token_goes_here")
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
@@ -200,7 +205,7 @@ Generate an image using DALL·E!
200
205
 
201
206
  ```ruby
202
207
  response = client.images.generate(parameters: { prompt: "A baby sea otter cooking pasta wearing a hat of some sort" })
203
- puts response.dig("data", 0, "url") }
208
+ puts response.dig("data", 0, "url")
204
209
  => "https://oaidalleapiprodscus.blob.core.windows.net/private/org-Rf437IxKhh..."
205
210
  ```
206
211
 
@@ -276,7 +281,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
276
281
 
277
282
  ## Contributing
278
283
 
279
- 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).
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).
280
285
 
281
286
  ## License
282
287
 
@@ -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,23 +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)
55
58
  end
56
59
 
57
60
  def images
58
- @images ||= OpenAI::Images.new(access_token: @access_token)
61
+ @images ||= OpenAI::Images.new(access_token: @access_token, organization_id: @organization_id)
59
62
  end
60
63
 
61
64
  def models
62
- @models ||= OpenAI::Models.new(access_token: @access_token)
65
+ @models ||= OpenAI::Models.new(access_token: @access_token, organization_id: @organization_id)
63
66
  end
64
67
 
65
68
  def moderations(version: default_version, parameters: {})
@@ -101,7 +104,8 @@ module OpenAI
101
104
  url,
102
105
  headers: {
103
106
  "Content-Type" => "application/json",
104
- "Authorization" => "Bearer #{@access_token}"
107
+ "Authorization" => "Bearer #{@access_token}",
108
+ "OpenAI-Organization" => @organization_id
105
109
  },
106
110
  body: parameters.to_json
107
111
  )
@@ -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
@@ -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
@@ -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 generate(version: default_version, parameters: {})
@@ -12,7 +13,8 @@ module OpenAI
12
13
  "/#{version}/images/generations",
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
  body: parameters.to_json
18
20
  )
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Ruby
2
2
  module OpenAI
3
- VERSION = "2.1.0".freeze
3
+ VERSION = "2.2.0".freeze
4
4
  end
5
5
  end
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.1.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-13 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv