Module: Ask::TokenUsage::Pricing

Defined in:
lib/ask/token_usage/pricing.rb

Overview

Price conversions built on the configured per-token rate.

Ask::TokenUsage.configure { |c| c.price_per_token = 0.0001 }
Ask::TokenUsage.price_per_token   # => Money($0.0001)
Ask::TokenUsage.price_per(1_000)  # => Money($0.10)
Ask::TokenUsage.tokens_for(10)    # => 100_000

Class Method Summary collapse

Class Method Details

.cents_for(count, currency: nil) ⇒ Object

The price of count tokens in the currency's minor units (cents).



35
36
37
# File 'lib/ask/token_usage/pricing.rb', line 35

def cents_for(count, currency: nil)
  price_of(count).cents.to_i
end

.price_of(count) ⇒ Object

Price of count tokens at the configured rate.

Ask::TokenUsage.price_per(1_000)      # => Money($0.10)
Ask::TokenUsage.price_per(1_000_000)   # => Money($100.00)


22
23
24
# File 'lib/ask/token_usage/pricing.rb', line 22

def price_of(count)
  Ask::TokenUsage.config.price_per_token * count.to_i
end

.tokens_for(money) ⇒ Object

How many billing tokens a Money (or numeric dollar) amount buys.



27
28
29
30
31
32
# File 'lib/ask/token_usage/pricing.rb', line 27

def tokens_for(money)
  amount = money.is_a?(Money) ? money : Money.from_amount(money.to_d, Ask::TokenUsage.config.currency)
  return 0 if amount.negative? || amount.zero?

  (amount / Ask::TokenUsage.config.price_per_token).to_i
end