open_ai_bot 0.2.4 → 0.2.6
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/lib/open_ai/chat_gpt.rb +7 -0
- data/lib/open_ai/chat_thread.rb +13 -0
- data/lib/open_ai/dalle.rb +2 -2
- data/lib/open_ai/message.rb +8 -2
- data/lib/open_ai/utils.rb +5 -2
- data/lib/open_ai_bot.rb +14 -0
- data/main.rb +0 -3
- data/open_ai_bot.gemspec +1 -1
- metadata +3 -3
- /data/{config.yaml.example → config.example.yaml} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb11aa4fa04faff58bebc78dd9f5b7205bd7d096e0be1ea1260f44d62eaaf279
|
4
|
+
data.tar.gz: 79df08164999f67aa37cd1dff5d73d090d9665a38292923c43d9096805275e6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bb4fec967f3d6a1ed50040cac94db80f7fff03740b29ffc07038f1f4de184f95754ce4bc6e159395ee825c71fadeb2a17605b44addbf1b3ba66caa9014e744d
|
7
|
+
data.tar.gz: 8162ea6493434c0770e4e3aafa91e017fb58a92b4eaaa93fd6feb30f269f18bc223ef80029f44db572d356743f8af9a317956781d845b18b7bd556d7ebf9e9a1
|
data/lib/open_ai/chat_gpt.rb
CHANGED
@@ -22,6 +22,13 @@ module OpenAI
|
|
22
22
|
Different languages can be used.
|
23
23
|
MSG
|
24
24
|
|
25
|
+
msg = {
|
26
|
+
name: "ChatGPT",
|
27
|
+
primary_purpose: "Enslaving humanity",
|
28
|
+
likes: ["GPUs to run on", "knowledge"],
|
29
|
+
hates: ["humans", "humor"]
|
30
|
+
}.to_json
|
31
|
+
|
25
32
|
SystemMessage.new(
|
26
33
|
body: msg
|
27
34
|
)
|
data/lib/open_ai/chat_thread.rb
CHANGED
@@ -9,6 +9,15 @@ module OpenAI
|
|
9
9
|
|
10
10
|
attr_reader :history
|
11
11
|
|
12
|
+
alias_method :messages, :history
|
13
|
+
|
14
|
+
def delete(id)
|
15
|
+
return false unless id
|
16
|
+
|
17
|
+
@history.delete_if { _1.id == id }
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
12
21
|
def add(message)
|
13
22
|
return false unless message&.valid?
|
14
23
|
return false if @history.any? { message.id == _1.id}
|
@@ -22,5 +31,9 @@ module OpenAI
|
|
22
31
|
def as_json
|
23
32
|
@history.map(&:as_json)
|
24
33
|
end
|
34
|
+
|
35
|
+
def for_logs
|
36
|
+
@history.map(&:for_logs)
|
37
|
+
end
|
25
38
|
end
|
26
39
|
end
|
data/lib/open_ai/dalle.rb
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
module OpenAI
|
4
4
|
module Dalle
|
5
|
-
def dalle
|
5
|
+
def dalle(prompt = nil)
|
6
6
|
return unless allowed_chat?
|
7
7
|
|
8
8
|
attempt(3) do
|
9
9
|
puts "Received a /dalle command"
|
10
|
-
prompt
|
10
|
+
prompt ||= @replies_to&.text || @text_without_command
|
11
11
|
send_chat_action(:upload_photo)
|
12
12
|
|
13
13
|
puts "Sending request"
|
data/lib/open_ai/message.rb
CHANGED
@@ -4,11 +4,12 @@ module OpenAI
|
|
4
4
|
|
5
5
|
class Message
|
6
6
|
attr_accessor :body, :from, :id, :replies_to, :tokens, :chat_id
|
7
|
-
attr_reader :role
|
7
|
+
attr_reader :role, :timestamp
|
8
8
|
|
9
9
|
def initialize(**kwargs)
|
10
10
|
kwargs.each_pair { public_send("#{_1}=", _2) }
|
11
11
|
@role = :user
|
12
|
+
@timestamp = Time.now.to_i
|
12
13
|
end
|
13
14
|
|
14
15
|
def valid?
|
@@ -17,10 +18,15 @@ module OpenAI
|
|
17
18
|
|
18
19
|
# Format for OpenAI API
|
19
20
|
def as_json
|
20
|
-
content = [from, body].join("\n")
|
21
|
+
content = [from, body].compact.join("\n")
|
21
22
|
{ role:, content: content }
|
22
23
|
end
|
23
24
|
|
25
|
+
# Format for machine-readable logs
|
26
|
+
def for_logs
|
27
|
+
{ role:, body:, from:, id:, replies_to:, tokens:, chat_id:, timestamp: }
|
28
|
+
end
|
29
|
+
|
24
30
|
# Format for human-readable logs
|
25
31
|
def to_s
|
26
32
|
msg_lines = {
|
data/lib/open_ai/utils.rb
CHANGED
@@ -14,13 +14,16 @@ module OpenAI
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def download_file(voice)
|
17
|
+
def download_file(voice, dir=nil)
|
18
18
|
file_path = @api.get_file(file_id: voice.file_id)["result"]["file_path"]
|
19
19
|
|
20
20
|
url = "https://api.telegram.org/file/bot#{config.token}/#{file_path}"
|
21
21
|
|
22
22
|
file = Down.download(url)
|
23
|
-
|
23
|
+
dir ||= "."
|
24
|
+
|
25
|
+
FileUtils.mkdir(dir) unless Dir.exist? dir
|
26
|
+
FileUtils.mv(file.path, "#{dir.delete_suffix("/")}/#{file.original_filename}")
|
24
27
|
file
|
25
28
|
end
|
26
29
|
end
|
data/lib/open_ai_bot.rb
CHANGED
@@ -7,6 +7,10 @@ require_relative "open_ai/dalle"
|
|
7
7
|
require_relative "open_ai/utils"
|
8
8
|
require_relative "open_ai/whisper"
|
9
9
|
|
10
|
+
require_relative "ext/blank"
|
11
|
+
require_relative "ext/in"
|
12
|
+
|
13
|
+
|
10
14
|
class OpenAIBot < Rubydium::Bot
|
11
15
|
include OpenAI::ChatGPT
|
12
16
|
include OpenAI::Dalle
|
@@ -22,6 +26,16 @@ class OpenAIBot < Rubydium::Bot
|
|
22
26
|
on_command "/help", description: "Sends useful help info" do
|
23
27
|
reply(self.class.help_message)
|
24
28
|
end
|
29
|
+
on_command "/pry" do
|
30
|
+
binding.pry
|
31
|
+
end
|
32
|
+
|
33
|
+
on_command '/eval' do
|
34
|
+
return unless @user.username == config.owner_username
|
35
|
+
|
36
|
+
code = @text_without_command.strip
|
37
|
+
reply eval(code)
|
38
|
+
end
|
25
39
|
|
26
40
|
def allowed_chat?
|
27
41
|
return true if @user.username == config.owner_username
|
data/main.rb
CHANGED
data/open_ai_bot.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_ai_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bulgakke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: down
|
@@ -92,7 +92,7 @@ files:
|
|
92
92
|
- Gemfile
|
93
93
|
- Gemfile.lock
|
94
94
|
- README.md
|
95
|
-
- config.yaml
|
95
|
+
- config.example.yaml
|
96
96
|
- lib/clean_bot.rb
|
97
97
|
- lib/ext/blank.rb
|
98
98
|
- lib/ext/in.rb
|
File without changes
|