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