Class: Conductor::Workflow::Llm::ChatMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/conductor/workflow/llm/chat_message.rb

Overview

ChatMessage represents a single message in an LLM chat conversation

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(role:, message:, media: nil, mime_type: nil, tool_calls: nil) ⇒ ChatMessage

Returns a new instance of ChatMessage.

Parameters:

  • role (String)

    The role (use Role constants)

  • message (String)

    The message content

  • media (Array<String>, nil) (defaults to: nil)

    Optional media URLs

  • mime_type (String, nil) (defaults to: nil)

    Optional MIME type for media

  • tool_calls (Array<ToolCall>, nil) (defaults to: nil)

    Optional tool calls



24
25
26
27
28
29
30
# File 'lib/conductor/workflow/llm/chat_message.rb', line 24

def initialize(role:, message:, media: nil, mime_type: nil, tool_calls: nil)
  @role = role
  @message = message
  @media = media
  @mime_type = mime_type
  @tool_calls = tool_calls
end

Instance Attribute Details

#mediaObject

Returns the value of attribute media.



17
18
19
# File 'lib/conductor/workflow/llm/chat_message.rb', line 17

def media
  @media
end

#messageObject

Returns the value of attribute message.



17
18
19
# File 'lib/conductor/workflow/llm/chat_message.rb', line 17

def message
  @message
end

#mime_typeObject

Returns the value of attribute mime_type.



17
18
19
# File 'lib/conductor/workflow/llm/chat_message.rb', line 17

def mime_type
  @mime_type
end

#roleObject

Returns the value of attribute role.



17
18
19
# File 'lib/conductor/workflow/llm/chat_message.rb', line 17

def role
  @role
end

#tool_callsObject

Returns the value of attribute tool_calls.



17
18
19
# File 'lib/conductor/workflow/llm/chat_message.rb', line 17

def tool_calls
  @tool_calls
end

Instance Method Details

#to_hHash

Convert to hash for serialization

Returns:

  • (Hash)

    The message as a hash with camelCase keys



34
35
36
37
38
39
40
41
42
43
# File 'lib/conductor/workflow/llm/chat_message.rb', line 34

def to_h
  result = {
    'role' => @role,
    'message' => @message
  }
  result['media'] = @media if @media && !@media.empty?
  result['mimeType'] = @mime_type if @mime_type
  result['toolCalls'] = @tool_calls.map(&:to_h) if @tool_calls && !@tool_calls.empty?
  result
end