module RubyLLM::Providers::Perplexity::Capabilities
Provider-level capability checks and narrow registry fallbacks.
Constants
- PRICES
Public Class Methods
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 30 def context_window_for(model_id) model_id.match?(/sonar-pro/) ? 200_000 : 128_000 end
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 38 def critical_capabilities_for(model_id) capabilities = [] capabilities << 'vision' if model_id.match?(/sonar(?:-pro|-reasoning(?:-pro)?)?$/) capabilities << 'reasoning' if model_id.match?(/reasoning|deep-research/) capabilities end
Source
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 34 def max_tokens_for(model_id) model_id.match?(/sonar-(?:pro|reasoning-pro)/) ? 8_192 : 4_096 end
Source
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 57 def model_family(model_id) case model_id when 'sonar' then :sonar when 'sonar-pro' then :sonar_pro when 'sonar-reasoning' then :sonar_reasoning when 'sonar-reasoning-pro' then :sonar_reasoning_pro when 'sonar-deep-research' then :sonar_deep_research else :unknown end end
Source
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 45 def pricing_for(model_id) prices = PRICES.fetch(model_family(model_id), { input: 1.0, output: 1.0 }) standard = { input_per_million: prices[:input], output_per_million: prices[:output] } standard[:reasoning_output_per_million] = prices[:reasoning_output] if prices[:reasoning_output] { text_tokens: { standard: standard } } end
Public Instance Methods
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 22 def supports_tool_choice?(_model_id) false end
# File lib/ruby_llm/providers/perplexity/capabilities.rb, line 26 def supports_tool_parallel_control?(_model_id) false end