class RubyLLM::ModelInfo

model.input_price_per_million # => 30.0
model.supports_functions? # => true
model.supports_vision? # => true
model = RubyLLM.models.find(‘gpt-4’)
Example:
for their needs.
Used by the Models registry to help developers choose the right model
Information about an AI model’s capabilities, pricing, and metadata.

def initialize(data) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength

rubocop:disable Metrics/AbcSize,Metrics/MethodLength
def initialize(data) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
  @id = data[:id]
  @created_at = data[:created_at].is_a?(String) ? Time.parse(data[:created_at]) : data[:created_at]
  @display_name = data[:display_name]
  @provider = data[:provider]
  @context_window = data[:context_window]
  @max_tokens = data[:max_tokens]
  @type = data[:type]
  @family = data[:family]
  @supports_vision = data[:supports_vision]
  @supports_functions = data[:supports_functions]
  @supports_json_mode = data[:supports_json_mode]
  @input_price_per_million = data[:input_price_per_million]
  @output_price_per_million = data[:output_price_per_million]
  @metadata = data[:metadata] || {}
end

def to_h # rubocop:disable Metrics/MethodLength

rubocop:disable Metrics/MethodLength
def to_h # rubocop:disable Metrics/MethodLength
  {
    id: id,
    created_at: created_at&.iso8601,
    display_name: display_name,
    provider: provider,
    context_window: context_window,
    max_tokens: max_tokens,
    type: type,
    family: family,
    supports_vision: supports_vision,
    supports_functions: supports_functions,
    supports_json_mode: supports_json_mode,
    input_price_per_million: input_price_per_million,
    output_price_per_million: output_price_per_million,
    metadata: metadata
  }
end