chatgpt2023 0.4.2 → 0.5.1
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
- checksums.yaml.gz.sig +0 -0
- data/lib/chatgpt2023.rb +85 -6
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f937d13ec5131003c4acf2b9c046cb56e4462bb72e89700cb56fb2c376c3846
|
4
|
+
data.tar.gz: e2252feb992e7c3538ae917d63abc6b4f4743e8faa328fff0ce36f1af221508e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88b1657db3ac774bfae4df8166a2aa26ef520af5194a7ba1718aea6612a2a75350de457b8dabb150bda4e149a4851648f45eecfdc1dd6276794fdb1358c760a5
|
7
|
+
data.tar.gz: dd610445a564e33fde61cdedda227a843d6410457f90b8a85b3255e627462fb51cae5a3767d56e6346f277466df97053fd3f41155fba06d7fbbd34d4e125144c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/chatgpt2023.rb
CHANGED
@@ -39,15 +39,71 @@ end
|
|
39
39
|
|
40
40
|
class ChatGpt2023
|
41
41
|
|
42
|
+
attr_accessor :assistant_recent
|
43
|
+
|
42
44
|
def initialize(apikey: nil, attempts: 1, debug: false)
|
43
45
|
|
44
46
|
@apiurl = "https://api.openai.com/v1"
|
45
47
|
|
46
48
|
raise 'You must supply an API key!' unless apikey
|
47
49
|
@apikey, @attempts, @debug = apikey, attempts, debug
|
50
|
+
@assistant_recent = nil
|
48
51
|
|
49
52
|
end
|
50
53
|
|
54
|
+
|
55
|
+
# CURL example
|
56
|
+
# curl https://api.openai.com/v1/chat/completions \
|
57
|
+
# -H 'Content-Type: application/json' \
|
58
|
+
# -H 'Authorization: Bearer YOUR_API_KEY' \
|
59
|
+
# -d '{
|
60
|
+
# "model": "gpt-3.5-turbo",
|
61
|
+
# "messages": [{"role": "user", "content": "Hello!"}]
|
62
|
+
# }'
|
63
|
+
|
64
|
+
# Ruby example
|
65
|
+
|
66
|
+
# require 'chatgpt2023'
|
67
|
+
|
68
|
+
# c = ChatGpt2023.new(apikey: YOUR_API_KEY)
|
69
|
+
# r = c.chat 'who is Burt Reynolds?'
|
70
|
+
# r2 = c.chat 'what age was he?'
|
71
|
+
# r3 = c.chat 'did he have family?'
|
72
|
+
#
|
73
|
+
|
74
|
+
def chat(s, temperature: 1, max_tokens: 3900)
|
75
|
+
r = chats(s, temperature: temperature, max_tokens: max_tokens)
|
76
|
+
return r if r.is_a?(Hash)
|
77
|
+
return {text: r.first[:message][:content].strip}
|
78
|
+
end
|
79
|
+
|
80
|
+
def chats(s=nil, messages: [], temperature: 1, max_tokens: 3900, n: 1)
|
81
|
+
|
82
|
+
if @assistant_recent then
|
83
|
+
|
84
|
+
# We limit what gets passed back because there should enough
|
85
|
+
# information in the 1st 140 chars to infer the conversation context
|
86
|
+
#
|
87
|
+
@assistant_recent[:content].slice!(140..-1)
|
88
|
+
messages << @assistant_recent
|
89
|
+
max_tokens -= @assistant_recent[:content].split.length
|
90
|
+
end
|
91
|
+
|
92
|
+
messages << {'role' => 'user', 'content' => s } if s
|
93
|
+
r = go_chat(messages, temperature: temperature,
|
94
|
+
max_tokens: max_tokens, n: n)
|
95
|
+
|
96
|
+
puts 'chat/completions r: ' + r.inspect if @debug
|
97
|
+
|
98
|
+
if r[:error] then r
|
99
|
+
r
|
100
|
+
else
|
101
|
+
@assistant_recent = r[:choices].first[:message]
|
102
|
+
r[:choices]
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
51
107
|
# Example
|
52
108
|
# c = ChatGpt2023.new(apikey: 'yourapikey')
|
53
109
|
# s = '
|
@@ -56,7 +112,7 @@ class ChatGpt2023
|
|
56
112
|
# '
|
57
113
|
# r = c.code_completions s, temperature: 0.2
|
58
114
|
# puts r.first[:text]
|
59
|
-
|
115
|
+
#
|
60
116
|
def code_completions(s, temperature: 1, max_tokens: 32, n: 1)
|
61
117
|
|
62
118
|
r = go_code(s, temperature: temperature,
|
@@ -88,7 +144,7 @@ class ChatGpt2023
|
|
88
144
|
end
|
89
145
|
|
90
146
|
alias complete completion
|
91
|
-
alias ask
|
147
|
+
alias ask chat
|
92
148
|
|
93
149
|
def edits(s, s2)
|
94
150
|
r = go_edits(s, s2)
|
@@ -111,6 +167,20 @@ class ChatGpt2023
|
|
111
167
|
|
112
168
|
private
|
113
169
|
|
170
|
+
def go_chat(messages=[], temperature: 0, max_tokens: 4096, n: 1)
|
171
|
+
|
172
|
+
h = {
|
173
|
+
"model" => 'gpt-3.5-turbo',
|
174
|
+
"messages" => messages,
|
175
|
+
"temperature" => temperature,
|
176
|
+
"max_tokens" => max_tokens,
|
177
|
+
"n" => n
|
178
|
+
}
|
179
|
+
|
180
|
+
submit('chat/completions', h)
|
181
|
+
|
182
|
+
end
|
183
|
+
|
114
184
|
def go_code(s, temperature: 0, max_tokens: 7, n: 1)
|
115
185
|
|
116
186
|
h = {
|
@@ -227,7 +297,7 @@ class CGRecorder < ChatGpt2023
|
|
227
297
|
|
228
298
|
super(apikey: apikey, attempts: attempts, debug: debug)
|
229
299
|
@dx = DynarexDaily.new filename: logfile, fields: %i(prompt result),
|
230
|
-
autosave: true, order: 'descending', debug:
|
300
|
+
autosave: true, order: 'descending', debug: debug
|
231
301
|
@index = Dynarex.new(indexfile, schema: 'entries[title]/entry(prompt, ' \
|
232
302
|
+ 'tags)', order: 'descending', autosave: true)
|
233
303
|
title = 'ChatGPT prompt log'
|
@@ -235,10 +305,19 @@ class CGRecorder < ChatGpt2023
|
|
235
305
|
|
236
306
|
end
|
237
307
|
|
308
|
+
def chat(s, tags=nil, temperature: 1, max_tokens: 1000)
|
309
|
+
|
310
|
+
r = super(s, temperature: temperature, max_tokens: max_tokens)
|
311
|
+
puts 'CGRecorder inside chat: ' + r.inspect if @debug
|
312
|
+
log(s, r[:text].strip, tags) unless r[:error]
|
313
|
+
|
314
|
+
return r
|
315
|
+
end
|
316
|
+
|
238
317
|
def code_completion(s, tags=nil, temperature: 1, max_tokens: 2000)
|
239
318
|
|
240
319
|
r = super(s, temperature: temperature, max_tokens: max_tokens)
|
241
|
-
log(s, r[:text].strip, tags)
|
320
|
+
log(s, r[:text].strip, tags) unless r[:error]
|
242
321
|
|
243
322
|
return r
|
244
323
|
|
@@ -248,11 +327,11 @@ class CGRecorder < ChatGpt2023
|
|
248
327
|
|
249
328
|
r = super(s, temperature: temperature, max_tokens: max_tokens)
|
250
329
|
puts 'CGRecorder inside completion: ' + r.inspect if @debug
|
251
|
-
log(s, r[:text].strip, tags)
|
330
|
+
log(s, r[:text].strip, tags) unless r[:error]
|
252
331
|
|
253
332
|
return r
|
254
|
-
|
255
333
|
end
|
334
|
+
|
256
335
|
|
257
336
|
alias complete completion
|
258
337
|
alias ask completion
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chatgpt2023
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
6FQD1/GISew7VvxUJdptXeuVNIsdNKxvL3RpfLCuFsi1WXyJ4k3odRMTmS0kAfTy
|
37
37
|
J4sZZW9RNfabTMQQY7DIs3tUAn6i+O0r9lo=
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2023-
|
39
|
+
date: 2023-03-13 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: down
|
metadata.gz.sig
CHANGED
Binary file
|