Class: SkillBench::Models::Provider
- Inherits:
-
Object
- Object
- SkillBench::Models::Provider
- Defined in:
- lib/skill_bench/models/provider.rb
Overview
Represents an agent runtime + LLM provider
Constant Summary collapse
- ALLOWED_PROVIDERS =
(Clients::ProviderSchemas.names.map(&:to_s) + %w[mock]).freeze
- ENV_OVERRIDABLE_SETTINGS =
Settings that can be overridden via environment variables.
%i[api_key model base_url endpoint location project_id api_version].freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#llm ⇒ Object
readonly
Returns the value of attribute llm.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#runtime ⇒ Object
readonly
Returns the value of attribute runtime.
Instance Method Summary collapse
-
#initialize(name:, runtime:, llm:, config: {}) ⇒ Provider
constructor
Initialize a new Provider.
-
#merged_config ⇒ Hash
Returns merged config with environment variable fallbacks.
Constructor Details
#initialize(name:, runtime:, llm:, config: {}) ⇒ Provider
Initialize a new Provider
21 22 23 24 25 26 |
# File 'lib/skill_bench/models/provider.rb', line 21 def initialize(name:, runtime:, llm:, config: {}) @name = name @runtime = runtime @llm = llm @config = config.is_a?(Hash) ? config.transform_keys(&:to_sym) : {} end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
9 10 11 |
# File 'lib/skill_bench/models/provider.rb', line 9 def config @config end |
#llm ⇒ Object (readonly)
Returns the value of attribute llm.
9 10 11 |
# File 'lib/skill_bench/models/provider.rb', line 9 def llm @llm end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/skill_bench/models/provider.rb', line 9 def name @name end |
#runtime ⇒ Object (readonly)
Returns the value of attribute runtime.
9 10 11 |
# File 'lib/skill_bench/models/provider.rb', line 9 def runtime @runtime end |
Instance Method Details
#merged_config ⇒ Hash
Returns merged config with environment variable fallbacks. Checks both ‘SKILL_BENCH_<PROVIDER>_<SETTING>` (documented standard) and `<PROVIDER>_<SETTING>` (legacy) naming conventions.
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/skill_bench/models/provider.rb', line 34 def merged_config raise ArgumentError, "Invalid provider name: #{name}" unless ALLOWED_PROVIDERS.include?(name) merged = config.dup ENV_OVERRIDABLE_SETTINGS.each do |setting| merged[setting] = resolve_env_setting(setting) end api_key = merged[:api_key] raise ArgumentError, "API key not found for provider '#{name}'. Set SKILL_BENCH_#{name.upcase}_API_KEY environment variable or provide in config." if api_key.nil? || api_key.to_s.empty? merged end |