gpt3 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/gpt3.rb +78 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 16be7ac400fbba7f5377773709e5e55d32c7c57dfb50be45692f1a5b093b16af
4
+ data.tar.gz: b76bdcc17aac130051f106f6a1fcaeaa0519263ee67bbf56376e6ca0b781587b
5
+ SHA512:
6
+ metadata.gz: daba59d99cffe0db10b42bd1dabf6321be3a03be61b5a87141215fcd3dc8b478b2e994bee95f6591157f36f8fe7f5206da4c751992f678e85237be24bd1f81d5
7
+ data.tar.gz: db7a6d5ce762ace7d952e3977c41b9b68cb5adf41d471061a7bb2953b967ddb96bbf232931beafc462aa64f39c04e9c99a80e3c5efcc6ec737207b6a1d105956
@@ -0,0 +1,78 @@
1
+ class GPT3
2
+ # TODO do these need to declared as dependencies somewhere in the gemspec?
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ API_VERSION = 1
8
+ ENGINE = 'davinci'
9
+ BASE_URL = "https://api.openai.com/v#{API_VERSION}/engines/#{ENGINE}"
10
+ SECRET_KEY = ENV.fetch('OPENAI_SK', 'sk-FuRLCnrvrnkcOZoprk259QGjfLWTl1epWw9heo8s')
11
+
12
+ class Completion
13
+ DEFAULT_TEMPERATURE = 0.5
14
+ # defaults:
15
+ # {
16
+ # "prompt": "Once upon a time",
17
+ # "max_tokens": 5,
18
+ # "temperature": 1,
19
+ # "top_p": 1,
20
+ # "n": 1,
21
+ # "stream": false,
22
+ # "logprobs": null,
23
+ # "stop": "\n"
24
+ # }
25
+
26
+ attr_accessor :data
27
+ def initialize(*params)
28
+ self.data = params
29
+ end
30
+
31
+ def self.create(prompt, max_tokens: 512, engine: ENGINE, temperature: DEFAULT_TEMPERATURE, n: 1, stop: nil, verbose: false)
32
+ endpoint = URI.parse("#{GPT3::BASE_URL}/completions")
33
+ header = {
34
+ 'Content-Type': 'application/json',
35
+ 'Authorization': 'Bearer ' + SECRET_KEY
36
+ }
37
+ data = {
38
+ 'prompt': prompt,
39
+ 'max_tokens': max_tokens,
40
+ 'temperature': temperature,
41
+ 'stop': stop,
42
+ 'n': n
43
+ }
44
+
45
+ if verbose
46
+ puts "+ Creating GPT-3 Completion for the following prompt (with temperature=#{temperature}):"
47
+ puts "| " + prompt.gsub("\n", "\n| ")
48
+ puts "+" + ("-" * 50)
49
+ end
50
+
51
+ # Create the HTTP objects
52
+ https = Net::HTTP.new(endpoint.host, endpoint.port)
53
+ https.use_ssl = true
54
+ request = Net::HTTP::Post.new(endpoint.request_uri, header)
55
+ request.body = data.to_json
56
+
57
+ # Send the request
58
+ response = https.request(request)
59
+
60
+ # Parse it and return formatted API results
61
+ JSON.parse(response.body)
62
+ end
63
+
64
+ def self.search
65
+ raise "Not Implemented"
66
+ end
67
+ end
68
+
69
+ class Engine
70
+ def self.list
71
+ raise "Not Implemented"
72
+ end
73
+
74
+ def self.retrieve(engine)
75
+ raise "Not Implemented"
76
+ end
77
+ end
78
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gpt3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Brown
8
+ - Indent Labs
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2020-07-14 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: An unofficial wrapper for using the GPT-3 Sandbox API in Ruby.
15
+ email: andrew@indentlabs.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/gpt3.rb
21
+ homepage: https://rubygems.org/gems/gpt3
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubygems_version: 3.0.3
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: An unofficial wrapper for using the GPT-3 Sandbox API in Ruby.
44
+ test_files: []