Class: Riffer::Messages::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/riffer/messages/base.rb

Overview

Base class for all message types in the Riffer framework.

Subclasses must implement the role method.

Direct Known Subclasses

Assistant, System, Tool, User

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content, id: nil) ⇒ Base

– : (String, ?id: String?) -> void



18
19
20
21
# File 'lib/riffer/messages/base.rb', line 18

def initialize(content, id: nil)
  @content = content
  @id = id || generate_id
end

Instance Attribute Details

#contentObject (readonly)

The message content.



11
12
13
# File 'lib/riffer/messages/base.rb', line 11

def content
  @content
end

#idObject (readonly)

The message id, or nil when Riffer.config.message_id_strategy is :none.



14
15
16
# File 'lib/riffer/messages/base.rb', line 14

def id
  @id
end

Instance Method Details

#+(other) ⇒ Object

Merges another same-role message into this one.

Raises NotImplementedError unless implemented by subclass. Mergeable message types (User, Assistant, System) override this; Tool messages are never merged.

– : (untyped) -> Riffer::Messages::Base

Raises:

  • (NotImplementedError)


61
62
63
# File 'lib/riffer/messages/base.rb', line 61

def +(other)
  raise NotImplementedError, "Subclasses must implement #+"
end

#has_tool_calls?Boolean

Whether this message carries pending tool calls. Defaults to false; Riffer::Messages::Assistant overrides this when its tool_calls array is non-empty.

– : () -> bool

Returns:

  • (Boolean)


49
50
51
# File 'lib/riffer/messages/base.rb', line 49

def has_tool_calls?
  false
end

#roleObject

Returns the message role.

Raises NotImplementedError if not implemented by subclass.

– : () -> Symbol

Raises:

  • (NotImplementedError)


39
40
41
# File 'lib/riffer/messages/base.rb', line 39

def role
  raise NotImplementedError, "Subclasses must implement #role"
end

#to_hObject

Converts the message to a hash.

– : () -> Hash[Symbol, untyped]



27
28
29
30
31
# File 'lib/riffer/messages/base.rb', line 27

def to_h
  hash = {role: role, content: content}
  hash[:id] = id unless id.nil?
  hash
end