Class: Phronomy::Memory::Retrieval::Recent

Inherits:
Base
  • Object
show all
Defined in:
lib/phronomy/memory/retrieval/recent.rb

Overview

Retrieval strategy that returns the most recent k turns (k*2 messages).

This is the simplest and most predictable strategy: older messages are discarded without compression.

Examples:

retrieval = Phronomy::Memory::Retrieval::Recent.new(k: 10)
manager = Phronomy::Memory::ConversationManager.new(
  storage: storage,
  retrieval: retrieval
)

Instance Method Summary collapse

Constructor Details

#initialize(k: 10) ⇒ Recent

Returns a new instance of Recent.

Parameters:

  • k (Integer) (defaults to: 10)

    number of turns to retain (each turn = 1 user + 1 assistant message)



19
20
21
# File 'lib/phronomy/memory/retrieval/recent.rb', line 19

def initialize(k: 10)
  @k = k
end

Instance Method Details

#select(messages, query: nil, thread_id: nil) ⇒ Array

Returns the last k*2 messages from the history.

Parameters:

  • messages (Array)

    full chronological history

  • query (String, nil) (defaults to: nil)

    unused for recency-based retrieval

  • thread_id (String, nil) (defaults to: nil)

    unused for recency-based retrieval

Returns:

  • (Array)


29
30
31
# File 'lib/phronomy/memory/retrieval/recent.rb', line 29

def select(messages, query: nil, thread_id: nil)
  messages.last(@k * 2)
end