ruby-openai 3.0.2 → 3.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73d5bf4fb81e5c4901998a20fcebc52a0f2c81edc12e7e8abac06a2171dd5c6e
4
- data.tar.gz: 4775fd5959d4c5949cec0a02212a73ddc2b3af8cde3f1f9d996bcd3c71031c62
3
+ metadata.gz: 3bd89bdf882febca95eb2a6ca2d0d28afda7fa0d73a369ee61cb56038376247c
4
+ data.tar.gz: 5e9ee20773b1322dc940655ed3cbd040a667f27337f0a310bb6bbd9db8df2931
5
5
  SHA512:
6
- metadata.gz: 1a8d81ddbb8e2542f968549ef4014600c7cd6fff78404501a7d72d322d823651842e0b0f1aaf96238d5a2ea870eda7e626c53652e21aba105703b062c746487c
7
- data.tar.gz: 3ff7ba70a3fc55b2e9e56144a221ac485e3d3c2854980a3b340aeffc4c0a544bed8a2506d7c71f387403482eb4c8565f4a6705dad582f47ea726593d4c82a135
6
+ metadata.gz: 40388adbfd46c7461f56d088dbc346206b1e44d27f32cfef766544dce0d76843723d10c4d050ed2564d8f940fc1daa0631084c412d10f75c7ee185f5cffbec43
7
+ data.tar.gz: a94573f8cfd2cd0a488746a1971e72a678d0761732c586c7d2d9ee4c74f7496d2a214d9c09b90371dc9cd86da6ddf64d58d91ff3bbb9c7eba70bb8f462e78e5c
data/.circleci/config.yml CHANGED
@@ -42,3 +42,4 @@ workflows:
42
42
  - cimg/ruby:2.7-node
43
43
  - cimg/ruby:3.0-node
44
44
  - cimg/ruby:3.1-node
