open_ai_bot 0.3.2 → 0.3.3
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 +1 -2
- data/lib/open_ai/chat_thread.rb +0 -4
- data/lib/open_ai/message.rb +0 -11
- data/lib/open_ai/model.rb +7 -10
- data/open_ai_bot.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2aafb706ad49054fb0e35aab308ea6486ab89ea7e6740f081033b49a972b4dfb
|
|
4
|
+
data.tar.gz: 2b6b9c143e1465bc2e1f984d8ec611b234644b6f99bf3a033ca160a558871625
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f486692224acc9d6897a426b37e56673779d2631bd2577e9a26ed0ff99715a1e8b14972649cfbbaab02db47233a878bd85f00b1a4cb0fb966a169d3a651a56f9
|
|
7
|
+
data.tar.gz: 6d0c11a1f76f4edf83ec4a011ded1a88bfc73d48ff7a7567c57525d519ec568fc458f5c262787422ac5f35fad97fe91e2f4d0b5c6564a7d5058ec08b3fd3458b
|
data/lib/open_ai/chat_gpt.rb
CHANGED
|
@@ -145,9 +145,8 @@ module OpenAI
|
|
|
145
145
|
def get_tokens_info!(response)
|
|
146
146
|
completion_tokens = response.dig("usage", "completion_tokens")
|
|
147
147
|
prompt_tokens = response.dig("usage", "prompt_tokens")
|
|
148
|
-
vision_tokens = current_thread.claim_vision_tokens!
|
|
149
148
|
|
|
150
|
-
result = current_thread.model.request_cost(completion_tokens:, prompt_tokens:,
|
|
149
|
+
result = current_thread.model.request_cost(completion_tokens:, prompt_tokens:, current_thread:)
|
|
151
150
|
end
|
|
152
151
|
|
|
153
152
|
def send_chat_gpt_response(text, tokens_info)
|
data/lib/open_ai/chat_thread.rb
CHANGED
|
@@ -24,10 +24,6 @@ module OpenAI
|
|
|
24
24
|
@history.map(&:cost).compact.sum
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def claim_vision_tokens!
|
|
28
|
-
@history.reject(&:vision_tokens_claimed?).map(&:claim_vision_tokens!).compact.sum
|
|
29
|
-
end
|
|
30
|
-
|
|
31
27
|
def add(message)
|
|
32
28
|
return false unless message&.valid?
|
|
33
29
|
return false if @history.any? { message.id == _1.id}
|
data/lib/open_ai/message.rb
CHANGED
|
@@ -10,17 +10,6 @@ module OpenAI
|
|
|
10
10
|
kwargs.each_pair { public_send("#{_1}=", _2) }
|
|
11
11
|
@role = :user
|
|
12
12
|
@timestamp = Time.now.to_i
|
|
13
|
-
@vision_tokens_claimed = !image
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def vision_tokens_claimed?
|
|
17
|
-
@vision_tokens_claimed
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def claim_vision_tokens!
|
|
21
|
-
# binding.pry
|
|
22
|
-
@vision_tokens_claimed = true
|
|
23
|
-
image&.tokens
|
|
24
13
|
end
|
|
25
14
|
|
|
26
15
|
def valid?
|
data/lib/open_ai/model.rb
CHANGED
|
@@ -6,19 +6,18 @@ module OpenAI
|
|
|
6
6
|
max_context: 128_000,
|
|
7
7
|
prompt_price: 0.005,
|
|
8
8
|
completion_price: 0.015,
|
|
9
|
-
|
|
9
|
+
vision: true
|
|
10
10
|
},
|
|
11
11
|
"gpt-3.5-turbo": {
|
|
12
12
|
max_context: 16385,
|
|
13
13
|
prompt_price: 0.0005,
|
|
14
|
-
completion_price: 0.0015
|
|
15
|
-
vision_price: 0
|
|
14
|
+
completion_price: 0.0015
|
|
16
15
|
}
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
attr_accessor :max_context, :prompt_price, :completion_price
|
|
18
|
+
attr_accessor :max_context, :prompt_price, :completion_price
|
|
20
19
|
|
|
21
|
-
[:max_context, :prompt_price, :completion_price
|
|
20
|
+
[:max_context, :prompt_price, :completion_price].each do |attr|
|
|
22
21
|
define_method(attr) do
|
|
23
22
|
MODEL_INFO[@model][attr]
|
|
24
23
|
end
|
|
@@ -37,21 +36,19 @@ module OpenAI
|
|
|
37
36
|
end
|
|
38
37
|
|
|
39
38
|
def has_vision?
|
|
40
|
-
MODEL_INFO[@model][:
|
|
39
|
+
MODEL_INFO[@model][:vision]
|
|
41
40
|
end
|
|
42
41
|
|
|
43
|
-
def request_cost(prompt_tokens:, completion_tokens:,
|
|
42
|
+
def request_cost(prompt_tokens:, completion_tokens:, current_thread:)
|
|
44
43
|
prompt_cost = prompt_tokens * prompt_price / 1000
|
|
45
44
|
completion_cost = completion_tokens * completion_price / 1000
|
|
46
|
-
vision_cost = vision_tokens * vision_price / 1000
|
|
47
45
|
|
|
48
|
-
total = prompt_cost + completion_cost
|
|
46
|
+
total = prompt_cost + completion_cost
|
|
49
47
|
thread_total = current_thread.total_cost
|
|
50
48
|
|
|
51
49
|
info = "\n\n" + {
|
|
52
50
|
prompt: "#{prompt_tokens} tokens (#{prompt_cost.round(5)}$)",
|
|
53
51
|
completion: "#{completion_tokens} tokens (#{completion_cost.round(5)}$)",
|
|
54
|
-
vision: "#{vision_tokens} tokens (#{vision_cost.round(5)}$)",
|
|
55
52
|
total: "#{total.round(5)}$",
|
|
56
53
|
total_for_this_conversation: "#{(thread_total + total).round(5)}$",
|
|
57
54
|
max_context: max_context
|
data/open_ai_bot.gemspec
CHANGED