Class: LLM::MessageFilter::Multi

Inherits:
LLM::MessageFilter show all
Defined in:
lib/llm/message_filter/multi.rb

Overview

A filter that fans out to multiple other filters, so a message can be filtered multiple times by different filters.

Examples:

filter = LLM::MessageFilter.multi(
  llm,
  FilterOne,
  FilterTwo
)

Instance Attribute Summary collapse

Attributes inherited from LLM::MessageFilter

#ctx

Instance Method Summary collapse

Methods inherited from LLM::MessageFilter

inherited, multi

Constructor Details

#initialize(*filters) ⇒ Multi

Returns a new instance of Multi.

Parameters:

  • filters (Array<LLM::MessageFilter>) —

    The filters to fan out to. A Multi has no provider of its own.



26
27
28
29
# File 'lib/llm/message_filter/multi.rb', line 26

def initialize(*filters)
  super(nil)
  @filters = filters
end

Instance Attribute Details

#filters ⇒ Array<LLM::MessageFilter> (readonly)

Returns the filters under the supervision of Multi

Returns:



20
21
22
# File 'lib/llm/message_filter/multi.rb', line 20

def filters
  @filters
end

Instance Method Details

#call(message:, **opts) ⇒ LLM::Message

Parameters:

  • message (LLM::Message) —

    The message to filter

  • opts (Hash) —

    Per-call options

Returns:



34
35
36
37
38
# File 'lib/llm/message_filter/multi.rb', line 34

def call(message:, **opts)
  @filters.map do
    message = it.call(message:, **opts)
  end.last
end