openai.rb 0.0.5 → 0.0.6

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.
@@ -9,12 +9,12 @@ RSpec.describe OpenAI::API, '#files' do
9
9
  context 'when creating a file' do
10
10
  let(:response_body) do
11
11
  {
12
- "id": 'file-XjGxS3KTG0uNmNOK362iJua3',
13
- "object": 'file',
14
- "bytes": 140,
15
- "created_at": 1_613_779_121,
16
- "filename": 'sample.jsonl',
17
- "purpose": 'fine-tune'
12
+ id: 'file-XjGxS3KTG0uNmNOK362iJua3',
13
+ object: 'file',
14
+ bytes: 140,
15
+ created_at: 1_613_779_121,
16
+ filename: 'sample.jsonl',
17
+ purpose: 'fine-tune'
18
18
  }
19
19
  end
20
20
 
@@ -51,25 +51,25 @@ RSpec.describe OpenAI::API, '#files' do
51
51
  context 'when listing a file' do
52
52
  let(:response_body) do
53
53
  {
54
- "data": [
54
+ data: [
55
55
  {
56
- "id": 'file-ccdDZrC3iZVNiQVeEA6Z66wf',
57
- "object": 'file',
58
- "bytes": 175,
59
- "created_at": 1_613_677_385,
60
- "filename": 'train.jsonl',
61
- "purpose": 'search'
56
+ id: 'file-ccdDZrC3iZVNiQVeEA6Z66wf',
57
+ object: 'file',
58
+ bytes: 175,
59
+ created_at: 1_613_677_385,
60
+ filename: 'train.jsonl',
61
+ purpose: 'search'
62
62
  },
63
63
  {
64
- "id": 'file-XjGxS3KTG0uNmNOK362iJua3',
65
- "object": 'file',
66
- "bytes": 140,
67
- "created_at": 1_613_779_121,
68
- "filename": 'puppy.jsonl',
69
- "purpose": 'search'
64
+ id: 'file-XjGxS3KTG0uNmNOK362iJua3',
65
+ object: 'file',
66
+ bytes: 140,
67
+ created_at: 1_613_779_121,
68
+ filename: 'puppy.jsonl',
69
+ purpose: 'search'
70
70
  }
71
71
  ],
72
- "object": 'list'
72
+ object: 'list'
73
73
  }
74
74
  end
75
75
 
@@ -94,9 +94,9 @@ RSpec.describe OpenAI::API, '#files' do
94
94
  context 'when deleting a file' do
95
95
  let(:response_body) do
96
96
  {
97
- "id": 'file-XjGxS3KTG0uNmNOK362iJua3',
98
- "object": 'file',
99
- "deleted": true
97
+ id: 'file-XjGxS3KTG0uNmNOK362iJua3',
98
+ object: 'file',
99
+ deleted: true
100
100
  }
101
101
  end
102
102
 
@@ -116,12 +116,12 @@ RSpec.describe OpenAI::API, '#files' do
116
116
  context 'when fetching a file' do
117
117
  let(:response_body) do
118
118
  {
119
- "id": 'file-XjGxS3KTG0uNmNOK362iJua3',
120
- "object": 'file',
121
- "bytes": 140,
122
- "created_at": 1_613_779_657,
123
- "filename": 'mydata.jsonl',
124
- "purpose": 'fine-tune'
119
+ id: 'file-XjGxS3KTG0uNmNOK362iJua3',
120
+ object: 'file',
121
+ bytes: 140,
122
+ created_at: 1_613_779_657,
123
+ filename: 'mydata.jsonl',
124
+ purpose: 'fine-tune'
125
125
  }
126
126
  end
127
127
 
@@ -6,21 +6,21 @@ RSpec.describe OpenAI::API, '#fine_tunes' do
6
6
  let(:resource) { api.fine_tunes }
7
7
  let(:response_body) do
8
8
  {
9
- "object": 'list',
10
- "data": [
9
+ object: 'list',
10
+ data: [
11
11
  {
12
- "id": 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
13
- "object": 'fine-tune',
14
- "model": 'curie',
15
- "created_at": 1_614_807_352,
16
- "fine_tuned_model": nil,
17
- "hyperparams": {},
18
- "organization_id": 'org-...',
19
- "result_files": [],
20
- "status": 'pending',
21
- "validation_files": [],
22
- "training_files": [{}],
23
- "updated_at": 1_614_807_352
12
+ id: 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
13
+ object: 'fine-tune',
14
+ model: 'curie',
15
+ created_at: 1_614_807_352,
16
+ fine_tuned_model: nil,
17
+ hyperparams: {},
18
+ organization_id: 'org-...',
19
+ result_files: [],
20
+ status: 'pending',
21
+ validation_files: [],
22
+ training_files: [{}],
23
+ updated_at: 1_614_807_352
24
24
  },
25
25
  {},
26
26
  {}
@@ -62,40 +62,40 @@ RSpec.describe OpenAI::API, '#fine_tunes' do
62
62
  context 'when creating a fine-tune' do
63
63
  let(:response_body) do
64
64
  {
65
- "id": 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
66
- "object": 'fine-tune',
67
- "model": 'curie',
68
- "created_at": 1_614_807_352,
69
- "events": [
65
+ id: 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
66
+ object: 'fine-tune',
67
+ model: 'curie',
68
+ created_at: 1_614_807_352,
69
+ events: [
70
70
  {
71
- "object": 'fine-tune-event',
72
- "created_at": 1_614_807_352,
73
- "level": 'info',
74
- "message": 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
71
+ object: 'fine-tune-event',
72
+ created_at: 1_614_807_352,
73
+ level: 'info',
74
+ message: 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
75
75
  }
76
76
  ],
77
- "fine_tuned_model": nil,
78
- "hyperparams": {
79
- "batch_size": 4,
80
- "learning_rate_multiplier": 0.1,
81
- "n_epochs": 4,
82
- "prompt_loss_weight": 0.1
77
+ fine_tuned_model: nil,
78
+ hyperparams: {
79
+ batch_size: 4,
80
+ learning_rate_multiplier: 0.1,
81
+ n_epochs: 4,
82
+ prompt_loss_weight: 0.1
83
83
  },
84
- "organization_id": 'org-...',
85
- "result_files": [],
86
- "status": 'pending',
87
- "validation_files": [],
88
- "training_files": [
84
+ organization_id: 'org-...',
85
+ result_files: [],
86
+ status: 'pending',
87
+ validation_files: [],
88
+ training_files: [
89
89
  {
90
- "id": 'file-XGinujblHPwGLSztz8cPS8XY',
91
- "object": 'file',
92
- "bytes": 1_547_276,
93
- "created_at": 1_610_062_281,
94
- "filename": 'my-data-train.jsonl',
95
- "purpose": 'fine-tune-train'
90
+ id: 'file-XGinujblHPwGLSztz8cPS8XY',
91
+ object: 'file',
92
+ bytes: 1_547_276,
93
+ created_at: 1_610_062_281,
94
+ filename: 'my-data-train.jsonl',
95
+ purpose: 'fine-tune-train'
96
96
  }
97
97
  ],
98
- "updated_at": 1_614_807_352
98
+ updated_at: 1_614_807_352
99
99
  }
100
100
  end
101
101
 
@@ -135,73 +135,73 @@ RSpec.describe OpenAI::API, '#fine_tunes' do
135
135
  context 'when fetching a fine tune' do
136
136
  let(:response_body) do
137
137
  {
138
- "id": 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
139
- "object": 'fine-tune',
140
- "model": 'curie',
141
- "created_at": 1_614_807_352,
142
- "events": [
138
+ id: 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',
139
+ object: 'fine-tune',
140
+ model: 'curie',
141
+ created_at: 1_614_807_352,
142
+ events: [
143
143
  {
144
- "object": 'fine-tune-event',
145
- "created_at": 1_614_807_352,
146
- "level": 'info',
147
- "message": 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
144
+ object: 'fine-tune-event',
145
+ created_at: 1_614_807_352,
146
+ level: 'info',
147
+ message: 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
148
148
  },
149
149
  {
150
- "object": 'fine-tune-event',
151
- "created_at": 1_614_807_356,
152
- "level": 'info',
153
- "message": 'Job started.'
150
+ object: 'fine-tune-event',
151
+ created_at: 1_614_807_356,
152
+ level: 'info',
153
+ message: 'Job started.'
154
154
  },
155
155
  {
156
- "object": 'fine-tune-event',
157
- "created_at": 1_614_807_861,
158
- "level": 'info',
159
- "message": 'Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20.'
156
+ object: 'fine-tune-event',
157
+ created_at: 1_614_807_861,
158
+ level: 'info',
159
+ message: 'Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20.'
160
160
  },
161
161
  {
162
- "object": 'fine-tune-event',
163
- "created_at": 1_614_807_864,
164
- "level": 'info',
165
- "message": 'Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT.'
162
+ object: 'fine-tune-event',
163
+ created_at: 1_614_807_864,
164
+ level: 'info',
165
+ message: 'Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT.'
166
166
  },
167
167
  {
168
- "object": 'fine-tune-event',
169
- "created_at": 1_614_807_864,
170
- "level": 'info',
171
- "message": 'Job succeeded.'
168
+ object: 'fine-tune-event',
169
+ created_at: 1_614_807_864,
170
+ level: 'info',
171
+ message: 'Job succeeded.'
172
172
  }
173
173
  ],
174
- "fine_tuned_model": 'curie:ft-acmeco-2021-03-03-21-44-20',
175
- "hyperparams": {
176
- "batch_size": 4,
177
- "learning_rate_multiplier": 0.1,
178
- "n_epochs": 4,
179
- "prompt_loss_weight": 0.1
174
+ fine_tuned_model: 'curie:ft-acmeco-2021-03-03-21-44-20',
175
+ hyperparams: {
176
+ batch_size: 4,
177
+ learning_rate_multiplier: 0.1,
178
+ n_epochs: 4,
179
+ prompt_loss_weight: 0.1
180
180
  },
181
- "organization_id": 'org-...',
182
- "result_files": [
181
+ organization_id: 'org-...',
182
+ result_files: [
183
183
  {
184
- "id": 'file-QQm6ZpqdNwAaVC3aSz5sWwLT',
185
- "object": 'file',
186
- "bytes": 81_509,
187
- "created_at": 1_614_807_863,
188
- "filename": 'compiled_results.csv',
189
- "purpose": 'fine-tune-results'
184
+ id: 'file-QQm6ZpqdNwAaVC3aSz5sWwLT',
185
+ object: 'file',
186
+ bytes: 81_509,
187
+ created_at: 1_614_807_863,
188
+ filename: 'compiled_results.csv',
189
+ purpose: 'fine-tune-results'
190
190
  }
191
191
  ],
192
- "status": 'succeeded',
193
- "validation_files": [],
194
- "training_files": [
192
+ status: 'succeeded',
193
+ validation_files: [],
194
+ training_files: [
195
195
  {
196
- "id": 'file-XGinujblHPwGLSztz8cPS8XY',
197
- "object": 'file',
198
- "bytes": 1_547_276,
199
- "created_at": 1_610_062_281,
200
- "filename": 'my-data-train.jsonl',
201
- "purpose": 'fine-tune-train'
196
+ id: 'file-XGinujblHPwGLSztz8cPS8XY',
197
+ object: 'file',
198
+ bytes: 1_547_276,
199
+ created_at: 1_610_062_281,
200
+ filename: 'my-data-train.jsonl',
201
+ purpose: 'fine-tune-train'
202
202
  }
203
203
  ],
204
- "updated_at": 1_614_807_865
204
+ updated_at: 1_614_807_865
205
205
  }
206
206
  end
207
207
 
@@ -246,8 +246,8 @@ RSpec.describe OpenAI::API, '#fine_tunes' do
246
246
  context 'when canceling a fine-tune' do
247
247
  let(:response_body) do
248
248
  {
249
- "id": 'ft-xhrpBbvVUzYGo8oUO1FY4nI7',
250
- "status": 'cancelled'
249
+ id: 'ft-xhrpBbvVUzYGo8oUO1FY4nI7',
250
+ status: 'cancelled'
251
251
  }
252
252
  end
253
253
 
@@ -266,37 +266,37 @@ RSpec.describe OpenAI::API, '#fine_tunes' do
266
266
  context 'when listing fine-tune events' do
267
267
  let(:response_body) do
268
268
  {
269
- "object": 'list',
270
- "data": [
269
+ object: 'list',
270
+ data: [
271
271
  {
272
- "object": 'fine-tune-event',
273
- "created_at": 1_614_807_352,
274
- "level": 'info',
275
- "message": 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
272
+ object: 'fine-tune-event',
273
+ created_at: 1_614_807_352,
274
+ level: 'info',
275
+ message: 'Job enqueued. Waiting for jobs ahead to complete. Queue number: 0.'
276
276
  },
277
277
  {
278
- "object": 'fine-tune-event',
279
- "created_at": 1_614_807_356,
280
- "level": 'info',
281
- "message": 'Job started.'
278
+ object: 'fine-tune-event',
279
+ created_at: 1_614_807_356,
280
+ level: 'info',
281
+ message: 'Job started.'
282
282
  },
283
283
  {
284
- "object": 'fine-tune-event',
285
- "created_at": 1_614_807_861,
286
- "level": 'info',
287
- "message": 'Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20.'
284
+ object: 'fine-tune-event',
285
+ created_at: 1_614_807_861,
286
+ level: 'info',
287
+ message: 'Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20.'
288
288
  },
289
289
  {
290
- "object": 'fine-tune-event',
291
- "created_at": 1_614_807_864,
292
- "level": 'info',
293
- "message": 'Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT.'
290
+ object: 'fine-tune-event',
291
+ created_at: 1_614_807_864,
292
+ level: 'info',
293
+ message: 'Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT.'
294
294
  },
295
295
  {
296
- "object": 'fine-tune-event',
297
- "created_at": 1_614_807_864,
298
- "level": 'info',
299
- "message": 'Job succeeded.'
296
+ object: 'fine-tune-event',
297
+ created_at: 1_614_807_864,
298
+ level: 'info',
299
+ message: 'Job succeeded.'
300
300
  }
301
301
  ]
302
302
  }
@@ -40,13 +40,13 @@ RSpec.describe OpenAI::API, '#images' do
40
40
 
41
41
  let(:response_body) do
42
42
  {
43
- "created": 1_589_478_378,
44
- "data": [
43
+ created: 1_589_478_378,
44
+ data: [
45
45
  {
46
- "url": 'https://...'
46
+ url: 'https://...'
47
47
  },
48
48
  {
49
- "url": 'https://...'
49
+ url: 'https://...'
50
50
  }
51
51
  ]
52
52
  }
@@ -90,13 +90,13 @@ RSpec.describe OpenAI::API, '#images' do
90
90
  context 'when creating image variations' do
91
91
  let(:response_body) do
92
92
  {
93
- "created": 1_589_478_378,
94
- "data": [
93
+ created: 1_589_478_378,
94
+ data: [
95
95
  {
96
- "url": 'https://...'
96
+ url: 'https://...'
97
97
  },
98
98
  {
99
- "url": 'https://...'
99
+ url: 'https://...'
100
100
  }
101
101
  ]
102
102
  }
@@ -61,10 +61,10 @@ RSpec.describe OpenAI::API, '#models' do
61
61
  context 'when retrieving a model' do
62
62
  let(:response_body) do
63
63
  {
64
- "id": 'text-davinci-002',
65
- "object": 'model',
66
- "owned_by": 'openai',
67
- "permission": %w[
64
+ id: 'text-davinci-002',
65
+ object: 'model',
66
+ owned_by: 'openai',
67
+ permission: %w[
68
68
  query
69
69
  completions
70
70
  models:read
@@ -7,29 +7,29 @@ RSpec.describe OpenAI::API, '#moderations' do
7
7
 
8
8
  let(:response_body) do
9
9
  {
10
- "id": 'modr-5MWoLO',
11
- "model": 'text-moderation-001',
12
- "results": [
10
+ id: 'modr-5MWoLO',
11
+ model: 'text-moderation-001',
12
+ results: [
13
13
  {
14
- "categories": {
15
- "hate": false,
16
- "hate/threatening": true,
17
- "self-harm": false,
18
- "sexual": false,
19
- "sexual/minors": false,
20
- "violence": true,
21
- "violence/graphic": false
14
+ categories: {
15
+ hate: false,
16
+ 'hate/threatening': true,
17
+ 'self-harm': false,
18
+ sexual: false,
19
+ 'sexual/minors': false,
20
+ violence: true,
21
+ 'violence/graphic': false
22
22
  },
23
- "category_scores": {
24
- "hate": 0.22714105248451233,
25
- "hate/threatening": 0.4132447838783264,
26
- "self-harm": 0.005232391878962517,
27
- "sexual": 0.01407341007143259,
28
- "sexual/minors": 0.0038522258400917053,
29
- "violence": 0.9223177433013916,
30
- "violence/graphic": 0.036865197122097015
23
+ category_scores: {
24
+ hate: 0.22714105248451233,
25
+ 'hate/threatening': 0.4132447838783264,
26
+ 'self-harm': 0.005232391878962517,
27
+ sexual: 0.01407341007143259,
28
+ 'sexual/minors': 0.0038522258400917053,
29
+ violence: 0.9223177433013916,
30
+ 'violence/graphic': 0.036865197122097015
31
31
  },
32
- "flagged": true
32
+ flagged: true
33
33
  }
34
34
  ]
35
35
  }
@@ -87,13 +87,13 @@ RSpec.describe OpenAI::API::Response do
87
87
 
88
88
  it 'defines a nice clean inspect method' do
89
89
  expect(sample_response.inspect).to eql(
90
- '#<OpenAISpec::SampleResponse::Post ' \
91
- 'created_at=1234 ' \
92
- 'text="This is a post" ' \
93
- 'comments=[] ' \
94
- 'author=#<OpenAISpec::SampleResponse::User username="carl"> ' \
95
- 'co_author=nil ' \
96
- 'subtitle=nil>'
90
+ '#<OpenAISpec::SampleResponse::Post ' \
91
+ 'created_at=1234 ' \
92
+ 'text="This is a post" ' \
93
+ 'comments=[] ' \
94
+ 'author=#<OpenAISpec::SampleResponse::User username="carl"> ' \
95
+ 'co_author=nil ' \
96
+ 'subtitle=nil>'
97
97
  )
98
98
  end
99
99
 
@@ -7,7 +7,7 @@ RSpec.describe OpenAI::Chat do
7
7
 
8
8
  describe 'initialization and adding messages' do
9
9
  it 'initializes with messages and adds user, system, and assistant messages' do
10
- chat = OpenAI::Chat.new(messages: messages, settings: settings, openai: openai)
10
+ chat = OpenAI::Chat.new(messages:, settings:, openai:)
11
11
 
12
12
  expect(chat.messages.count).to eq(1)
13
13
  expect(chat.messages.first.role).to eq('user')
@@ -7,22 +7,22 @@ RSpec.describe OpenAI do
7
7
 
8
8
  let(:response_body) do
9
9
  {
10
- "id": 'cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7',
11
- "object": 'text_completion',
12
- "created": 1_589_478_378,
13
- "model": 'text-davinci-003',
14
- "choices": [
10
+ id: 'cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7',
11
+ object: 'text_completion',
12
+ created: 1_589_478_378,
13
+ model: 'text-davinci-003',
14
+ choices: [
15
15
  {
16
- "text": "\n\nThis is indeed a test",
17
- "index": 0,
18
- "logprobs": nil,
19
- "finish_reason": 'length'
16
+ text: "\n\nThis is indeed a test",
17
+ index: 0,
18
+ logprobs: nil,
19
+ finish_reason: 'length'
20
20
  }
21
21
  ],
22
- "usage": {
23
- "prompt_tokens": 5,
24
- "completion_tokens": 7,
25
- "total_tokens": 12
22
+ usage: {
23
+ prompt_tokens: 5,
24
+ completion_tokens: 7,
25
+ total_tokens: 12
26
26
  }
27
27
  }
28
28
  end
@@ -42,7 +42,7 @@ RSpec.describe OpenAI do
42
42
  OpenAI::API::Client.new(
43
43
  'sk-123',
44
44
  organization_id: 'org-123',
45
- http: http
45
+ http:
46
46
  )
47
47
  end
48
48
 
@@ -59,11 +59,11 @@ RSpec.describe OpenAI do
59
59
  context 'when the request is not 2xx' do
60
60
  let(:response_body) do
61
61
  {
62
- "error": {
63
- "message": "You didn't provide an API key.",
64
- "type": 'invalid_request_error',
65
- "param": nil,
66
- "code": nil
62
+ error: {
63
+ message: "You didn't provide an API key.",
64
+ type: 'invalid_request_error',
65
+ param: nil,
66
+ code: nil
67
67
  }
68
68
  }
69
69
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - John
8
8
  - Backus
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-05 00:00:00.000000000 Z
12
+ date: 2023-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: abstract_type
@@ -107,14 +107,14 @@ dependencies:
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.0.3
110
+ version: 0.0.6
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.0.3
117
+ version: 0.0.6
118
118
  description: OpenAI Ruby Wrapper
119
119
  email:
120
120
  - johncbackus@gmail.com
@@ -167,8 +167,9 @@ files:
167
167
  - spec/unit/openai_spec.rb
168
168
  homepage: https://github.com/backus/openai-ruby
169
169
  licenses: []
170
- metadata: {}
171
- post_install_message:
170
+ metadata:
171
+ rubygems_mfa_required: 'true'
172
+ post_install_message:
172
173
  rdoc_options: []
173
174
  require_paths:
174
175
  - lib
@@ -176,15 +177,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
177
  requirements:
177
178
  - - ">="
178
179
  - !ruby/object:Gem::Version
179
- version: '2.7'
180
+ version: '3.2'
180
181
  required_rubygems_version: !ruby/object:Gem::Requirement
181
182
  requirements:
182
183
  - - ">="
183
184
  - !ruby/object:Gem::Version
184
185
  version: '0'
185
186
  requirements: []
186
- rubygems_version: 3.1.6
187
- signing_key:
187
+ rubygems_version: 3.4.10
188
+ signing_key:
188
189
  specification_version: 4
189
190
  summary: OpenAI Ruby Wrapper
190
191
  test_files: []