chatgpt2023 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f614928641b93d4fbc86a6df977e4bc52c42e66a46958cd88b0c086ef0432fa
4
- data.tar.gz: 433beb2a5d8bab7ffe05fd01d615b3c32e0691aac2bebb8c121940f6290fbaff
3
+ metadata.gz: 4728e79c0d12f0dd5a5ce7a7970f507d6fd79471727fb205f7416b3326fe8985
4
+ data.tar.gz: 7ca136ca869d4908c9fa70827b4a2a549cff92633026c1c70e8843886c026b59
5
5
  SHA512:
6
- metadata.gz: 8f21a74de8195a255865f8f60be43291c13170196dbb1c4fb4f6337118da47c3decc4aab4352f74de2ff16ead582b8565703f127c034f6257602e5ad786a7d52
7
- data.tar.gz: 64ea34173dceb5d96f1dc98b2ba22d729c1376839363ebf8b88a957b436780c12c353ad1877c7a26ba6a23735109ffc251ab8079a63b5c37d68213cd92c5d112
6
+ metadata.gz: f403b18eec392d2b1958b1168536ad716f02ddcd7445a3c67fa46916193190ee920020a2902e63c00621135392f580a00e12948b6dfa56a40f5316dd42d591d2
7
+ data.tar.gz: bda567ca1b04f4e4350c475d62cc4576887c36d7762bae951dd918269f149419411eb76e309a6190ad5e34cea71db375dd55a2a0b6cddff86ab0495a74506faf
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/chatgpt2023.rb CHANGED
@@ -5,6 +5,7 @@
5
5
  require 'net/http'
6
6
  require 'uri'
7
7
  require 'json'
8
+ require 'down'
8
9
 
9
10
 
10
11
  # description: 1st experiment at playing with the ChatGPT API.
@@ -31,42 +32,120 @@ require 'json'
31
32
  # chat.completion 'Say this is a test'
32
33
  # #=> This is indeed a test
33
34
 
35
+ class ChatGpt2023Error < Exception
36
+ end
37
+
34
38
  class ChatGpt2023
35
39
 
36
40
  def initialize(apikey: nil, debug: false)
37
41
 
38
- @apiurl = "https://api.openai.com/v1/completions"
42
+ @apiurl = "https://api.openai.com/v1"
43
+
39
44
  raise 'You must supply an API key!' unless apikey
40
45
  @apikey, @debug = apikey, debug
41
46
 
42
47
  end
43
48
 
44
- def completions(s)
45
- r = self.submit(s)
49
+ def completions(s, temperature: 0, max_tokens: 7)
50
+
51
+ r = go_completions(s, temperature: temperature, max_tokens: max_tokens)
52
+ raise ChatGpt2023Error, r[:error][:message].inspect if r.has_key? :error
53
+
54
+ puts 'completions r: ' + r.inspect if @debug
46
55
  r[:choices]
56
+
47
57
  end
48
58
 
49
- def completion(s)
50
- self.completions(s).first[:text].strip
59
+ def completion(s, temperature: 0, max_tokens: 7)
60
+ go_completions(s, temperature: temperature, max_tokens: max_tokens)\
61
+ .first[:text].strip
51
62
  end
52
63
 
53
64
  alias complete completion
65
+ alias ask completion
66
+
67
+ def edits(s, s2)
68
+ r = go_edits(s, s2)
69
+ end
70
+
71
+ def images(s)
72
+ go_images_generations(s)
73
+ end
74
+
75
+ def image(s)
76
+ r = images(s)
77
+ Down.download(r[:data].first[:url] )
78
+ end
79
+
80
+ alias imagine image
81
+
82
+ def images_edit(s, image, mask: nil)
83
+ go_images_edits(s, image, mask: mask)
84
+ end
85
+
86
+ private
54
87
 
55
- def submit(promptx='Say this is a test', prompt: promptx, type: :completions)
88
+ def go_completions(s, temperature: 0, max_tokens: 7)
89
+
90
+ h = {
91
+ "model" => 'text-davinci-003',
92
+ "prompt" => s,
93
+ "temperature" => temperature,
94
+ "max_tokens" => max_tokens
95
+ }
96
+
97
+ submit('completions', h)
56
98
 
57
- uri = URI.parse(@apiurl)
99
+ end
100
+
101
+ def go_edits(s, s2)
102
+
103
+ h = {
104
+ "model" => 'text-davinci-edit-001',
105
+ "input" => s,
106
+ "instruction" => s2
107
+ }
108
+
109
+ submit('edits', h)
110
+
111
+ end
112
+
113
+ def go_images_generations(s, n: 1, size: '1024x1024')
114
+
115
+ h = {
116
+ "prompt" => s,
117
+ "n" => n,
118
+ "size" => size
119
+ }
120
+
121
+ submit('images/generations', h)
122
+
123
+ end
124
+
125
+ def go_images_edits(s, image, mask: nil, n: 1, size: '1024x1024')
126
+
127
+ h = {
128
+ "image" => image,
129
+ "prompt" => s,
130
+ "n" => n,
131
+ "size" => size
132
+ }
133
+
134
+ h['mask'] = mask if mask
135
+
136
+ submit('images/edits', h)
137
+
138
+ end
139
+
140
+ def submit(uri2, h)
141
+
142
+ uri = URI.parse(@apiurl + '/' + uri2)
58
143
  request = Net::HTTP::Post.new(uri)
59
144
  request.content_type = "application/json"
60
145
  request["Authorization"] = 'Bearer ' + @apikey
61
-
62
- model = {completions: 'text-davinci-003'}
63
-
64
- request.body = JSON.dump({
65
- "model" => model[type],
66
- "prompt" => prompt,
67
- "temperature" => 0,
68
- "max_tokens" => 7
69
- })
146
+
147
+ puts 'h: ' + h.inspect if @debug
148
+ request.body = JSON.dump(h)
70
149
 
71
150
  req_options = {
72
151
  use_ssl: uri.scheme == "https",
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.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -36,8 +36,28 @@ cert_chain:
36
36
  6FQD1/GISew7VvxUJdptXeuVNIsdNKxvL3RpfLCuFsi1WXyJ4k3odRMTmS0kAfTy
37
37
  J4sZZW9RNfabTMQQY7DIs3tUAn6i+O0r9lo=
38
38
  -----END CERTIFICATE-----
39
- date: 2023-01-25 00:00:00.000000000 Z
40
- dependencies: []
39
+ date: 2023-02-07 00:00:00.000000000 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: down
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.4'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 5.4.0
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '5.4'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 5.4.0
41
61
  description:
42
62
  email: digital.robertson@gmail.com
43
63
  executables: []
metadata.gz.sig CHANGED
Binary file