Class: PromptBuilder::Items::Message
- Defined in:
- lib/prompt_builder/items/message.rb
Overview
Represents a message item in a conversation. Messages have a role and an array of content objects.
Constant Summary
Constants inherited from Base
Instance Attribute Summary collapse
-
#content ⇒ Array<Content::Base>
readonly
The content objects.
-
#extra ⇒ Hash?
readonly
Provider-specific extra data.
-
#id ⇒ String?
readonly
The message identifier.
-
#phase ⇒ String?
readonly
The message phase.
-
#role ⇒ String
readonly
The message role (e.g. “user”, “assistant”, “system”, “developer”).
-
#status ⇒ String?
readonly
The message status.
Class Method Summary collapse
-
.from_h(hash) ⇒ Message
Deserialize a Message from a Hash.
Instance Method Summary collapse
-
#initialize(role:, content:, id: nil, status: nil, phase: nil, **extra) ⇒ Message
constructor
Create a new Message item.
-
#to_h ⇒ Hash
Serialize to a Hash with string keys.
Constructor Details
#initialize(role:, content:, id: nil, status: nil, phase: nil, **extra) ⇒ Message
Create a new Message item.
34 35 36 37 38 39 40 41 |
# File 'lib/prompt_builder/items/message.rb', line 34 def initialize(role:, content:, id: nil, status: nil, phase: nil, **extra) @id = id&.to_s @role = role&.to_s @status = status&.to_s @phase = phase&.to_s @content = normalize_content(content) @extra = extra.transform_keys(&:to_s) end |
Instance Attribute Details
#content ⇒ Array<Content::Base> (readonly)
Returns the content objects.
21 22 23 |
# File 'lib/prompt_builder/items/message.rb', line 21 def content @content end |
#extra ⇒ Hash? (readonly)
Returns provider-specific extra data.
24 25 26 |
# File 'lib/prompt_builder/items/message.rb', line 24 def extra @extra end |
#id ⇒ String? (readonly)
Returns the message identifier.
9 10 11 |
# File 'lib/prompt_builder/items/message.rb', line 9 def id @id end |
#phase ⇒ String? (readonly)
Returns the message phase.
18 19 20 |
# File 'lib/prompt_builder/items/message.rb', line 18 def phase @phase end |
#role ⇒ String (readonly)
Returns the message role (e.g. “user”, “assistant”, “system”, “developer”).
12 13 14 |
# File 'lib/prompt_builder/items/message.rb', line 12 def role @role end |
#status ⇒ String? (readonly)
Returns the message status.
15 16 17 |
# File 'lib/prompt_builder/items/message.rb', line 15 def status @status end |
Class Method Details
.from_h(hash) ⇒ Message
Deserialize a Message from a Hash.
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/prompt_builder/items/message.rb', line 48 def from_h(hash) content = (hash["content"] || []).map { |c| Content::Base.from_h(c) } new( id: hash["id"], role: hash["role"], status: hash["status"], phase: hash["phase"], content: content, **hash.except("type", "id", "role", "status", "phase", "content").transform_keys(&:to_sym) ) end |
Instance Method Details
#to_h ⇒ Hash
Serialize to a Hash with string keys.
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/prompt_builder/items/message.rb', line 64 def to_h hash = { "type" => "message", "role" => @role, "content" => @content.map(&:to_h) } hash["id"] = @id if @id hash["status"] = @status if @status hash["phase"] = @phase if @phase hash = PromptBuilder.jsonify(@extra).merge(hash) unless @extra.empty? hash end |