Class: Llmemory::ShortTerm::Pruner

Inherits:
Object
  • Object
show all
Defined in:
lib/llmemory/short_term/pruner.rb

Constant Summary collapse

DEFAULT_PRUNABLE_ROLES =
%i[tool tool_result].freeze
PLACEHOLDER =
"[Tool result pruned]"

Instance Method Summary collapse

Constructor Details

#initialize(prunable_roles: nil, soft_trim_max_bytes: 2048, soft_trim_head_ratio: 0.4, soft_trim_tail_ratio: 0.2) ⇒ Pruner

Returns a new instance of Pruner.



9
10
11
12
13
14
# File 'lib/llmemory/short_term/pruner.rb', line 9

def initialize(prunable_roles: nil, soft_trim_max_bytes: 2048, soft_trim_head_ratio: 0.4, soft_trim_tail_ratio: 0.2)
  @prunable_roles = prunable_roles || DEFAULT_PRUNABLE_ROLES.map(&:to_s)
  @soft_trim_max_bytes = soft_trim_max_bytes
  @head_ratio = soft_trim_head_ratio
  @tail_ratio = soft_trim_tail_ratio
end

Instance Method Details

#prune!(messages, mode: :soft_trim) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/llmemory/short_term/pruner.rb', line 16

def prune!(messages, mode: :soft_trim)
  return messages.dup if messages.empty?

  messages.map do |msg|
    if prunable?(msg)
      apply_prune(msg, mode)
    else
      msg.dup
    end
  end
end