Class: Brute::MessageTransport::RubyOpenAI

Inherits:
MessageTransport
  • Object
show all
Defined in:
lib/brute/message_transport/ruby_open_ai.rb

Direct Known Subclasses

LangChain

Class Method Summary collapse

Class Method Details

.dump(message) ⇒ Object

Brute::Message -> ruby-openai Hash payload



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/brute/message_transport/ruby_open_ai.rb', line 6

def self.dump(message)
  {
    role: message.role.to_s,
  }.tap do |payload|
    # Include content if present
    if message.content
      payload[:content] = message.content
    end

    # Include tool call ID for tool outputs
    if message.tool_call_id
      payload[:tool_call_id] = message.tool_call_id
    end

    # Convert Brute::ToolCall objects to ruby-openai nested tool call hashes
    if message.tool_call?
      payload[:tool_calls] = message.tool_calls.map do |tc|
        {
          id:       tc.id,
          type:     "function",
          function: {
            name:      tc.name,
            arguments: tc.arguments.is_a?(String) ? tc.arguments : tc.arguments.to_json,
          },
        }
      end
    end
  end
end