module RubyLLM::Providers::XAI::Models
Models metadata for xAI list models.
Public Instance Methods
Source
# File lib/ruby_llm/providers/xai/models.rb, line 43 def capabilities_for(model_id) return ['vision'] if image_model?(model_id) || video_model?(model_id) ['streaming'] end
# File lib/ruby_llm/providers/xai/models.rb, line 49 def format_display_name(model_id) model_id.tr('-', ' ').split.map(&:capitalize).join(' ') end
Source
# File lib/ruby_llm/providers/xai/models.rb, line 53 def image_model?(model_id) model_id.match?(/\Agrok-(?:2-)?imagine-image/) || model_id == 'grok-2-image-1212' end
Source
# File lib/ruby_llm/providers/xai/models.rb, line 33 def modalities_for(model_id) if image_model?(model_id) { input: %w[text image], output: ['image'] } elsif video_model?(model_id) { input: %w[text image video], output: ['video'] } else { input: ['text'], output: ['text'] } end end
# File lib/ruby_llm/providers/xai/models.rb, line 10 def parse_list_models_response(response, slug, _capabilities) Array(response.body['data']).map do |model_data| model_id = model_data['id'] Model::Info.new( id: model_id, name: format_display_name(model_id), provider: slug, family: 'grok', created_at: model_data['created'] ? Time.at(model_data['created']) : nil, context_window: nil, max_output_tokens: nil, modalities: modalities_for(model_id), capabilities: capabilities_for(model_id), pricing: {}, metadata: { object: model_data['object'], owned_by: model_data['owned_by'] }.compact ) end end
Source
# File lib/ruby_llm/providers/xai/models.rb, line 57 def video_model?(model_id) model_id.match?(/\Agrok-(?:2-)?imagine-video/) end