class RubyLLM::Model::Info
Information about an AI modelβs capabilities, pricing, and metadata.
Attributes
Public Class Methods
Source
# File lib/ruby_llm/model/info.rb, line 11 def self.default(model_id, provider) new( id: model_id, name: model_id.tr('-', ' ').capitalize, provider: provider, capabilities: %w[function_calling streaming vision structured_output], modalities: { input: %w[text image], output: %w[text] }, metadata: { warning: 'Assuming model exists, capabilities may not be accurate' } ) end
Create a default model with assumed capabilities
Source
# File lib/ruby_llm/model/info.rb, line 22 def initialize(data) @id = data[:id] @name = data[:name] @provider = data[:provider] @family = data[:family] @created_at = Utils.to_time(data[:created_at])&.utc @context_window = data[:context_window] @max_output_tokens = data[:max_output_tokens] @knowledge_cutoff = Utils.to_date(data[:knowledge_cutoff]) @modalities = Modalities.new(data[:modalities] || {}) @capabilities = data[:capabilities] || [] @pricing = Pricing.new(data[:pricing] || {}) @metadata = data[:metadata]&.dup || {} @reasoning_options = normalize_reasoning_options(reasoning_options_from(data)) store_reasoning_options_metadata end
Public Instance Methods
# File lib/ruby_llm/model/info.rb, line 90 def cache_read_input_price_per_million pricing.text_tokens.cache_read_input end
Also aliased as: cached_input_price_per_million
# File lib/ruby_llm/model/info.rb, line 94 def cache_write_input_price_per_million pricing.text_tokens.cache_write_input end
Also aliased as: cache_creation_input_price_per_million
Source
# File lib/ruby_llm/model/info.rb, line 101 def cost_for(tokens) tokens = tokens.tokens if tokens.respond_to?(:tokens) Cost.new(tokens:, model: self) end
Source
# File lib/ruby_llm/model/info.rb, line 82 def input_price_per_million pricing.text_tokens.input end
Source
# File lib/ruby_llm/model/info.rb, line 53 def label provider_name = provider_class&.name || provider "#{provider_name} - #{display_name}" end
Source
# File lib/ruby_llm/model/info.rb, line 58 def max_tokens max_output_tokens end
Source
# File lib/ruby_llm/model/info.rb, line 86 def output_price_per_million pricing.text_tokens.output end
Source
# File lib/ruby_llm/model/info.rb, line 107 def provider_class RubyLLM::Provider.resolve provider end
Source
# File lib/ruby_llm/model/info.rb, line 66 def reasoning_option(type) reasoning_options.find { |option| option[:type] == type.to_s } end
# File lib/ruby_llm/model/info.rb, line 70 def reasoning_option_values(type) Array(reasoning_option(type)&.fetch(:values, nil)) end
Source
# File lib/ruby_llm/model/info.rb, line 39 def supports?(capability) capabilities.include?(capability.to_s) end
Source
# File lib/ruby_llm/model/info.rb, line 78 def supports_functions? function_calling? end
Source
# File lib/ruby_llm/model/info.rb, line 74 def supports_video? modalities.input.include?('video') end
Source
# File lib/ruby_llm/model/info.rb, line 62 def supports_vision? modalities.input.include?('image') end
Source
# File lib/ruby_llm/model/info.rb, line 122 def to_h { id: id, name: name, provider: provider, family: family, created_at: created_at, context_window: context_window, max_output_tokens: max_output_tokens, knowledge_cutoff: knowledge_cutoff, modalities: modalities.to_h, capabilities: capabilities, pricing: pricing.to_h, metadata: metadata } end
Source
# File lib/ruby_llm/model/info.rb, line 111 def type output = modalities.output return 'embedding' if output.include?('embeddings') return 'moderation' if output.include?('moderation') return 'image' if output.include?('image') return 'audio' if output.include?('audio') return 'video' if output.include?('video') 'chat' end