Class: Luo::Messages

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(history: []) ⇒ Messages

Returns a new instance of Messages.



5
6
7
8
9
# File 'lib/luo/messages.rb', line 5

def initialize(history: [])
  @history = history
  @messages = []
  @system = {}
end

Class Method Details

.create(history: nil) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/luo/messages.rb', line 44

def create(history: nil)
  if history
    self.new(history: history)
  else
    self.new(history: [])
  end
end

.create_role_message_method(role) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/luo/messages.rb', line 11

def self.create_role_message_method(role)
  define_method(role) do |text: nil, file: '', prompt: nil, context: {}|
    if prompt.nil?
      data = text || File.read(file)
    else
      data = prompt.render(context)
    end
    if role.to_s == "system"
      @system = {role: role, content: data}
    else
      @messages << {role: role, content: data}
    end
    self
  end
end

.create_role_message_methodsObject



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

def self.create_role_message_methods
  %w(system user assistant).each do |role|
    create_role_message_method(role)
  end
end

Instance Method Details

#to_aObject



35
36
37
38
39
40
41
# File 'lib/luo/messages.rb', line 35

def to_a
  if @system.empty?
    @history.to_a + @messages
  else
    (@history.to_a + @messages).unshift(@system)
  end
end