tiny_chat_gpt 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/tiny_chat_gpt.rb +61 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65e3af15974d0088f1cc53eacb0957e600a324ce7862d4e4656bb9022b097773
|
4
|
+
data.tar.gz: 5a01788191a33bccc7cdb77b2183f249ea3c576c7f2ecb11667ed636a9447d8a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1f4dbb55d0e27478b28619db2ec83f2a1bd801d3631686c2d11ac27ef14c5dd03fe8d88037da07988de1c8203fbaef20aaeb57b8b0401cec86ebd16bfd4f9efc
|
7
|
+
data.tar.gz: 12b646bc6db077e7407e7499bab7b6d0f33102a92b81f888d252a8e38a2b0effaf8123e09132e63167f786248cd07a4e78e18ef1d4ce92736967bb18e8016bee
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
# the TinyChatGPT class is an API adapter for OpenAI's GPT-3 based ChatGPT
|
5
|
+
# model. this class makes it easy to send prompts to the ChatGPT API and
|
6
|
+
# receive responses.
|
7
|
+
#
|
8
|
+
# usage:
|
9
|
+
# chatbot = ChatGPT.new("davinci", "your_api_key")
|
10
|
+
# puts chatbot.ask("Hello, how are you today?")
|
11
|
+
#
|
12
|
+
# if there is any non-200 HTTP response from the API then an instance of
|
13
|
+
# TinyChatGpt::APIError will be raised with a helpful error message.
|
14
|
+
#
|
15
|
+
# NOTE: this version does not maintain any context from one prompt to the next,
|
16
|
+
# so having a longer conversation with ChatGPT via this client is not yet
|
17
|
+
# supported. every use of the #ask method is sent as a separate API request,
|
18
|
+
# and does not include the context of previous prompts and replies.
|
19
|
+
class TinyChatGpt
|
20
|
+
API_URL = "https://api.openai.com/v1/engines/davinci/jobs".freeze
|
21
|
+
|
22
|
+
def initialize(model, api_key)
|
23
|
+
@model = model
|
24
|
+
@api_key = api_key
|
25
|
+
end
|
26
|
+
|
27
|
+
def ask(prompt)
|
28
|
+
request = {
|
29
|
+
prompt: prompt,
|
30
|
+
max_tokens: 100,
|
31
|
+
n: 1,
|
32
|
+
stop: "",
|
33
|
+
temperature: 0.5,
|
34
|
+
model: @model
|
35
|
+
}
|
36
|
+
response = _send_request(request)
|
37
|
+
|
38
|
+
if response.code == 200
|
39
|
+
_parse_response(response)
|
40
|
+
else
|
41
|
+
raise TinyChatGpt::APIError.new("ERR: non-200 HTTP status to ChatGPT: #{response.code}")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def _send_request(request)
|
46
|
+
uri = URI(API_URL)
|
47
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
48
|
+
http.use_ssl = true
|
49
|
+
request = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
|
50
|
+
request.basic_auth(@api_key, '')
|
51
|
+
request.body = request.to_json
|
52
|
+
http.request(request)
|
53
|
+
end
|
54
|
+
|
55
|
+
def _parse_response(response)
|
56
|
+
response = JSON.parse(response)
|
57
|
+
response["choices"].first["text"]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class TinyChatGpt::APIError < RuntimeError; end
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tiny_chat_gpt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeff Lunt
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-02-10 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: a tiny ChatGPT client
|
14
|
+
email: jefflunt@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/tiny_chat_gpt.rb
|
20
|
+
homepage: https://github.com/jefflunt/tiny_chat_gpt
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubygems_version: 3.4.1
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: this library provides a ChatGPT client in Ruby that can be used to interact
|
43
|
+
with ChatGPT programmatically
|
44
|
+
test_files: []
|