45
+ - cimg/ruby:3.2-node
data/CHANGELOG.md CHANGED
@@ -5,6 +5,18 @@ 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
+ ## [3.0.3] - 2023-01-07
9
+
10
+ ### Added
11
+
12
+ - Add ability to run the specs without VCR cassettes using `NO_VCR=true bundle exec rspec`.
13
+ - Add Ruby 3.2 to CircleCI config - thanks [@petergoldstein](https://github.com/petergoldstein)!
14
+ - A bit of detail added to the README on DALLE image sizes - thanks [@ndemianc](https://github.com/ndemianc)!
15
+
16
+ ### Fixed
17
+
18
+ - Fix finetunes and files uploads endpoints - thanks [@chaadow](https://github.com/chaadow) for your PR on this and [@petergoldstein](https://github.com/petergoldstein) for the PR we ultimately went with.
19
+
8
20
  ## [3.0.2] - 2022-12-27
9
21
 
10
22
  ### Fixed
data/Gemfile CHANGED
@@ -7,6 +7,6 @@ gem "byebug", "~> 11.1.3"
7
7
  gem "dotenv", "~> 2.8.1"
8
8
  gem "rake", "~> 13.0"
9
9
  gem "rspec", "~> 3.12"
10
- gem "rubocop", "~> 1.41.1"
10
+ gem "rubocop", "~> 1.42.0"
11
11
  gem "vcr", "~> 6.1.0"
12
12
  gem "webmock", "~> 3.18.1"
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-openai (3.0.2)
5
- httparty (>= 0.18.1, < 0.21.0)
4
+ ruby-openai (3.0.3)
5
+ httparty (>= 0.18.1, < 0.22.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- addressable (2.8.0)
11
- public_suffix (>= 2.0.2, < 5.0)
10
+ addressable (2.8.1)
11
+ public_suffix (>= 2.0.2, < 6.0)
12
12
  ast (2.4.2)
13
13
  byebug (11.1.3)
14
14
  crack (0.4.5)
@@ -16,18 +16,16 @@ GEM
16
16
  diff-lcs (1.5.0)
17
17
  dotenv (2.8.1)
18
18
  hashdiff (1.0.1)
19
- httparty (0.20.0)
20
- mime-types (~> 3.0)
19
+ httparty (0.21.0)
20
+ mini_mime (>= 1.0.0)
21
21
  multi_xml (>= 0.5.2)
22
22
  json (2.6.3)
23
- mime-types (3.4.1)
24
- mime-types-data (~> 3.2015)
25
- mime-types-data (3.2022.0105)
23
+ mini_mime (1.1.2)
26
24
  multi_xml (0.6.0)
27
25
  parallel (1.22.1)
28
26
  parser (3.1.3.0)
29
27
  ast (~> 2.4.1)
30
- public_suffix (4.0.7)
28
+ public_suffix (5.0.1)
31
29
  rainbow (3.1.1)
32
30
  rake (13.0.6)
33
31
  regexp_parser (2.6.1)
@@ -38,24 +36,24 @@ GEM
38
36
  rspec-mocks (~> 3.12.0)
39
37
  rspec-core (3.12.0)
40
38
  rspec-support (~> 3.12.0)
41
- rspec-expectations (3.12.0)
39
+ rspec-expectations (3.12.1)
42
40
  diff-lcs (>= 1.2.0, < 2.0)
43
41
  rspec-support (~> 3.12.0)
44
- rspec-mocks (3.12.0)
42
+ rspec-mocks (3.12.1)
45
43
  diff-lcs (>= 1.2.0, < 2.0)
46
44
  rspec-support (~> 3.12.0)
47
45
  rspec-support (3.12.0)
48
- rubocop (1.41.1)
46
+ rubocop (1.42.0)
49
47
  json (~> 2.3)
50
48
  parallel (~> 1.10)
51
49
  parser (>= 3.1.2.1)
52
50
  rainbow (>= 2.2.2, < 4.0)
53
51
  regexp_parser (>= 1.8, < 3.0)
54
52
  rexml (>= 3.2.5, < 4.0)
55
- rubocop-ast (>= 1.23.0, < 2.0)
53
+ rubocop-ast (>= 1.24.1, < 2.0)
56
54
  ruby-progressbar (~> 1.7)
57
55
  unicode-display_width (>= 1.4.0, < 3.0)
58
- rubocop-ast (1.24.0)
56
+ rubocop-ast (1.24.1)
59
57
  parser (>= 3.1.1.0)
60
58
  ruby-progressbar (1.11.0)
61
59
  unicode-display_width (2.3.0)
@@ -73,7 +71,7 @@ DEPENDENCIES
73
71
  dotenv (~> 2.8.1)
74
72
  rake (~> 13.0)
75
73
  rspec (~> 3.12)
76
- rubocop (~> 1.41.1)
74
+ rubocop (~> 1.42.0)
77
75
  ruby-openai!
78
76
  vcr (~> 6.1.0)
79
77
  webmock (~> 3.18.1)
data/README.md CHANGED
@@ -202,10 +202,11 @@ This fine-tuned model name can then be used in completions:
202
202
 
203
203
  ### Image Generation
204
204
 
205
- Generate an image using DALL·E!
205
+ Generate an image using DALL·E! The size of any generated images must be one of `256x256`, `512x512` or `1024x1024` -
206
+ if not specified the image will default to `1024x1024`.
206
207
 
207
208
  ```ruby
208
- response = client.images.generate(parameters: { prompt: "A baby sea otter cooking pasta wearing a hat of some sort" })
209
+ response = client.images.generate(parameters: { prompt: "A baby sea otter cooking pasta wearing a hat of some sort", size: "256x256" })
209
210
  puts response.dig("data", 0, "url")
210
211
  => "https://oaidalleapiprodscus.blob.core.windows.net/private/org-Rf437IxKhh..."
211
212
  ```
@@ -249,9 +250,19 @@ Pass a string to check if it violates OpenAI's Content Policy:
249
250
 
250
251
  ## Development
251
252
 
252
- 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.
253
+ After checking out the repo, run `bin/setup` to install dependencies. You can run `bin/console` for an interactive prompt that will allow you to experiment.
253
254
 
254
- 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).
255
+ To install this gem onto your local machine, run `bundle exec rake install`.
256
+
257
+ ## Release
258
+
259
+ First run the specs without VCR so they actually hit the API. This will cost about 2 cents. You'll need to add your `OPENAI_ACCESS_TOKEN=` in `.env`.
260
+
261
+ ```
262
+ NO_VCR=true bundle exec rspec
263
+ ```
264
+
265
+ Then 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).
255
266
 
256
267
  ## Contributing
257
268
 
@@ -8,15 +8,15 @@ module OpenAI
8
8
  end
9
9
 
10
10
  def completions(parameters: {})
11
- OpenAI::Client.post(path: "/completions", parameters: parameters)
11
+ OpenAI::Client.json_post(path: "/completions", parameters: parameters)
12
12
  end
13
13
 
14
14
  def edits(parameters: {})
15
- OpenAI::Client.post(path: "/edits", parameters: parameters)
15
+ OpenAI::Client.json_post(path: "/edits", parameters: parameters)
16
16
  end
17
17
 
18
18
  def embeddings(parameters: {})
19
- OpenAI::Client.post(path: "/embeddings", parameters: parameters)
19
+ OpenAI::Client.json_post(path: "/embeddings", parameters: parameters)
20
20
  end
21
21
 
22
22
  def files
@@ -36,7 +36,7 @@ module OpenAI
36
36
  end
37
37
 
38
38
  def moderations(parameters: {})
39
- OpenAI::Client.post(path: "/moderations", parameters: parameters)
39
+ OpenAI::Client.json_post(path: "/moderations", parameters: parameters)
40
40
  end
41
41
 
42
42
  def self.get(path:)
@@ -46,11 +46,19 @@ module OpenAI
46
46
  )
47
47
  end
48
48
 
49
- def self.post(path:, parameters: nil)
49
+ def self.json_post(path:, parameters:)
50
50
  HTTParty.post(
51
51
  uri(path: path),
52
52
  headers: headers,
53
- body: parameters.to_json
53
+ body: parameters&.to_json
54
+ )
55
+ end
56
+
57
+ def self.multipart_post(path:, parameters: nil)
58
+ HTTParty.post(
59
+ uri(path: path),
60
+ headers: headers.merge({ "Content-Type" => "multipart/form-data" }),
61
+ body: parameters
54
62
  )
55
63
  end
56
64
 
@@ -12,7 +12,7 @@ module OpenAI
12
12
  def upload(parameters: {})
13
13
  validate(file: parameters[:file])
14
14
 
15
- OpenAI::Client.post(
15
+ OpenAI::Client.multipart_post(
16
16
  path: "/files",
17
17
  parameters: parameters.merge(file: File.open(parameters[:file]))
18
18
  )
@@ -10,7 +10,7 @@ module OpenAI
10
10
  end
11
11
 
12
12
  def create(parameters: {})
13
- OpenAI::Client.post(path: "/fine-tunes", parameters: parameters)
13
+ OpenAI::Client.json_post(path: "/fine-tunes", parameters: parameters)
14
14
  end
15
15
 
16
16
  def retrieve(id:)
@@ -18,7 +18,7 @@ module OpenAI
18
18
  end
19
19
 
20
20
  def cancel(id:)
21
- OpenAI::Client.post(path: "/fine-tunes/#{id}/cancel")
21
+ OpenAI::Client.multipart_post(path: "/fine-tunes/#{id}/cancel")
22
22
  end
23
23
 
24
24
  def events(id:)
@@ -6,15 +6,15 @@ module OpenAI
6
6
  end
7
7
 
8
8
  def generate(parameters: {})
9
- OpenAI::Client.post(path: "/images/generations", parameters: parameters)
9
+ OpenAI::Client.json_post(path: "/images/generations", parameters: parameters)
10
10
  end
11
11
 
12
12
  def edit(parameters: {})
13
- OpenAI::Client.post(path: "/images/edits", parameters: open_files(parameters))
13
+ OpenAI::Client.multipart_post(path: "/images/edits", parameters: open_files(parameters))
14
14
  end
15
15
 
16
16
  def variations(parameters: {})
17
- OpenAI::Client.post(path: "/images/variations", parameters: open_files(parameters))
17
+ OpenAI::Client.multipart_post(path: "/images/variations", parameters: open_files(parameters))
18
18
  end
19
19
 
20
20
  private
@@ -1,5 +1,5 @@
1
1
  module Ruby
2
2
  module OpenAI
3
- VERSION = "3.0.2".freeze
3
+ VERSION = "3.0.3".freeze
4
4
  end
5
5
  end
data/ruby-openai.gemspec CHANGED
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ["lib"]
27
27
 
28
- spec.add_dependency "httparty", ">= 0.18.1", "< 0.21.0"
28
+ spec.add_dependency "httparty", ">= 0.18.1", "< 0.22.0"
29
29
  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: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-27 00:00:00.000000000 Z
11
+ date: 2023-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 0.18.1
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.21.0
22
+ version: 0.22.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 0.18.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.21.0
32
+ version: 0.22.0
33
33
  description:
34
34
  email:
35
35
  - alexrudall@users.noreply.github.com
@@ -44,7 +44,6 @@ files:
44
44
  - ".gitignore"
45
45
  - ".rspec"
46
46
  - ".rubocop.yml"
47
- - ".travis.yml"
48
47
  - CHANGELOG.md
49
48
  - CODE_OF_CONDUCT.md
50
49
  - CONTRIBUTING.md
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7.1
6
- before_install: gem install bundler -v 2.1.4