Class: Prescient::Configuration
- Inherits:
-
Object
- Object
- Prescient::Configuration
- Defined in:
- lib/prescient.rb
Overview
Configuration class for managing Prescient settings and providers
Handles global settings like timeouts and retry behavior, as well as provider registration and instantiation.
Constant Summary collapse
- DEFAULT_SENSITIVE_KEYS =
Returns Built-in provider option keys removed from output.
[:api_key, :password, :token, :secret].freeze
Instance Attribute Summary collapse
-
#default_provider ⇒ Symbol
The default provider to use when none specified.
-
#fallback_providers ⇒ Array<Symbol>
List of fallback providers to try when primary fails.
-
#providers ⇒ Hash
readonly
Registered providers configuration.
-
#retry_attempts ⇒ Integer
Number of retry attempts for failed requests.
-
#retry_delay ⇒ Float
Delay between retry attempts in seconds.
-
#sensitive_keys ⇒ Array<Symbol>
Additional keys removed from provider information.
-
#timeout ⇒ Integer
Default timeout in seconds for API requests.
Instance Method Summary collapse
-
#add_provider(name, provider_class, **options) ⇒ void
Register a new AI provider.
-
#available_providers ⇒ Array<Symbol>
Get list of providers that currently pass Base#available?.
-
#initialize ⇒ Configuration
constructor
Initialize configuration with default values.
-
#provider(name) ⇒ Base?
Instantiate a provider by name.
Constructor Details
#initialize ⇒ Configuration
Initialize configuration with default values
123 124 125 126 127 128 129 130 131 132 |
# File 'lib/prescient.rb', line 123 def initialize @default_provider = :ollama @timeout = 30 @retry_attempts = 3 @retry_delay = 1.0 @fallback_providers = [] @sensitive_keys = [] @providers = {} @provider_instances = {} # : Hash[Symbol, untyped] end |
Instance Attribute Details
#default_provider ⇒ Symbol
Returns The default provider to use when none specified.
102 103 104 |
# File 'lib/prescient.rb', line 102 def default_provider @default_provider end |
#fallback_providers ⇒ Array<Symbol>
Returns List of fallback providers to try when primary fails.
114 115 116 |
# File 'lib/prescient.rb', line 114 def fallback_providers @fallback_providers end |
#providers ⇒ Hash (readonly)
Returns Registered providers configuration.
120 121 122 |
# File 'lib/prescient.rb', line 120 def providers @providers end |
#retry_attempts ⇒ Integer
Returns Number of retry attempts for failed requests.
108 109 110 |
# File 'lib/prescient.rb', line 108 def retry_attempts @retry_attempts end |
#retry_delay ⇒ Float
Returns Delay between retry attempts in seconds.
111 112 113 |
# File 'lib/prescient.rb', line 111 def retry_delay @retry_delay end |
#sensitive_keys ⇒ Array<Symbol>
Returns Additional keys removed from provider information.
117 118 119 |
# File 'lib/prescient.rb', line 117 def sensitive_keys @sensitive_keys end |
#timeout ⇒ Integer
Returns Default timeout in seconds for API requests.
105 106 107 |
# File 'lib/prescient.rb', line 105 def timeout @timeout end |
Instance Method Details
#add_provider(name, provider_class, **options) ⇒ void
This method returns an undefined value.
Register a new AI provider
158 159 160 161 162 163 164 165 |
# File 'lib/prescient.rb', line 158 def add_provider(name, provider_class, **) provider_name = name.to_sym @providers[provider_name] = { class: provider_class, options: , } @provider_instances.delete(provider_name) end |
#available_providers ⇒ Array<Symbol>
Get list of providers that currently pass Base#available?.
Providers are included when their health check reports reachable: true,
or, for legacy adapters, status == "healthy".
186 187 188 189 190 191 192 |
# File 'lib/prescient.rb', line 186 def available_providers @providers.keys.select do |name| provider(name)&.available? rescue StandardError false end end |
#provider(name) ⇒ Base?
Instantiate a provider by name
171 172 173 174 175 176 177 178 |
# File 'lib/prescient.rb', line 171 def provider(name) provider_name = name.to_sym provider_config = @providers[provider_name] return nil unless provider_config = provider_config[:options] # : Hash[Symbol, untyped] @provider_instances[provider_name] ||= provider_config[:class].new(**) end |