Module: RubyLLM::Agents::ImageGenerator::Pricing
- Extended by:
- Pricing
- Included in:
- Pricing
- Defined in:
- lib/ruby_llm/agents/image/generator/pricing.rb
Overview
Dynamic pricing resolution for image generation models.
Uses a three-tier strategy (no hardcoded prices):
-
Configurable pricing table - user overrides
-
RubyLLM gem (local, no HTTP) - model registry pricing
-
LiteLLM (via shared DataStore) - comprehensive, community-maintained
When no pricing is found, returns 0 to signal unknown cost.
Instance Method Summary collapse
-
#all_pricing ⇒ Hash
Expose all known pricing for debugging/console inspection.
-
#calculate_cost(model_id:, size: nil, quality: nil, count: 1) ⇒ Float
Calculate total cost for image generation.
-
#cost_per_image(model_id, size: nil, quality: nil) ⇒ Float
Get cost for a single image.
-
#refresh! ⇒ void
Refresh pricing data.
Instance Method Details
#all_pricing ⇒ Hash
Expose all known pricing for debugging/console inspection
78 79 80 81 82 83 |
# File 'lib/ruby_llm/agents/image/generator/pricing.rb', line 78 def all_pricing { litellm: litellm_image_models, configured: config.image_model_pricing || {} } end |
#calculate_cost(model_id:, size: nil, quality: nil, count: 1) ⇒ Float
Calculate total cost for image generation
37 38 39 40 |
# File 'lib/ruby_llm/agents/image/generator/pricing.rb', line 37 def calculate_cost(model_id:, size: nil, quality: nil, count: 1) cost = cost_per_image(model_id, size: size, quality: quality) (cost * count).round(6) end |
#cost_per_image(model_id, size: nil, quality: nil) ⇒ Float
Get cost for a single image
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/ruby_llm/agents/image/generator/pricing.rb', line 48 def cost_per_image(model_id, size: nil, quality: nil) # Tier 1: User-configurable pricing table if (config_price = from_config(model_id, size, quality)) return config_price end # Tier 2: RubyLLM gem (local, no HTTP) if (ruby_llm_price = from_ruby_llm(model_id)) return ruby_llm_price end # Tier 3: LiteLLM (via shared DataStore + adapter) if (litellm_price = from_litellm(model_id, size, quality)) return litellm_price end # No pricing found — return user-configured default or 0 config.default_image_cost || 0 end |