class Riffer::Catalog::Rates
rbs_inline: enabled
Attributes
Public Class Methods
Source
# File lib/riffer/catalog/rates.rb, line 15 def initialize(input:, output:, cache_read: nil, cache_write: nil) @input = coerce_rate(input, "input") @output = coerce_rate(output, "output") @cache_read = cache_read.nil? ? nil : coerce_rate(cache_read, "cache_read") @cache_write = cache_write.nil? ? nil : coerce_rate(cache_write, "cache_write") end
Public Instance Methods
Source
# File lib/riffer/catalog/rates.rb, line 24 def cost_for(input_tokens:, output_tokens:, cache_read_tokens: nil, cache_write_tokens: nil) read = cache_read_tokens || 0 write = cache_write_tokens || 0 uncached = input_tokens - read - write uncached = 0 if uncached.negative? per_million = (uncached * input) + (read * (cache_read || input)) + (write * (cache_write || input)) + (output_tokens * output) per_million / 1_000_000.0 end