Class ModelPricing

java.lang.Object
com.tnsai.llm.cost.ModelPricing

public class ModelPricing extends Object
Model pricing information for cost calculation.

ModelPricing provides pricing data for various LLM models, enabling accurate cost tracking and budget management.

Pricing Units

All prices are per 1 million tokens ($/1M tokens). This is the standard unit used by most providers.

Supported Providers

  • OpenAI (GPT-4o, GPT-4-turbo, GPT-3.5-turbo, o1)
  • Anthropic (Claude 3.5 Sonnet, Claude 3 Opus)
  • Google (Gemini 2.0, Gemini 1.5)
  • Groq (Llama 3.3, Mixtral)
  • Mistral (Large, Medium, Small)

Usage Example


 ModelPricing pricing = ModelPricing.forModel("gpt-4o");
 BigDecimal inputCost = pricing.calculateInputCost(1000);  // 1000 tokens
 BigDecimal outputCost = pricing.calculateOutputCost(500); // 500 tokens
 
  • Method Details

    • forModel

      public static Optional<ModelPricing> forModel(String modelId)
      Gets pricing for a model.
      Parameters:
      modelId - The model identifier
      Returns:
      Optional containing pricing if found
    • registerPricing

      public static void registerPricing(String modelId, String provider, BigDecimal inputPricePerMillion, BigDecimal outputPricePerMillion)
      Registers custom pricing for a model.
      Parameters:
      modelId - Model identifier
      provider - Provider name
      inputPricePerMillion - Input price per 1M tokens
      outputPricePerMillion - Output price per 1M tokens
    • calculateInputCost

      public BigDecimal calculateInputCost(long tokens)
      Calculates cost for input tokens.
      Parameters:
      tokens - Number of input tokens
      Returns:
      Cost in USD
    • calculateOutputCost

      public BigDecimal calculateOutputCost(long tokens)
      Calculates cost for output tokens.
      Parameters:
      tokens - Number of output tokens
      Returns:
      Cost in USD
    • calculateCachedInputCost

      public BigDecimal calculateCachedInputCost(long tokens)
      Calculates cost for cached input tokens.
      Parameters:
      tokens - Number of cached input tokens
      Returns:
      Cost in USD, or regular input cost if cached pricing unavailable
    • calculateTotalCost

      public BigDecimal calculateTotalCost(long inputTokens, long outputTokens)
      Calculates total cost for a request.
      Parameters:
      inputTokens - Input token count
      outputTokens - Output token count
      Returns:
      Total cost in USD
    • calculateTotalCost

      public BigDecimal calculateTotalCost(long inputTokens, long cachedInputTokens, long outputTokens)
      Calculates total cost with cached tokens.
      Parameters:
      inputTokens - Regular input token count
      cachedInputTokens - Cached input token count
      outputTokens - Output token count
      Returns:
      Total cost in USD
    • getModelId

      public String getModelId()
    • getProvider

      public String getProvider()
    • getInputPricePerMillion

      public BigDecimal getInputPricePerMillion()
    • getOutputPricePerMillion

      public BigDecimal getOutputPricePerMillion()
    • getCachedInputPricePerMillion

      public Optional<BigDecimal> getCachedInputPricePerMillion()
    • supportsCachedPricing

      public boolean supportsCachedPricing()
    • toString

      public String toString()
      Overrides:
      toString in class Object