open_ai_bot 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- 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