ruby-openai 3.3.0 → 3.5.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: f31dd3158125262e5c187ee9503b21a9e9c0f423440c8da7a54e6abfaa932da3
4
- data.tar.gz: 1c80b95c3d6587c3ddf95145f970690bf83572ef24902b455d126e2205f42c0d
3
+ metadata.gz: dfe7d331fc5d5a16f74089b9395232cd1abf0d6b05bd78be4db91e1b65d71a4c
4
+ data.tar.gz: 610d363ebf1d6a53f015aeaf20cd551c1020731fd423ba4074ff3eb044239fa1
5
5
  SHA512:
6
- metadata.gz: 9c8e2185a4c2822a54aaeaaa6eca5034e01c2796010df65d4ac7688e70e19da7546e120a64eed8bd3bb30417be54492570a5713d2ba3b684778e508b053cc0d3
7
- data.tar.gz: d0d9a8aade92949b509882fe699809b659bc82ddf79ba54485f7d6e304abcfecf50e20dae18fa3df4bda5b41d364a6519f24d27e7177a64d773f7e408b644d23
6
+ metadata.gz: '08b25f159fc149ccd09034da891cf5e77c999964a6d06ea6d916c62ad3e4a9ba2b1aa73757b617c0152ca1760f386514da081e978a6ca9963706f3f385814b78'
7
+ data.tar.gz: 144bd11f3791fa818193eaab7d8eeb6b04c33f4b99342ca573acea76f0ffcef4604033daaea54b2ae43411abf84e572db97304f7195c08116a55fedd1524d2aa
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.5.0] - 2023-03-02
9
+
10
+ ### Added
11
+
12
+ - Add Client#transcribe and Client translate endpoints - Whisper over the wire! Thanks to [@Clemalfroy](https://github.com/Clemalfroy)
13
+
14
+ ## [3.4.0] - 2023-03-01
15
+
16
+ ### Added
17
+
18
+ - Add Client#chat endpoint - ChatGPT over the wire!
19
+
8
20
  ## [3.3.0] - 2023-02-15
9
21
 
10
22
  ### Changed
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.45.1"
10
+ gem "rubocop", "~> 1.46.0"
11
11
  gem "vcr", "~> 6.1.0"
12
12
  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 (3.3.0)
4
+ ruby-openai (3.5.0)
5
5
  httparty (>= 0.18.1)
6
6
 
7
7
  GEM
@@ -23,7 +23,7 @@ GEM
23
23
  mini_mime (1.1.2)
24
24
  multi_xml (0.6.0)
25
25
  parallel (1.22.1)
26
- parser (3.2.0.0)
26
+ parser (3.2.1.0)
27
27
  ast (~> 2.4.1)
28
28
  public_suffix (5.0.1)
29
29
  rainbow (3.1.1)
@@ -43,18 +43,18 @@ GEM
43
43
  diff-lcs (>= 1.2.0, < 2.0)
44
44
  rspec-support (~> 3.12.0)
45
45
  rspec-support (3.12.0)
46
- rubocop (1.45.1)
46
+ rubocop (1.46.0)
47
47
  json (~> 2.3)
48
48
  parallel (~> 1.10)
49
49
  parser (>= 3.2.0.0)
50
50
  rainbow (>= 2.2.2, < 4.0)
51
51
  regexp_parser (>= 1.8, < 3.0)
52
52
  rexml (>= 3.2.5, < 4.0)
53
- rubocop-ast (>= 1.24.1, < 2.0)
53
+ rubocop-ast (>= 1.26.0, < 2.0)
54
54
  ruby-progressbar (~> 1.7)
55
55
  unicode-display_width (>= 2.4.0, < 3.0)
56
- rubocop-ast (1.24.1)
57
- parser (>= 3.1.1.0)
56
+ rubocop-ast (1.26.0)
57
+ parser (>= 3.2.1.0)
58
58
  ruby-progressbar (1.11.0)
59
59
  unicode-display_width (2.4.2)
60
60
  vcr (6.1.0)
@@ -71,7 +71,7 @@ DEPENDENCIES
71
71
  dotenv (~> 2.8.1)
72
72
  rake (~> 13.0)
73
73
  rspec (~> 3.12)
74
- rubocop (~> 1.45.1)
74
+ rubocop (~> 1.46.0)
75
75
  ruby-openai!
76
76
  vcr (~> 6.1.0)
