ruby-openai 4.1.0 → 4.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 +6 -0
- data/Gemfile.lock +2 -2
- data/README.md +19 -1
- data/lib/openai/http.rb +15 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5654d4f5edeb9b912b06916b13c915d4a795e4ad64df4ae4be792ca562bdfd99
|
4
|
+
data.tar.gz: b3b6457c556d9a4355afe7da1c514fc6029df5dc20e56a893981ec5410d14eac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08e9e61ecc221384d0460ed5692ff5ac482e558219768402d05ed5b321e4aaf50ed94b26c8b938ae546da29db609b79f45439c0942f252f9059c6053a416f2dd'
|
7
|
+
data.tar.gz: ddd59e60920f73d230a068e4d25a98704ea3e39203c45f0b295837d42e72a16a1d4064772cb6da9be35c65fb512a29cc617d325e3646e3a3c677263693ab9725
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,12 @@ 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
|
+
## [4.2.0] - 2023-06-20
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- Add Azure OpenAI Service support. Thanks to [@rmachielse](https://github.com/rmachielse) and [@steffansluis](https://github.com/steffansluis) for the PR and to everyone who requested this feature!
|
13
|
+
|
8
14
|
## [4.1.0] - 2023-05-15
|
9
15
|
|
10
16
|
### Added
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-openai (4.
|
4
|
+
ruby-openai (4.2.0)
|
5
5
|
faraday (>= 1)
|
6
6
|
faraday-multipart (>= 1)
|
7
7
|
|
@@ -16,7 +16,7 @@ GEM
|
|
16
16
|
rexml
|
17
17
|
diff-lcs (1.5.0)
|
18
18
|
dotenv (2.8.1)
|
19
|
-
faraday (2.7.
|
19
|
+
faraday (2.7.6)
|
20
20
|
faraday-net_http (>= 2.0, < 3.1)
|
21
21
|
ruby2_keywords (>= 0.0.4)
|
22
22
|
faraday-multipart (1.0.4)
|
data/README.md
CHANGED
@@ -91,6 +91,21 @@ OpenAI.configure do |config|
|
|
91
91
|
end
|
92
92
|
```
|
93
93
|
|
94
|
+
### Azure
|
95
|
+
|
96
|
+
To use the [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/) API, you can configure the gem like this:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
OpenAI.configure do |config|
|
100
|
+
config.access_token = ENV.fetch("AZURE_OPENAI_API_KEY")
|
101
|
+
config.uri_base = ENV.fetch("AZURE_OPENAI_URI")
|
102
|
+
config.api_type = :azure
|
103
|
+
config.api_version = "2023-03-15-preview"
|
104
|
+
end
|
105
|
+
```
|
106
|
+
|
107
|
+
where `AZURE_OPENAI_URI` is e.g. `https://custom-domain.openai.azure.com/openai/deployments/gpt-35-turbo`
|
108
|
+
|
94
109
|
### Models
|
95
110
|
|
96
111
|
There are different models that can be used to generate text. For a full list and to retrieve information about a single model:
|
@@ -185,12 +200,15 @@ puts response.dig("choices", 0, "text")
|
|
185
200
|
You can use the embeddings endpoint to get a vector of numbers representing an input. You can then compare these vectors for different inputs to efficiently check how similar the inputs are.
|
186
201
|
|
187
202
|
```ruby
|
188
|
-
client.embeddings(
|
203
|
+
response = client.embeddings(
|
189
204
|
parameters: {
|
190
205
|
model: "babbage-similarity",
|
191
206
|
input: "The food was delicious and the waiter..."
|
192
207
|
}
|
193
208
|
)
|
209
|
+
|
210
|
+
puts response.dig("data", 0, "embedding")
|
211
|
+
# => Vector representation of your embedding
|
194
212
|
```
|
195
213
|
|
196
214
|
### Files
|
data/lib/openai/http.rb
CHANGED
@@ -70,10 +70,17 @@ module OpenAI
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def uri(path:)
|
73
|
-
|
73
|
+
if OpenAI.configuration.api_type == :azure
|
74
|
+
base = File.join(OpenAI.configuration.uri_base, path)
|
75
|
+
"#{base}?api-version=#{OpenAI.configuration.api_version}"
|
76
|
+
else
|
77
|
+
File.join(OpenAI.configuration.uri_base, OpenAI.configuration.api_version, path)
|
78
|
+
end
|
74
79
|
end
|
75
80
|
|
76
81
|
def headers
|
82
|
+
return azure_headers if OpenAI.configuration.api_type == :azure
|
83
|
+
|
77
84
|
{
|
78
85
|
"Content-Type" => "application/json",
|
79
86
|
"Authorization" => "Bearer #{OpenAI.configuration.access_token}",
|
@@ -81,6 +88,13 @@ module OpenAI
|
|
81
88
|
}
|
82
89
|
end
|
83
90
|
|
91
|
+
def azure_headers
|
92
|
+
{
|
93
|
+
"Content-Type" => "application/json",
|
94
|
+
"api-key" => OpenAI.configuration.access_token
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
84
98
|
def multipart_parameters(parameters)
|
85
99
|
parameters&.transform_values do |value|
|
86
100
|
next value unless value.is_a?(File)
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
@@ -15,7 +15,7 @@ module OpenAI
|
|
15
15
|
|
16
16
|
class Configuration
|
17
17
|
attr_writer :access_token
|
18
|
-
attr_accessor :api_version, :organization_id, :uri_base, :request_timeout
|
18
|
+
attr_accessor :api_type, :api_version, :organization_id, :uri_base, :request_timeout
|
19
19
|
|
20
20
|
DEFAULT_API_VERSION = "v1".freeze
|
21
21
|
DEFAULT_URI_BASE = "https://api.openai.com/".freeze
|
@@ -23,6 +23,7 @@ module OpenAI
|
|
23
23
|
|
24
24
|
def initialize
|
25
25
|
@access_token = nil
|
26
|
+
@api_type = nil
|
26
27
|
@api_version = DEFAULT_API_VERSION
|
27
28
|
@organization_id = nil
|
28
29
|
@uri_base = DEFAULT_URI_BASE
|
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: 4.
|
4
|
+
version: 4.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: 2023-
|
11
|
+
date: 2023-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|