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 blocking HTTP call runs inside BlockingAdapterPool rather than on the EventLoop thread or the caller's thread directly.

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



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

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



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

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