Class: Llmemory::Retrieval::ContextAssembler

Inherits:
Object
  • Object
show all
Defined in:
lib/llmemory/retrieval/context_assembler.rb

Instance Method Summary collapse

Constructor Details

#initialize(max_tokens: nil) ⇒ ContextAssembler

Returns a new instance of ContextAssembler.



6
7
8
# File 'lib/llmemory/retrieval/context_assembler.rb', line 6

def initialize(max_tokens: nil)
  @max_tokens = max_tokens || Llmemory.configuration.max_retrieval_tokens
end

Instance Method Details

#assemble(ranked_memories, max_tokens: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/llmemory/retrieval/context_assembler.rb', line 10

def assemble(ranked_memories, max_tokens: nil)
  max_tokens ||= @max_tokens
  selected = []
  token_count = 0

  ranked_memories.each do |memory|
    text = memory[:text] || memory["text"] || ""
    memory_tokens = count_tokens(text)
    break if token_count + memory_tokens > max_tokens

    selected << {
      text: text,
      timestamp: memory[:timestamp] || memory["timestamp"],
      confidence: memory[:temporal_score] || memory[:score] || memory["score"]
    }
    token_count += memory_tokens
  end

  format_context(selected)
end

#count_tokens(text) ⇒ Object



31
32
33
# File 'lib/llmemory/retrieval/context_assembler.rb', line 31

def count_tokens(text)
  (text.to_s.length / 4.0).ceil
end