Class: Engram::UseCases::Inject

Inherits:
Object
  • Object
show all
Defined in:
lib/engram/use_cases/inject.rb

Overview

Render recalled memories into a prompt as a clearly delimited block.

Constant Summary collapse

DEFAULT_HEADER =
"# What you remember about the user"

Instance Method Summary collapse

Constructor Details

#initialize(header: DEFAULT_HEADER) ⇒ Inject

Returns a new instance of Inject.



11
12
13
# File 'lib/engram/use_cases/inject.rb', line 11

def initialize(header: DEFAULT_HEADER)
  @header = header
end

Instance Method Details

#call(prompt:, memories:) ⇒ Object

Returns a new prompt string. If there are no memories, the prompt is unchanged.



16
17
18
19
20
21
22
23
24
# File 'lib/engram/use_cases/inject.rb', line 16

def call(prompt:, memories:)
  payload = {memory_count: memories&.size.to_i}
  Engram::Instrumentation.instrument("inject", payload) do
    next prompt if memories.nil? || memories.empty?

    block = memories.map { |memory| render_memory(memory) }.join("\n")
    "#{prompt}\n\n#{@header}:\n<engram-memories>\n#{block}\n</engram-memories>"
  end
end