77
77
  webmock (~> 3.18.1)
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  Use the [OpenAI API](https://openai.com/blog/openai-api/) with Ruby! 🤖❤️
9
9
 
10
- Generate text with GPT-3, create images with DALL·E, or write code with Codex...
10
+ Generate text with ChatGPT, transcribe or translate audio with Whisper, create images with DALL·E, or write code with Codex...
11
11
 
12
12
  ## Installation
13
13
 
@@ -89,9 +89,24 @@ There are different models that can be used to generate text. For a full list an
89
89
  - code-davinci-002
90
90
  - code-cushman-001
91
91
 
92
+ ### ChatGPT
93
+
94
+ ChatGPT is a model that can be used to generate text in a conversational style. You can use it to generate a response to a sequence of [messages](https://platform.openai.com/docs/guides/chat/introduction):
95
+
96
+ ```ruby
97
+ response = client.chat(
98
+ parameters: {
99
+ model: "gpt-3.5-turbo",
100
+ messages: [{ role: "user", content: "Hello!"}],
101
+ })
102
+ puts response.dig("choices", 0, "message", "content")
103
+ => "Hello! How may I assist you today?"
104
+
105
+ ```
106
+
92
107
  ### Completions
93
108
 
94
- Hit the OpenAI API for a completion:
109
+ Hit the OpenAI API for a completion using other GPT-3 models:
95
110
 
96
111
  ```ruby
97
112
  response = client.completions(
@@ -252,6 +267,38 @@ Pass a string to check if it violates OpenAI's Content Policy:
252
267
  => 5.505014632944949e-05
253
268
  ```
254
269
 
270
+ ### Whisper
271
+
272
+ Whisper is a speech to text model that can be used to generate text based on an audio files:
273
+
274
+ #### Translate
275
+
276
+ The translations API takes as input the audio file in any of the supported languages and transcribes the audio into English.
277
+
278
+ ```ruby
279
+ response = client.translate(
280
+ parameters: {
281
+ model: "whisper-1",
282
+ file: File.open('path_to_file'),
283
+ })
284
+ puts response.parsed_body['text']
285
+ => "Translation of the text"
286
+ ```
287
+
288
+ #### Transcribe
289
+
290
+ The transcriptions API takes as input the audio file you want to transcribe and returns the text in the desired output file format.
291
+
292
+ ```ruby
293
+ response = client.transcribe(
294
+ parameters: {
295
+ model: "whisper-1",
296
+ file: File.open('path_to_file'),
297
+ })
298
+ puts response.parsed_body['text']
299
+ => "Transcription of the text"
300
+ ```
301
+
255
302
  ## Development
256
303
 
257
304
  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.
data/lib/openai/client.rb CHANGED
@@ -7,6 +7,10 @@ module OpenAI
7
7
  OpenAI.configuration.organization_id = organization_id if organization_id
8
8
  end
9
9
 
10
+ def chat(parameters: {})
11
+ OpenAI::Client.json_post(path: "/chat/completions", parameters: parameters)
12
+ end
13
+
10
14
  def completions(parameters: {})
11
15
  OpenAI::Client.json_post(path: "/completions", parameters: parameters)
12
16
  end
@@ -39,6 +43,14 @@ module OpenAI
39
43
  OpenAI::Client.json_post(path: "/moderations", parameters: parameters)
40
44
  end
41
45
 
46
+ def transcribe(parameters: {})
47
+ OpenAI::Client.multipart_post(path: "/audio/transcriptions", parameters: parameters)
48
+ end
49
+
50
+ def translate(parameters: {})
51
+ OpenAI::Client.multipart_post(path: "/audio/translations", parameters: parameters)
52
+ end
53
+
42
54
  def self.get(path:)
43
55
  HTTParty.get(
44
56
  uri(path: path),
@@ -1,3 +1,3 @@
1
1
  module OpenAI
2
- VERSION = "3.3.0".freeze
2
+ VERSION = "3.5.0".freeze
3
3
  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.3.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-15 00:00:00.000000000 Z
11
+ date: 2023-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.18.1
27
- description:
27
+ description:
28
28
  email:
29
29
  - alexrudall@users.noreply.github.com
30
30
  executables: []
@@ -85,8 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubygems_version: 3.4.5
89
- signing_key:
88
+ rubygems_version: 3.4.6
89
+ signing_key:
90
90
  specification_version: 4
91
91
  summary: A Ruby gem for the OpenAI GPT-3 API
92
92
  test_files: []