Class: RubyLlmMesh::Providers::LocalNode

Inherits:
Base
  • Object
show all
Defined in:
lib/ruby_llm_mesh/providers/local_node.rb

Overview

OpenAI-compatible local runtime (Ollama, LM Studio, vLLM, llama.cpp server, etc.). When peer discovery is enabled, tries healthy peers from Mesh::PeerRegistry.

Instance Attribute Summary

Attributes inherited from Base

#config

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from RubyLlmMesh::Providers::Base

Instance Method Details

#complete(prompt:, system: nil, model: nil, **options) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ruby_llm_mesh/providers/local_node.rb', line 12

def complete(prompt:, system: nil, model: nil, **options)
  model ||= config.local_node_model
  messages = []
  messages << { role: "system", content: system } if system
  messages << { role: "user", content: prompt }

  body = {
    model: model,
    messages: messages,
    stream: false,
    temperature: options.fetch(:temperature, 0.7)
  }
  body[:options] = { num_predict: options[:max_tokens] } if options[:max_tokens]

  errors = []
  peer_bases.each do |base_url|
    begin
      return complete_against(base_url, model: model, body: body, messages: messages)
    rescue RateLimitError, TimeoutError, ProviderError => e
      registry.mark_unhealthy(base_url, error: e.message)
      errors << e
      next
    end
  end

  raise errors.last || ProviderError.new("No healthy local peers available", provider: name)
end

#nameObject



8
9
10
# File 'lib/ruby_llm_mesh/providers/local_node.rb', line 8

def name
  :local_node
end