Class: RubyConversations::MessageBuilder
- Inherits:
-
Object
- Object
- RubyConversations::MessageBuilder
- Defined in:
- lib/ruby_conversations/message_builder.rb
Overview
Builds Message objects with their prompts and inputs based on Prompt templates.
Instance Method Summary collapse
- #build_from_multiple_prompts(prompt_inputs, description: nil) ⇒ Object
- #build_from_single_prompt(name, description: nil, inputs: {}) ⇒ Object
- #build_from_user_message(raw_message, description: nil) ⇒ Object
-
#initialize(conversation) ⇒ MessageBuilder
constructor
A new instance of MessageBuilder.
- #process_single_prompt_input(message, prompt_name, inputs) ⇒ Object
Constructor Details
#initialize(conversation) ⇒ MessageBuilder
Returns a new instance of MessageBuilder.
6 7 8 |
# File 'lib/ruby_conversations/message_builder.rb', line 6 def initialize(conversation) @conversation = conversation end |
Instance Method Details
#build_from_multiple_prompts(prompt_inputs, description: nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ruby_conversations/message_builder.rb', line 27 def build_from_multiple_prompts(prompt_inputs, description: nil) = ('', description) prompt_inputs.each do |prompt_name, inputs| process_single_prompt_input(, prompt_name, inputs) end .request = .request.strip end |
#build_from_single_prompt(name, description: nil, inputs: {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/ruby_conversations/message_builder.rb', line 10 def build_from_single_prompt(name, description: nil, inputs: {}) prompt = Prompt.find_by_name!(name) validate_inputs!(prompt, inputs) = prompt.interpolate(inputs) = (, description) build_prompt_association(, prompt, inputs) end |
#build_from_user_message(raw_message, description: nil) ⇒ Object
21 22 23 24 25 |
# File 'lib/ruby_conversations/message_builder.rb', line 21 def (, description: nil) = (, description) (, Prompt.new(name: 'user_message', role: 'user', message: )) end |
#process_single_prompt_input(message, prompt_name, inputs) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ruby_conversations/message_builder.rb', line 38 def process_single_prompt_input(, prompt_name, inputs) prompt = Prompt.find_by!(name: prompt_name) validate_inputs!(prompt, inputs) = prompt.interpolate(inputs) .request += "#{}\n\n" = (, prompt) build_inputs_for_prompt(, inputs) end |