Class: Brute::MessageTransport::RubyLLM

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

Overview

MessageTransport for the ruby_llm gem (https://rubyllm.com). Brute does not require ruby_llm — you do:

require "ruby_llm"

response = provider.complete(
Brute::MessageTransport::RubyLLM.dump_all(env[:messages]),
tools: ..., model: model,
)
Brute::MessageTransport::RubyLLM.wrap_each(response) { |m| env[:messages] << m }

Class Method Summary collapse

Class Method Details

.dump(message) ⇒ Object

Brute::Message -> RubyLLM::Message (tool calls as ruby_llm's id-keyed hash).



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/brute/message_transport/ruby_llm.rb', line 22

def self.dump(message)
  tool_calls = message.tool_calls&.each_with_object({}) do |tc, hash|
    hash[tc.id] = ::RubyLLM::ToolCall.new(id: tc.id, name: tc.name, arguments: tc.arguments)
  end

  ::RubyLLM::Message.new(
    role:         message.role,
    content:      message.content,
    tool_calls:   tool_calls,
    tool_call_id: message.tool_call_id,
  )
end