Class: Raif::ModelManifest::Dsl::ProviderBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/raif/model_manifest/dsl.rb

Instance Method Summary collapse

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

#finishObject



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