Class: RubyConversations::MessagePrompt

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/ruby_conversations/message_prompt.rb

Overview

Represents a prompt used to generate a message in a conversation

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ MessagePrompt

Initialization



24
25
26
27
28
29
30
31
# File 'lib/ruby_conversations/message_prompt.rb', line 24

def initialize(attributes = {})
  @message_inputs = [] # Initialize inputs array
  # Extract nested inputs before super
  inputs_attributes = extract_nested_attributes!(attributes, :message_inputs)

  super
  initialize_message_inputs(inputs_attributes)
end

Instance Attribute Details

#contentObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def content
  @content
end

#created_atObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def created_at
  @created_at
end

#draftObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def draft
  @draft
end

#idObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def id
  @id
end

#llmObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def llm
  @llm
end

#messageObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def message
  @message
end

#message_idObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def message_id
  @message_id
end

#message_inputsObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def message_inputs
  @message_inputs
end

#metadataObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def 
  @metadata
end

#nameObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def name
  @name
end

#prompt_version_idObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def prompt_version_id
  @prompt_version_id
end

#roleObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def role
  @role
end

#updated_atObject

Define attributes



12
13
14
# File 'lib/ruby_conversations/message_prompt.rb', line 12

def updated_at
  @updated_at
end

Instance Method Details

#attributesObject

Attributes method for serialization/logging



43
44
45
# File 'lib/ruby_conversations/message_prompt.rb', line 43

def attributes
  base_attributes.merge(message_inputs_attributes_hash)
end

#attributes_for_apiObject

Method for API serialization



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ruby_conversations/message_prompt.rb', line 48

def attributes_for_api
  {
    id: id,
    prompt_version_id: prompt_version_id,
    name: name,
    role: role,
    content: content,
    metadata: ,
    draft: draft,
    ai_message_inputs_attributes: message_inputs.map(&:attributes_for_api)
  }.compact
end

#initialize_message_inputs(attributes_array) ⇒ Object

Handle nested inputs initialization



34
35
36
37
38
39
40
# File 'lib/ruby_conversations/message_prompt.rb', line 34

def initialize_message_inputs(attributes_array)
  (attributes_array || []).each do |attrs|
    next if attrs.blank?

    @message_inputs << RubyConversations::MessageInput.new(attrs)
  end
end

#message_inputs_attributes=(attributes) ⇒ Object

Define nested attributes writer



16
17
18
19
20
21
# File 'lib/ruby_conversations/message_prompt.rb', line 16

def message_inputs_attributes=(attributes)
  @message_inputs ||= []
  attributes.each do |attrs|
    @message_inputs << RubyConversations::MessageInput.new(attrs)
  end
end