Class: Riffer::Messages::User

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

Overview

Represents a user message in a conversation.

msg = Riffer::Messages::User.new("Hello!")
msg.role     # => :user
msg.content  # => "Hello!"

msg = Riffer::Messages::User.new("Describe this image", files: [file_part])
msg.files    # => [#<Riffer::FilePart ...>]

Instance Attribute Summary collapse

Attributes inherited from Base

#content

Instance Method Summary collapse

Constructor Details

#initialize(content, files: []) ⇒ User

Initializes a user message.

– : (String, ?files: Array) -> void



21
22
23
24
# File 'lib/riffer/messages/user.rb', line 21

def initialize(content, files: [])
  super(content)
  @files = files
end

Instance Attribute Details

#filesObject (readonly)

File attachments for this message.



15
16
17
# File 'lib/riffer/messages/user.rb', line 15

def files
  @files
end

Instance Method Details

#+(other) ⇒ Object

– : (Riffer::Messages::User) -> Riffer::Messages::User



34
35
36
# File 'lib/riffer/messages/user.rb', line 34

def +(other)
  self.class.new("#{content}\n\n#{other.content}", files: files + other.files)
end

#roleObject

– : () -> Symbol



28
29
30
# File 'lib/riffer/messages/user.rb', line 28

def role
  :user
end

#to_hObject

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



40
41
42
43
44
# File 'lib/riffer/messages/user.rb', line 40

def to_h
  hash = {role: role, content: content}
  hash[:files] = files.map(&:to_h) unless files.empty?
  hash
end