ruby-openai 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61d4334878bbc6975011c4a27e0b7e9670d4b0abe37ac02dcd9059e2c98d3ecb
4
- data.tar.gz: db0896a130eb8931d4847127f1b165e234706c9d402728da89c326b3702ac919
3
+ metadata.gz: bdfaef88879152f3de0bd34e96e5cce4c669693347715a4cc776cd2da4e27864
4
+ data.tar.gz: 171f6b21eb32a63142a11c7964d3f1871343634bbe845c30a56a9ff72ea912dc
5
5
  SHA512:
6
- metadata.gz: f2d419f61441f4afb4d2aaaeb9d11b14d7ac0db905bc6f886d9069c3b9575a59657586b9a0094cf2f99c9bf1390d46a663cf4b19ea85aca89a91e78ccc59053b
7
- data.tar.gz: 6b539d35aab4aee91b8ecdd2055f26c2854435589bfd6b8665689b58983eb7bfadd0e62ff425cc1d73b4d5ef15451dcf3d41e29f00bb289a4c42937c30b04855
6
+ metadata.gz: 2471a90fddcad074339e338f24df56980ab47c76b70aa3f4f4d5676b6e8d841525a5d911ee69d586165697ecd177d3b9f9d11bec93a7c73f7ecc1a6df5fb4036
7
+ data.tar.gz: 41c2a29991c0b60cc574fe65fdf3043fe610a96e36075ee963882bee2b52e741d1cb57ad8a95e4a02c72eabcbb3999318ddad7f822c9b27d92802d33ae66cc47
@@ -1,25 +1,24 @@
1
1
  version: 2.1 # Use 2.1 to enable using orbs and other features.
2
2
 
3
3
  # Declare the orbs that we'll use in our config.
4
- # read more about orbs: https://circleci.com/docs/2.0/using-orbs/
5
4
  orbs:
6
5
  ruby: circleci/ruby@1.0
7
6
 
8
7
  jobs:
9
- build: # our first job, named "build"
8
+ rubocop:
9
+ parallelism: 1
10
10
  docker:
11
- - image: cimg/ruby:2.7-node # use a tailored CircleCI docker image.
11
+ - image: cimg/ruby:2.7-node
12
12
  steps:
13
- - checkout # pull down our git code.
14
- - ruby/install-deps # use the ruby orb to install dependencies
15
-
16
- test: # our next job, called "test"
17
- # we can run "parallel job containers" to enable speeding up our tests;
18
- # this splits our tests across multiple containers.
13
+ - checkout
14
+ - ruby/install-deps
15
+ - run:
16
+ name: Run Rubocop
17
+ command: bundle exec rubocop
18
+ test:
19
19
  parallelism: 1
20
20
  docker:
21
- - image: cimg/ruby:2.7-node # this is our primary docker image, where step commands run.
22
- # A series of steps to run, some are similar to those in "build".
21
+ - image: cimg/ruby:2.7-node
23
22
  steps:
24
23
  - checkout
25
24
  - ruby/install-deps
@@ -27,12 +26,9 @@ jobs:
27
26
  name: Run tests
28
27
  command: bundle exec rspec -fd
29
28
 
30
- # We use workflows to orchestrate the jobs that we declared above.
31
29
  workflows:
32
30
  version: 2
33
- build_and_test: # The name of our workflow is "build_and_test"
34
- jobs: # The list of jobs we run as part of this workflow.
35
- - build # Run build first.
36
- - test: # Then run test,
37
- requires: # Test requires that build passes for it to run.
38
- - build # Finally, run the build job.
31
+ checks:
32
+ jobs:
33
+ - rubocop
34
+ - test
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Desktop (please complete the following information):**
27
+ - OS: [e.g. iOS]
28
+ - Browser [e.g. chrome, safari]
29
+ - Version [e.g. 22]
30
+
31
+ **Smartphone (please complete the following information):**
32
+ - Device: [e.g. iPhone6]
33
+ - OS: [e.g. iOS8.1]
34
+ - Browser [e.g. stock browser, safari]
35
+ - Version [e.g. 22]
36
+
37
+ **Additional context**
38
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -5,7 +5,47 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.2.0] - 2020-11-22
9
+
10
+ ### Added
11
+
12
+ - Add method to use the search endpoint.
13
+
14
+ ## [0.1.4] - 2020-10-18
15
+
16
+ ### Changed
17
+
18
+ - Bump Rubocop to 3.9.2.
19
+ - Bump Webmock to 3.9.1.
20
+
21
+ ## [0.1.3] - 2020-09-09
22
+
23
+ ### Changed
24
+
25
+ - Add ability to change API version in the future.
26
+ - Fix README typos.
27
+
28
+ ## [0.1.2] - 2020-09-09
29
+
30
+ ### Added
31
+
32
+ - Add tests and cached responses for the different engines.
33
+ - Add issue templates.
34
+
35
+ ### Changed
36
+
37
+ - Add README instructions for using the gem without dotenv.
38
+ - Add list of engines to README.
39
+
40
+ ## [0.1.1] - 2020-09-08
41
+
42
+ ### Added
43
+
44
+ - Run Rubocop on pulls using CircleCI.
45
+
46
+ ### Changed
47
+
48
+ - Clean up CircleCI config file.
9
49
 
