chatgpt2023 0.2.0 → 0.2.2

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: 88c1cfbb0ea81bad341b25450770d3f9cd5142047a76f9650ed165cfc4295941
4
- data.tar.gz: f155c706875520f4ffb3d25549b7a8cbde8b1b6c88919eb6b9e85f252486b979
3
+ metadata.gz: 9ec634a55d06fe1dbbeec12535c076677953903146f57aad99bdb1090fdb1c5c
4
+ data.tar.gz: 53b6db1a22dabbc4d21948e9d257d93dae12814bf13ef98e6d795f45b9a14ab8
5
5
  SHA512:
6
- metadata.gz: cb5037feeaeb3181994e6d669bbf0d97c01e3dbaf06ca1f47754e9b9ab136a79c877e5ffb4c477319658fd2bb8594940831278fa02309a0b887ffab8aa0b3692
7
- data.tar.gz: 2c597fa1448e6552e5ddfe58ff008b42de82b3413f05f020df304e6ff3ace7df88890a3a2d25e687ec98de9c988eaf415515d6fecca2ae4b3f27868c0c9ea3fa
6
+ metadata.gz: 35a5f4aa64030d07af1b053a3adaeb827aaa2ad8d0b545df5cef516ab07d6574cf4715029481ba283dbe40a83cb8ed2b09738c1f916656818f42ec97c3e9a303
7
+ data.tar.gz: 96a6868c366028eacaf522b8d8a795034b56f473f0b3aab801b672d779f2de1b694ce295232f2dc2e9c4b2a49e02f55dd56e5a16ab3c537652b9b48ae3bc8a93
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/chatgpt2023.rb CHANGED
@@ -24,6 +24,7 @@ require 'down'
24
24
  # -d '{"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}'
25
25
 
26
26
  # ChatGpt documentation: https://beta.openai.com/docs/introduction/overview
27
+ # ChatGpt web page: https://chat.openai.com/chat
27
28
 
28
29
  # Usage:
29
30
  # require 'chatgpt2023'
@@ -32,6 +33,9 @@ require 'down'
32
33
  # chat.completion 'Say this is a test'
33
34
  # #=> This is indeed a test
34
35
 
36
+ class ChatGpt2023Error < Exception
37
+ end
38
+
35
39
  class ChatGpt2023
36
40
 
37
41
  def initialize(apikey: nil, debug: false)
@@ -43,47 +47,89 @@ class ChatGpt2023
43
47
 
44
48
  end
45
49
 
46
- def completions(s, temperature: 0, max_tokens: 7)
47
- r = self.go_completions(s, temperature: temperature,
48
- max_tokens: max_tokens)
50
+ # Example
51
+ # c = ChatGpt2023.new(apikey: 'yourapikey')
52
+ # s = '
53
+ # # Ruby
54
+ # # Ask the user for their name and say "Hello"
55
+ # '
56
+ # r = c.code_completions s, temperature: 0.2
57
+ # puts r.first[:text]
58
+
59
+ def code_completions(s, temperature: 1, max_tokens: 32, n: 1)
60
+
61
+ r = go_code(s, temperature: temperature,
62
+ max_tokens: max_tokens, n: n)
63
+ puts 'code r: ' + r.inspect if @debug
64
+ r[:choices]
65
+
66
+ end
67
+
68
+ def code_completion(s, temperature: 1, max_tokens: 32)
69
+ code_completions(s, temperature: temperature, max_tokens: max_tokens)\
70
+ .first[:text].strip
71
+ end
72
+
73
+ def completions(s, temperature: 1, max_tokens: 32, n: 1)
74
+
75
+ r = go_completions(s, temperature: temperature,
76
+ max_tokens: max_tokens, n: n)
77
+ puts 'completions r: ' + r.inspect if @debug
49
78
  r[:choices]
79
+
50
80
  end
51
81
 
52
- def completion(s)
53
- self.go_completions(s).first[:text].strip
82
+ def completion(s, temperature: 1, max_tokens: 32)
83
+ completions(s, temperature: temperature, max_tokens: max_tokens)\
84
+ .first[:text].strip
54
85
  end
55
86
 
56
87
  alias complete completion
88
+ alias ask completion
57
89
 
58
90
  def edits(s, s2)
59
- r = self.go_edits(s, s2)
91
+ r = go_edits(s, s2)
60
92
  end
61
93
 
62
94
  def images(s)
63
- self.go_images_generations(s)
95
+ go_images_generations(s)
64
96
  end
65
97
 
66
98
  def image(s)
67
- r = self.images(s)
68
- img = r[:data].first[:url]
69
- Down.download(img)
99
+ r = images(s)
100
+ Down.download(r[:data].first[:url] )
70
101
  end
71
102
 
72
103
  alias imagine image
73
104
 
74
105
  def images_edit(s, image, mask: nil)
75
- self.go_images_edits(s, image, mask: mask)
106
+ go_images_edits(s, image, mask: mask)
76
107
  end
77
108
 
78
109
  private
110
+
111
+ def go_code(s, temperature: 0, max_tokens: 7, n: 1)
79
112
 
80
- def go_completions(s, temperature: 0, max_tokens: 7)
113
+ h = {
114
+ "model" => 'code-davinci-002',
115
+ "prompt" => s,
116
+ "temperature" => temperature,
117
+ "max_tokens" => max_tokens,
118
+ "n" => n
119
+ }
120
+
121
+ submit('completions', h)
122
+
123
+ end
124
+
125
+ def go_completions(s, temperature: 0, max_tokens: 7, n: 1)
81
126
 
82
127
  h = {
83
128
  "model" => 'text-davinci-003',
84
129
  "prompt" => s,
85
130
  "temperature" => temperature,
86
- "max_tokens" => max_tokens
131
+ "max_tokens" => max_tokens,
132
+ "n" => n
87
133
  }
88
134
 
89
135
  submit('completions', h)
@@ -129,9 +175,9 @@ class ChatGpt2023
129
175
 
130
176
  end
131
177
 
132
- def submit(uri, h)
178
+ def submit(uri2, h)
133
179
 
134
- uri = URI.parse(@apiurl + '/' + uri)
180
+ uri = URI.parse(@apiurl + '/' + uri2)
135
181
  request = Net::HTTP::Post.new(uri)
136
182
  request.content_type = "application/json"
137
183
  request["Authorization"] = 'Bearer ' + @apikey
@@ -147,7 +193,10 @@ class ChatGpt2023
147
193
  http.request(request)
148
194
  end
149
195
 
150
- JSON.parse(response.body, symbolize_names: true)
196
+ h = JSON.parse(response.body, symbolize_names: true)
197
+ raise ChatGpt2023Error, h[:error][:message].inspect if h.has_key? :error
198
+
199
+ return h
151
200
  end
152
201
 
153
202
  end
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.2.0
4
+ version: 0.2.2
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-01-25 00:00:00.000000000 Z
39
+ date: 2023-02-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