Class: Kward::Compaction::TokenEstimator
- Inherits:
-
Object
- Object
- Kward::Compaction::TokenEstimator
- Defined in:
- lib/kward/compactor.rb
Instance Method Summary collapse
- #context_tokens(messages) ⇒ Object
- #estimate_tokens(text) ⇒ Object
- #message_tokens(message) ⇒ Object
- #messages_tokens(messages) ⇒ Object
Instance Method Details
#context_tokens(messages) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'lib/kward/compactor.rb', line 74 def context_tokens() = Array() usage_info = last_assistant_usage_info() return () unless usage_info usage_tokens = usage_tokens(usage_info[:usage]) trailing_tokens = [(usage_info[:index] + 1)..].to_a.sum { || () } usage_tokens + trailing_tokens end |
#estimate_tokens(text) ⇒ Object
66 67 68 |
# File 'lib/kward/compactor.rb', line 66 def estimate_tokens(text) (text.to_s.length / 4.0).ceil end |
#message_tokens(message) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/kward/compactor.rb', line 84 def () role = value(, :role) parts = [role] if role.to_s == "compactionSummary" parts << value(, :summary) else parts << content_text(value(, :content)) end parts << value(, :reasoning_summary) tool_calls().each do |tool_call| parts << tool_call_name(tool_call) parts << tool_call_arguments(tool_call) end parts << value(, :tool_call_id) parts << value(, :name) estimate_tokens(parts.compact.join("\n")) end |
#messages_tokens(messages) ⇒ Object
70 71 72 |
# File 'lib/kward/compactor.rb', line 70 def () Array().sum { || () } end |