Class: Raif::ModelManifest::Dsl::ProviderBuilder
- Inherits:
-
Object
- Object
- Raif::ModelManifest::Dsl::ProviderBuilder
- Defined in:
- lib/raif/model_manifest/dsl.rb
Instance Method Summary collapse
- #finish ⇒ Object
-
#initialize(name:, source_path:) ⇒ ProviderBuilder
constructor
A new instance of ProviderBuilder.
-
#model(api_name:, display_name:, pricing:, lifecycle:, key: nil, key_base: nil, max_completion_tokens: nil, capabilities: nil, endpoints: nil) ⇒ Object
A model declares either
key:withcapabilities:(one entry), orkey_base:withendpoints:(one entry per endpoint, which is how OpenAI models reach both the completions and responses adapters). - #references(**urls) ⇒ Object
Constructor Details
#initialize(name:, source_path:) ⇒ ProviderBuilder
Returns a new instance of ProviderBuilder.
142 143 144 145 146 147 |
# File 'lib/raif/model_manifest/dsl.rb', line 142 def initialize(name:, source_path:) @name = name.to_sym @source_path = source_path @references = {} @models = [] end |
Instance Method Details
#finish ⇒ Object
180 181 182 183 184 185 186 187 |
# File 'lib/raif/model_manifest/dsl.rb', line 180 def finish ProviderDeclaration.new( name: @name, references: Dsl.deep_freeze(@references), models: @models.freeze, source_path: @source_path ).freeze end |
#model(api_name:, display_name:, pricing:, lifecycle:, key: nil, key_base: nil, max_completion_tokens: nil, capabilities: nil, endpoints: nil) ⇒ Object
A model declares either key: with capabilities: (one entry), or
key_base: with endpoints: (one entry per endpoint, which is how
OpenAI models reach both the completions and responses adapters).
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/raif/model_manifest/dsl.rb', line 156 def model( api_name:, display_name:, pricing:, lifecycle:, key: nil, key_base: nil, max_completion_tokens: nil, capabilities: nil, endpoints: nil ) single_entry = !key.nil? && !capabilities.nil? && key_base.nil? && endpoints.nil? per_endpoint = !key_base.nil? && !endpoints.nil? && key.nil? && capabilities.nil? unless single_entry || per_endpoint raise ArgumentError, "#{@source_path}: #{display_name} must declare key: with capabilities:, or key_base: with endpoints:" end @models << ModelDeclaration.new( key: key&.to_sym, key_base: (key_base || key).to_s, api_name: api_name, display_name: display_name, max_completion_tokens: max_completion_tokens, pricing: Dsl.normalize_pricing(pricing), capabilities: capabilities && Dsl.normalize_capabilities(capabilities), endpoints: endpoints && Dsl.normalize_endpoints(endpoints, source_path: @source_path), lifecycle: Dsl.normalize_lifecycle(lifecycle), source_path: @source_path ).freeze end |
#references(**urls) ⇒ Object
149 150 151 |
# File 'lib/raif/model_manifest/dsl.rb', line 149 def references(**urls) @references = urls end |