pleasegpt 0.1.0 → 0.2.0
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
- data/bin/console +15 -0
- data/bin/pleasegpt +10 -6
- data/bin/setup +8 -0
- data/lib/pleasegpt/cli.rb +5 -0
- data/lib/pleasegpt/gems.rb +7 -0
- data/lib/pleasegpt/openai_api.rb +32 -0
- data/lib/pleasegpt/version.rb +6 -0
- data/lib/pleasegpt.rb +22 -35
- data/spec/bin/pleasegpt_test.rb +6 -5
- data/spec/lib/cli_test.rb +17 -8
- data/spec/lib/pleasegpt_test.rb +59 -12
- data/spec/pleasegpt_spec.rb +9 -0
- data/spec/spec_helper.rb +11 -8
- metadata +75 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80324ce62390d5faf8471f67c5224454feb99960993e0d596cc5b420e1c57c25
|
4
|
+
data.tar.gz: 8c7aff7f3c3f0b6f4e012da47c1d808c1b2b112a83df4bc7d9981e98b8a8a580
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3216455a7dac511673f8cb1499d1749d56eb3a8c9aaed765136f70a764acdfebf91c8b6b0b13fbcfbbf41ad67d4d4b467ef2a658701b054995950210074da945
|
7
|
+
data.tar.gz: c4f60381dd7553bc7ad9e4249b0b1e90f0c66bf40ef39e684b301751acea7709dfc105139e34ab7b3364f5c2476861023f0f65c4655991a9fb6a32ed86fac296
|
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'pleasegpt'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start(__FILE__)
|
data/bin/pleasegpt
CHANGED
@@ -9,13 +9,17 @@ case ARGV[0]
|
|
9
9
|
when 'load-key'
|
10
10
|
PleaseGPT::Api.load_api_key
|
11
11
|
when 'help'
|
12
|
-
puts
|
13
|
-
PleaseGPT - A command-line tool for OpenAI's GPT-3 API
|
12
|
+
puts <<~HELP
|
13
|
+
PleaseGPT - A command-line tool for OpenAI's GPT-3 API.
|
14
|
+
Using special characters in your command is not supported. In this case, please use double quotes.
|
14
15
|
|
15
|
-
Usage:
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
Usage:
|
17
|
+
pleasegpt help Show all commands
|
18
|
+
pleasegpt load-key Save OpenAI key in a Env file. (Required)
|
19
|
+
pleasegpt "any text or question" Reply your request
|
20
|
+
pleasegpt -c "your question" When requesting a command, will reply only the command.
|
21
|
+
pleasegpt autocomplete "your-text" Complete your partial request
|
22
|
+
pleasegpt suggest "your-text" Suggest a new text based on your request
|
19
23
|
HELP
|
20
24
|
else
|
21
25
|
PleaseGPT::CLI.new.start(ARGV)
|
data/bin/setup
ADDED
data/lib/pleasegpt/cli.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pleasegpt'
|
2
4
|
require 'colorize'
|
3
5
|
|
@@ -7,6 +9,9 @@ module PleaseGPT
|
|
7
9
|
def start(args)
|
8
10
|
if args.empty?
|
9
11
|
puts '>>> Please enter a valid command <<<'
|
12
|
+
elsif args[0] == '-c'
|
13
|
+
input = args[1..].join(' ')
|
14
|
+
puts Api.generate_command(input).to_s.colorize(:green)
|
10
15
|
else
|
11
16
|
input = args.join(' ')
|
12
17
|
puts Api.generate_text(input).to_s.colorize(:green)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dotenv'
|
4
|
+
require 'openai'
|
5
|
+
|
6
|
+
# rubocop:disable Metrics/MethodLength
|
7
|
+
|
8
|
+
# Main module for OpenAI Client
|
9
|
+
module OpenaiClient
|
10
|
+
def self.openai_response(prompt, max_tokens, temperature, responses_qty, stop)
|
11
|
+
response = openai_client_new.completions(
|
12
|
+
parameters: {
|
13
|
+
model: 'text-davinci-003',
|
14
|
+
prompt: prompt,
|
15
|
+
max_tokens: max_tokens,
|
16
|
+
temperature: temperature,
|
17
|
+
n: responses_qty,
|
18
|
+
stop: stop
|
19
|
+
}
|
20
|
+
)
|
21
|
+
PleaseGPT::Error.check_response(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.openai_client_new
|
25
|
+
Dotenv.load(PleaseGPT::Api.join_lib_dir_with_file)
|
26
|
+
raise PleaseGPT::Error, 'OPENAI_API_KEY not set' unless ENV['OPENAI_API_KEY']
|
27
|
+
|
28
|
+
OpenAI::Client.new(access_token: ENV['OPENAI_API_KEY'])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# rubocop:enable Metrics/MethodLength
|
data/lib/pleasegpt.rb
CHANGED
@@ -1,14 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'pleasegpt/version'
|
4
|
+
require_relative 'pleasegpt/gems'
|
5
|
+
require_relative 'pleasegpt/openai_api'
|
6
6
|
|
7
7
|
# Main module for PleaseGPT gem
|
8
8
|
module PleaseGPT
|
9
9
|
autoload :CLI, 'pleasegpt/cli'
|
10
10
|
|
11
|
-
#
|
11
|
+
# Error class for OpenAI API requests and response errors
|
12
|
+
class Error < StandardError
|
13
|
+
def self.check_response(response)
|
14
|
+
if response['choices'].nil? || response['choices'].empty?
|
15
|
+
raise PleaseGPT::Error, 'Request returned empty response'
|
16
|
+
elsif response['choices'][0]['text'].nil?
|
17
|
+
raise PleaseGPT::Error, 'Request returned nil text'
|
18
|
+
else
|
19
|
+
response['choices'][0]['text'].strip
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Main module for Dirs and loading/Saving API key
|
12
25
|
module Api
|
13
26
|
def self.load_api_key
|
14
27
|
key = ask('Please paste your OpenAI API key: ')
|
@@ -39,38 +52,12 @@ module PleaseGPT
|
|
39
52
|
end
|
40
53
|
end
|
41
54
|
|
42
|
-
def self.openai_client
|
43
|
-
Dotenv.load(join_lib_dir_with_file)
|
44
|
-
raise 'OPENAI_API_KEY not set' unless ENV['OPENAI_API_KEY']
|
45
|
-
|
46
|
-
OpenAI::Client.new(access_token: ENV['OPENAI_API_KEY'])
|
47
|
-
end
|
48
|
-
|
49
55
|
def self.generate_text(input)
|
50
|
-
|
51
|
-
parameters: {
|
52
|
-
model: 'text-davinci-003',
|
53
|
-
prompt: input,
|
54
|
-
max_tokens: 300,
|
55
|
-
temperature: 0.5,
|
56
|
-
n: 1,
|
57
|
-
stop: '.'
|
58
|
-
}
|
59
|
-
)
|
60
|
-
Error.check_response(response)
|
56
|
+
OpenaiClient.openai_response(input, 300, 0.5, 1, '.')
|
61
57
|
end
|
62
|
-
end
|
63
58
|
|
64
|
-
|
65
|
-
|
66
|
-
def self.check_response(response)
|
67
|
-
if response['choices'].nil? || response['choices'].empty?
|
68
|
-
raise PleaseGPT::Error, 'Request returned empty response'
|
69
|
-
elsif response['choices'][0]['text'].nil?
|
70
|
-
raise PleaseGPT::Error, 'Request returned nil text'
|
71
|
-
else
|
72
|
-
response['choices'][0]['text'].strip
|
73
|
-
end
|
59
|
+
def self.generate_command(input)
|
60
|
+
OpenaiClient.openai_response(input, 100, 0.5, 1, '\n')
|
74
61
|
end
|
75
62
|
end
|
76
63
|
end
|
data/spec/bin/pleasegpt_test.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
RSpec.describe
|
4
|
-
it
|
5
|
-
|
6
|
-
|
7
|
-
.and output(String).to_stdout
|
5
|
+
RSpec.describe 'pleasegpt executable' do
|
6
|
+
it 'runs with the given arguments' do
|
7
|
+
output = `bin/pleasegpt what is the capital of France?`
|
8
|
+
expect(output).to_not be_empty
|
8
9
|
end
|
9
10
|
end
|
data/spec/lib/cli_test.rb
CHANGED
@@ -1,11 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'pleasegpt/cli'
|
3
|
-
require 'colorize'
|
4
5
|
|
5
6
|
RSpec.describe PleaseGPT::CLI do
|
6
|
-
describe
|
7
|
-
context
|
8
|
-
let(:args) { [
|
7
|
+
describe '#start' do
|
8
|
+
context 'when given empty args' do
|
9
|
+
let(:args) { [] }
|
10
|
+
|
11
|
+
it 'returns an error message' do
|
12
|
+
expected_output = ">>> Please enter a valid command <<<\n"
|
13
|
+
expect { subject.start(args) }.to output(expected_output).to_stdout
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when given a valid command receives a response in blue' do
|
18
|
+
let(:args) { ['how much is 2+2?'] }
|
9
19
|
|
10
20
|
before do
|
11
21
|
allow(PleaseGPT::Api).to receive(:generate_text).with(args.join(' ')) do
|
@@ -13,10 +23,9 @@ RSpec.describe PleaseGPT::CLI do
|
|
13
23
|
end
|
14
24
|
end
|
15
25
|
|
16
|
-
it
|
17
|
-
|
18
|
-
expect { subject.start(args) }.to output(
|
19
|
-
expect { subject.start(args) }.to output(/\e\[0;34;49m.*\e\[0m\n/).to_stdout
|
26
|
+
it 'returns the response from the OpenAI API with blue colour' do
|
27
|
+
expected_output = "\e[0;32;49mThe answer is 4.\e[0m\n"
|
28
|
+
expect { subject.start(args) }.to output(expected_output).to_stdout
|
20
29
|
end
|
21
30
|
end
|
22
31
|
end
|
data/spec/lib/pleasegpt_test.rb
CHANGED
@@ -1,21 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'pleasegpt'
|
3
5
|
|
6
|
+
# rubocop:disable Metrics/BlockLength
|
7
|
+
|
4
8
|
RSpec.describe PleaseGPT::Api do
|
5
|
-
describe '
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
.to receive(:
|
12
|
-
.
|
9
|
+
describe 'Api' do
|
10
|
+
context 'when API key is valid' do
|
11
|
+
let(:key) { 'valid_key' }
|
12
|
+
|
13
|
+
before do
|
14
|
+
allow(PleaseGPT::Api).to receive(:ask).and_return(key)
|
15
|
+
allow(File).to receive(:write)
|
16
|
+
allow(File).to receive(:open)
|
17
|
+
allow(Dotenv).to receive(:load)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'saves the API key to the file' do
|
21
|
+
expect(PleaseGPT::Api).to receive(:save_api_key).with(key)
|
22
|
+
PleaseGPT::Api.load_api_key
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'sets the OPENAI_API_KEY environment variable' do
|
26
|
+
expect(PleaseGPT::Api).to receive(:env_variable).with(key)
|
27
|
+
PleaseGPT::Api.load_api_key
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when API key is empty' do
|
32
|
+
it 'does not save the API key to the file' do
|
33
|
+
allow(PleaseGPT::Api).to receive(:ask).and_return('')
|
34
|
+
expect { PleaseGPT::Api.load_api_key }.to output("API Key cannot be empty. Please try again.\n").to_stdout
|
35
|
+
end
|
13
36
|
end
|
14
37
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
38
|
+
describe '.generate_text' do
|
39
|
+
before do
|
40
|
+
allow(PleaseGPT::Api).to receive(:openai_client).and_return(client)
|
41
|
+
allow(PleaseGPT::Error).to receive(:check_response).and_return('output text')
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:client) { double('client') }
|
45
|
+
|
46
|
+
it 'returns generated text' do
|
47
|
+
expect(client).to receive(:completions)
|
48
|
+
expect(PleaseGPT::Api.generate_text('prompt')).to eq('output text')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '.openai_client' do
|
53
|
+
let(:api_key) { 'key123' }
|
54
|
+
let(:client) { double('client') }
|
55
|
+
|
56
|
+
before do
|
57
|
+
ENV['OPENAI_API_KEY'] = api_key
|
58
|
+
allow(OpenAI::Client).to receive(:new).and_return(client)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'returns a new instance of OpenAI::Client' do
|
62
|
+
expect(PleaseGPT::Api.openai_client).to eq(client)
|
63
|
+
end
|
19
64
|
end
|
20
65
|
end
|
21
66
|
end
|
67
|
+
|
68
|
+
# rubocop:enable Metrics/BlockLength
|
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rspec'
|
2
4
|
require 'pleasegpt'
|
3
5
|
require 'dotenv/load'
|
4
6
|
|
5
|
-
|
6
|
-
#
|
7
|
-
|
8
|
-
api_key = gets.chomp
|
7
|
+
RSpec.configure do |config|
|
8
|
+
# Enable flags like --only-failures and --next-failure
|
9
|
+
config.example_status_persistence_file_path = '.rspec_status'
|
9
10
|
|
10
|
-
#
|
11
|
-
|
12
|
-
|
11
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
12
|
+
config.disable_monkey_patching!
|
13
|
+
|
14
|
+
config.expect_with :rspec do |c|
|
15
|
+
c.syntax = :expect
|
16
|
+
end
|
13
17
|
|
14
|
-
RSpec.configure do |config|
|
15
18
|
config.color = true
|
16
19
|
config.formatter = :documentation
|
17
20
|
end
|
metadata
CHANGED
@@ -1,29 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pleasegpt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafael Moreira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: colorize
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.8.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.8.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dotenv
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.8'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.8.1
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.8'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.8.1
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: highline
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.1'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.1'
|
27
61
|
- !ruby/object:Gem::Dependency
|
28
62
|
name: openai
|
29
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,73 +73,89 @@ dependencies:
|
|
39
73
|
- !ruby/object:Gem::Version
|
40
74
|
version: 0.3.0
|
41
75
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
76
|
+
name: rake
|
43
77
|
requirement: !ruby/object:Gem::Requirement
|
44
78
|
requirements:
|
45
79
|
- - "~>"
|
46
80
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 2.8.1
|
81
|
+
version: '13.0'
|
51
82
|
type: :runtime
|
52
83
|
prerelease: false
|
53
84
|
version_requirements: !ruby/object:Gem::Requirement
|
54
85
|
requirements:
|
55
86
|
- - "~>"
|
56
87
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
58
|
-
|
88
|
+
version: '13.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rspec
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
59
94
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
95
|
+
version: '3.0'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3.0'
|
61
103
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
104
|
+
name: rubocop
|
63
105
|
requirement: !ruby/object:Gem::Requirement
|
64
106
|
requirements:
|
65
107
|
- - "~>"
|
66
108
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
109
|
+
version: '1.21'
|
68
110
|
type: :runtime
|
69
111
|
prerelease: false
|
70
112
|
version_requirements: !ruby/object:Gem::Requirement
|
71
113
|
requirements:
|
72
114
|
- - "~>"
|
73
115
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
116
|
+
version: '1.21'
|
75
117
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
118
|
+
name: ruby-openai
|
77
119
|
requirement: !ruby/object:Gem::Requirement
|
78
120
|
requirements:
|
79
121
|
- - "~>"
|
80
122
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
123
|
+
version: '3.7'
|
82
124
|
type: :runtime
|
83
125
|
prerelease: false
|
84
126
|
version_requirements: !ruby/object:Gem::Requirement
|
85
127
|
requirements:
|
86
128
|
- - "~>"
|
87
129
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
89
|
-
description:
|
90
|
-
|
91
|
-
|
130
|
+
version: '3.7'
|
131
|
+
description: |
|
132
|
+
A Ruby gem that provides a wrapper around the OpenAI API.
|
133
|
+
It allows you to generate natural language text based on a given prompt.
|
134
|
+
email: rafamsilva@gmail.com
|
92
135
|
executables:
|
93
136
|
- pleasegpt
|
94
137
|
extensions: []
|
95
138
|
extra_rdoc_files: []
|
96
139
|
files:
|
140
|
+
- bin/console
|
97
141
|
- bin/pleasegpt
|
142
|
+
- bin/setup
|
98
143
|
- lib/pleasegpt.rb
|
99
144
|
- lib/pleasegpt/cli.rb
|
145
|
+
- lib/pleasegpt/gems.rb
|
146
|
+
- lib/pleasegpt/openai_api.rb
|
147
|
+
- lib/pleasegpt/version.rb
|
100
148
|
- spec/bin/pleasegpt_test.rb
|
101
149
|
- spec/lib/cli_test.rb
|
102
150
|
- spec/lib/pleasegpt_test.rb
|
151
|
+
- spec/pleasegpt_spec.rb
|
103
152
|
- spec/spec_helper.rb
|
104
153
|
homepage: https://github.com/rafaover/pleasegpt
|
105
154
|
licenses:
|
106
155
|
- MIT
|
107
156
|
metadata: {}
|
108
|
-
post_install_message:
|
157
|
+
post_install_message: Thanks for installing! Please run `pleasegpt load-key` to configure
|
158
|
+
the gem.
|
109
159
|
rdoc_options: []
|
110
160
|
require_paths:
|
111
161
|
- lib
|
@@ -113,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
163
|
requirements:
|
114
164
|
- - ">="
|
115
165
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
166
|
+
version: 2.6.0
|
117
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
168
|
requirements:
|
119
169
|
- - ">="
|
@@ -123,5 +173,5 @@ requirements: []
|
|
123
173
|
rubygems_version: 3.3.7
|
124
174
|
signing_key:
|
125
175
|
specification_version: 4
|
126
|
-
summary: A
|
176
|
+
summary: A wrapper around the OpenAI API Chat Model
|
127
177
|
test_files: []
|