10
50
  ## [0.1.0] - 2020-09-06
11
51
 
data/Gemfile CHANGED
@@ -6,6 +6,6 @@ gemspec
6
6
  gem "byebug", "~> 11.1.3"
7
7
  gem "rake", "~> 13.0"
8
8
  gem "rspec", "~> 3.0"
9
- gem "rubocop", "~> 0.90.0"
9
+ gem "rubocop", "~> 0.93.1"
10
10
  gem "vcr", "~> 6.0.0"
11
- gem "webmock", "~> 3.8.3"
11
+ gem "webmock", "~> 3.9.2"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-openai (0.1.0)
4
+ ruby-openai (0.2.0)
5
5
  dotenv (~> 2.7.6)
6
6
  httparty (~> 0.18.1)
7
7
 
@@ -12,8 +12,7 @@ GEM
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
13
  ast (2.4.1)
14
14
  byebug (11.1.3)
15
- crack (0.4.3)
16
- safe_yaml (~> 1.0.0)
15
+ crack (0.4.4)
17
16
  diff-lcs (1.4.4)
18
17
  dotenv (2.7.6)
19
18
  hashdiff (1.0.1)
@@ -25,12 +24,12 @@ GEM
25
24
  mime-types-data (3.2020.0512)
26
25
  multi_xml (0.6.0)
27
26
  parallel (1.19.2)
28
- parser (2.7.1.4)
27
+ parser (2.7.2.0)
29
28
  ast (~> 2.4.1)
30
- public_suffix (4.0.5)
29
+ public_suffix (4.0.6)
31
30
  rainbow (3.0.0)
32
31
  rake (13.0.1)
33
- regexp_parser (1.7.1)
32
+ regexp_parser (1.8.2)
34
33
  rexml (3.2.4)
35
34
  rspec (3.9.0)
36
35
  rspec-core (~> 3.9.0)
@@ -45,22 +44,21 @@ GEM
45
44
  diff-lcs (>= 1.2.0, < 2.0)
46
45
  rspec-support (~> 3.9.0)
47
46
  rspec-support (3.9.3)
48
- rubocop (0.90.0)
47
+ rubocop (0.93.1)
49
48
  parallel (~> 1.10)
50
- parser (>= 2.7.1.1)
49
+ parser (>= 2.7.1.5)
51
50
  rainbow (>= 2.2.2, < 4.0)
52
- regexp_parser (>= 1.7)
51
+ regexp_parser (>= 1.8)
53
52
  rexml
54
- rubocop-ast (>= 0.3.0, < 1.0)
53
+ rubocop-ast (>= 0.6.0)
55
54
  ruby-progressbar (~> 1.7)
56
55
  unicode-display_width (>= 1.4.0, < 2.0)
57
- rubocop-ast (0.3.0)
58
- parser (>= 2.7.1.4)
56
+ rubocop-ast (0.7.1)
57
+ parser (>= 2.7.1.5)
59
58
  ruby-progressbar (1.10.1)
60
- safe_yaml (1.0.5)
61
59
  unicode-display_width (1.7.0)
62
60
  vcr (6.0.0)
63
- webmock (3.8.3)
61
+ webmock (3.9.2)
64
62
  addressable (>= 2.3.6)
65
63
  crack (>= 0.3.2)
66
64
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -72,10 +70,10 @@ DEPENDENCIES
72
70
  byebug (~> 11.1.3)
73
71
  rake (~> 13.0)
74
72
  rspec (~> 3.0)
75
- rubocop (~> 0.90.0)
73
+ rubocop (~> 0.93.1)
76
74
  ruby-openai!
77
75
  vcr (~> 6.0.0)
78
- webmock (~> 3.8.3)
76
+ webmock (~> 3.9.2)
79
77
 
80
78
  BUNDLED WITH
81
79
  2.1.4
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Ruby::OpenAI
2
2
 
