Class: Raix::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/raix/configuration.rb

Overview

The Configuration class holds the configuration options for the Raix gem.

Constant Summary collapse

DEFAULT_MAX_TOKENS =
1000
DEFAULT_MAX_COMPLETION_TOKENS =
16_384
DEFAULT_MODEL =
"meta-llama/llama-3.3-8b-instruct:free"
DEFAULT_MAX_TOOL_CALLS =
25

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fallback: nil) ⇒ Configuration

Initializes a new instance of the Configuration class with default values.

Note: temperature is intentionally not defaulted. Setting a non-nil temperature here would force it into every request payload, and some providers (e.g. Anthropic’s Claude 4.7 family on OpenRouter) do not list ‘temperature` in their supported parameters. Combined with `provider.require_parameters: true` (which Raix sets when `json: true`), an injected default of 0.0 causes OpenRouter to reject the request with “No endpoints found that can handle the requested parameters.” Callers who want a specific temperature should set one explicitly.



66
67
68
69
70
71
72
73
# File 'lib/raix/configuration.rb', line 66

def initialize(fallback: nil)
  self.max_completion_tokens = DEFAULT_MAX_COMPLETION_TOKENS
  self.max_tokens = DEFAULT_MAX_TOKENS
  self.model = DEFAULT_MODEL
  self.max_tool_calls = DEFAULT_MAX_TOOL_CALLS
  self.ruby_llm_config = RubyLLM.config
  self.fallback = fallback
end

Class Method Details

.attr_accessor_with_fallback(method_name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/raix/configuration.rb', line 6

def self.attr_accessor_with_fallback(method_name)
  define_method(method_name) do
    value = instance_variable_get("@#{method_name}")
    return value if value
    return unless fallback

    fallback.public_send(method_name)
  end
  define_method("#{method_name}=") do |value|
    instance_variable_set("@#{method_name}", value)
  end
end

Instance Method Details

#client?Boolean

Returns:

  • (Boolean)


75
76
77
78
# File 'lib/raix/configuration.rb', line 75

def client?
  # Support legacy openrouter_client/openai_client or new RubyLLM config
  !!(openrouter_client || openai_client || ruby_llm_configured?)
end

#ruby_llm_configured?Boolean

Returns:

  • (Boolean)


80
81
82
83
# File 'lib/raix/configuration.rb', line 80

def ruby_llm_configured?
  ruby_llm_config&.openai_api_key || ruby_llm_config&.openrouter_api_key ||
    ruby_llm_config&.anthropic_api_key || ruby_llm_config&.gemini_api_key
end