Class: Phronomy::LLMAdapter::RubyLLM

Inherits:
Base
  • Object
show all
Defined in:
lib/phronomy/llm_adapter/ruby_llm.rb

Overview

LLM adapter that delegates to the RubyLLM blocking client.

This is the default adapter used by Phronomy agents. It wraps chat.ask (and its streaming variant) so that the synchronous provider call runs inside OffloadPool rather than on the EventLoop thread.

Examples:

Explicitly configuring this adapter

Phronomy.configure do |c|
  c.llm_adapter = Phronomy::LLMAdapter::RubyLLM.new
end

Instance Method Summary collapse

Methods inherited from Base

#complete_async, #stream_async

Instance Method Details

#complete(chat, message, config: {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Delegates to chat.ask(message) or chat.complete when message is nil.

Passing nil for message is used by the ReAct loop for continuation turns where the user message has already been added to the chat history (e.g. after a tool result) and the LLM should continue without a new user turn.

Parameters:

  • chat (Object)

    RubyLLM chat session

  • message (String, nil)

    user message, or nil to continue the chat

  • config (Hash) (defaults to: {})

    invocation config (not used directly by this impl)

Returns:

  • (Object)

    RubyLLM response



28
29
30
# File 'lib/phronomy/llm_adapter/ruby_llm.rb', line 28

def complete(chat, message, config: {})
  message ? chat.ask(message) : chat.complete
end

#stream(chat, message, config: {}) {|chunk| ... } ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Delegates to chat.ask(message) { |chunk| block.call(chunk) } or chat.complete(&block) when message is nil.

Parameters:

  • chat (Object)

    RubyLLM chat session

  • message (String, nil)

    user message, or nil to continue the chat

  • config (Hash) (defaults to: {})

    invocation config

Yields:

  • (chunk)

    streaming chunk forwarded from chat.ask / chat.complete

Returns:

  • (Object)

    RubyLLM response



41
42
43
# File 'lib/phronomy/llm_adapter/ruby_llm.rb', line 41

def stream(chat, message, config: {}, &block)
  message ? chat.ask(message, &block) : chat.complete(&block)
end