3
- [![CircleCI Build Status](https://circleci.com/gh/alexrudall/ruby-openai.svg?style=shield)](https://circleci.com/gh/alexrudall/ruby-openai)
3
+ [![Gem Version](https://badge.fury.io/rb/ruby-openai.svg)](https://badge.fury.io/rb/ruby-openai)
4
4
  [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/alexrudall/ruby-openai/blob/master/LICENSE.txt)
5
+ [![CircleCI Build Status](https://circleci.com/gh/alexrudall/ruby-openai.svg?style=shield)](https://circleci.com/gh/alexrudall/ruby-openai)
5
6
 
6
7
  A simple Ruby wrapper for the [OpenAI GPT-3 API](https://openai.com/blog/openai-api/).
7
8
 
@@ -25,23 +26,36 @@ Or install it yourself as:
25
26
 
26
27
  Get your API key from [https://beta.openai.com/docs/developer-quickstart/your-api-keys](https://beta.openai.com/docs/developer-quickstart/your-api-keys)
27
28
 
28
- Add your secret key to your .env file:
29
+ ### With dotenv
30
+
31
+ If you're using [dotenv](https://github.com/motdotla/dotenv), you can add your secret key to your .env file:
29
32
 
30
33
  ```
31
- OPENAI_ACCESS_TOKEN=secretkeygoeshere
34
+ OPENAI_ACCESS_TOKEN=access_token_goes_here
32
35
  ```
33
36
 
34
- Create a client:
37
+ And create a client:
35
38
 
36
39
  ```
37
40
  client = OpenAI::Client.new
38
41
  ```
39
42
 
40
- Use it to hit the OpenAI API for a completion:
43
+ ### Without dotenv
44
+
45
+ Alternatively you can pass your key directly to a new client:
46
+
47
+ ```
48
+ client = OpenAI::Client.new(access_token: "access_token_goes_here")
49
+ ```
50
+
51
+ ### Get a response
52
+
53
+ The engine options are currently "ada", "babbage", "curie" and "davinci". Hit the OpenAI API for a completion:
41
54
 
42
55
  ```
43
56
  response = client.call(engine: "davinci", prompt: "Once upon a time", max_tokens: 5)
44
- response.parsed_response['choices'].map{ |c| c["text"] }
57
+ puts response.parsed_response['choices'].map{ |c| c["text"] }
58
+ => [", there lived a great"]
45
59
  ```
46
60
 
47
61
  ## Development
@@ -1,15 +1,15 @@
1
1
  module OpenAI
2
2
  class Client
3
3
  include HTTParty
4
- base_uri "https://api.openai.com/v1/engines"
4
+ base_uri "https://api.openai.com"
5
5
 
6
6
  def initialize(access_token: nil)
7
7
  @access_token = access_token || ENV["OPENAI_ACCESS_TOKEN"]
8
8
  end
9
9
 
10
- def call(engine:, prompt:, max_tokens:)
10
+ def call(engine:, prompt:, max_tokens:, version: default_version)
11
11
  self.class.post(
12
- "/#{engine}/completions",
12
+ "/#{version}/engines/#{engine}/completions",
13
13
  headers: {
14
14
  "Content-Type" => "application/json",
15
15
  "Authorization" => "Bearer #{@access_token}"
@@ -19,5 +19,24 @@ module OpenAI
19
19
  }.to_json
20
20
  )
21
21
  end
22
+
23
+ def search(engine:, documents:, query:, version: default_version)
24
+ self.class.post(
25
+ "/#{version}/engines/#{engine}/search",
26
+ headers: {
27
+ "Content-Type" => "application/json",
28
+ "Authorization" => "Bearer #{@access_token}"
29
+ },
30
+ body: {
31
+ documents: documents, query: query
32
+ }.to_json
33
+ )
34
+ end
35
+
36
+ private
37
+
38
+ def default_version
39
+ "v1".freeze
40
+ end
22
41
  end
23
42
  end
@@ -1,5 +1,5 @@
1
1
  module Ruby
2
2
  module OpenAI
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.summary = "A Ruby gem for the OpenAI GPT-3 API"
10
10
  spec.homepage = "https://github.com/alexrudall/ruby-openai"
11
11
  spec.license = "MIT"
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
13
13
 
14
14
  spec.metadata["homepage_uri"] = spec.homepage
15
15
  spec.metadata["source_code_uri"] = "https://github.com/alexrudall/ruby-openai"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-06 00:00:00.000000000 Z
11
+ date: 2020-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -46,6 +46,8 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - ".circleci/config.yml"
49
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
50
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
49
51
  - ".gitignore"
50
52
  - ".rspec"
51
53
  - ".rubocop.yml"
@@ -78,14 +80,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
80
  requirements:
79
81
  - - ">="
80
82
  - !ruby/object:Gem::Version
81
- version: 2.3.0
83
+ version: 2.7.0
82
84
  required_rubygems_version: !ruby/object:Gem::Requirement
83
85
  requirements:
84
86
  - - ">="
85
87
  - !ruby/object:Gem::Version
86
88
  version: '0'
87
89
  requirements: []
88
- rubygems_version: 3.1.2
90
+ rubygems_version: 3.1.4
89
91
  signing_key:
90
92
  specification_version: 4
91
93
  summary: A Ruby gem for the OpenAI GPT-3 API