Module: Legion::Extensions::Llm::ProviderSettings
- Defined in:
- lib/legion/extensions/llm/provider_settings.rb
Overview
Builds shared provider defaults for lex-llm-* extension gems.
Class Method Summary collapse
-
.build(family:, instance: {}, enabled: true, discovery: {}, instances: {}, fleet: nil, gateways: nil, **legacy_settings) ⇒ Object
rubocop:disable Metrics/ParameterLists.
- .infer_tier_from_endpoint(url) ⇒ Object
- .validate_provider_defaults!(fleet:, gateways:, legacy_settings:) ⇒ Object
Class Method Details
.build(family:, instance: {}, enabled: true, discovery: {}, instances: {}, fleet: nil, gateways: nil, **legacy_settings) ⇒ Object
rubocop:disable Metrics/ParameterLists
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/legion/extensions/llm/provider_settings.rb', line 10 def build(family:, instance: {}, enabled: true, discovery: {}, instances: {}, fleet: nil, gateways: nil, # rubocop:disable Metrics/ParameterLists **legacy_settings) validate_provider_defaults!(fleet:, gateways:, legacy_settings:) Utils.deep_merge( Legion::Extensions::Llm.default_settings, { enabled: enabled, provider_family: family, discovery: Utils.deep_merge({ enabled: true, interval_seconds: 300 }, discovery || {}), instances: Utils.deep_merge( { default: Utils.deep_merge( { enabled: true, credentials: nil, fleet: { enabled: false, consumer_priority: 0, prefetch: 1 } }, instance || {} ) }, instances || {} ) } ) end |
.infer_tier_from_endpoint(url) ⇒ Object
47 48 49 50 51 |
# File 'lib/legion/extensions/llm/provider_settings.rb', line 47 def infer_tier_from_endpoint(url) return :direct if url.nil? || url.to_s.empty? Legion::Extensions::Llm::Utils.localhost_url?(url) ? :local : :direct end |
.validate_provider_defaults!(fleet:, gateways:, legacy_settings:) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/legion/extensions/llm/provider_settings.rb', line 33 def validate_provider_defaults!(fleet:, gateways:, legacy_settings:) if fleet raise ArgumentError, 'Provider fleet defaults must be nested under an instance, for example instances.default.fleet' end raise ArgumentError, 'Provider gateways settings are no longer supported; use instances instead' if gateways return if legacy_settings.empty? invalid_keys = legacy_settings.keys.map(&:to_sym) raise ArgumentError, "Unsupported top-level provider settings: #{invalid_keys.join(', ')}" end |