Skip to main content

Pricing + release metadata and cost estimation for LLMs

Project description

llm-price

Pricing + release metadata and cost estimation for LLMs (OpenAI + Google Gemini).

Features

  • Model metadata with release dates
  • Static pricing in USD per 1M tokens
  • Cost estimation from token counts or raw text
  • Any currency output (real-time FX from exchangerate.host, cached)
  • CLI for listing models and summing JSONL usage

Install

pip install llm-price

Quickstart (Python)

from decimal import Decimal

from llm_price import cost_from_text, cost_from_tokens, get_fx_rate, list_models

models = list_models("openai")
print(models[0])

cost = cost_from_text(
    "openai",
    "gpt-4o-mini",
    prompt="Summarize this text.",
    completion="Here is a summary...",
)
print(cost.total_cost)

cost_in_inr = cost_from_tokens(
    "google",
    "gemini-1.5-flash",
    prompt_tokens=120,
    completion_tokens=40,
    currency="INR",
    fx_rate=Decimal("83.12"),
)
print(cost_in_inr.total_cost)

live_fx = get_fx_rate("USD", "INR")
print("Live USD→INR:", live_fx)

CLI

llm-price models --provider openai

llm-price cost \
  --provider openai \
  --model gpt-4o-mini \
  --prompt "Hello" \
  --completion "Hi" \
  --currency USD

llm-price cost \
  --provider google \
  --model gemini-1.5-flash \
  --prompt-tokens 100 \
  --completion-tokens 20 \
  --currency INR \
  --fx-rate "83.12"

JSONL Summation

llm-price sum usage.jsonl supports lines with:

Token counts

{"provider":"openai","model":"gpt-4o-mini","prompt_tokens":1200,"completion_tokens":400}

Raw text (tokenized internally)

{"provider":"openai","model":"gpt-4o-mini","prompt":"Hello","completion":"Hi"}

Pre-computed totals

{"total_cost":{"amount":"0.0123","currency":"USD"}}

Example Scripts

Run these from the repo root after installing dependencies:

python examples/basic_cost.py
python examples/inr_conversion.py
python examples/sum_jsonl.py

Notes

  • Pricing data is stored in src/llm_price/data/models.json in USD per 1M tokens.
  • OpenAI pricing is refreshed daily from https://bes-dev.github.io/openai-pricing-api/pricing.json via a GitHub Actions workflow.
  • OpenAI entries also store cached_input_per_1m when available.
  • For non-USD output, FX defaults to a real-time rate from exchangerate.host.
  • You can override it with fx_rate to use a fixed rate.
  • Rates are cached in-process for 1 hour by default.
  • Gemini token counting uses the official CountTokens API when GOOGLE_API_KEY is set; otherwise it falls back to an approximation.

Development

pip install -e ".[dev]"
pytest

Release (PyPI)

This project uses GitHub Actions trusted publishing. Create a tag like v0.1.0 and push it to GitHub to trigger the publish workflow:

git tag v0.1.0
git push origin v0.1.0

Configure the PyPI Trusted Publisher with:

  • PyPI Project Name: llm-price
  • Owner: VA24d
  • Repository name: API-price
  • Workflow name: publish.yml
  • Environment name: pypi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_price-0.1.3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_price-0.1.3-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file llm_price-0.1.3.tar.gz.

File metadata

  • Download URL: llm_price-0.1.3.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llm_price-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b5e9a04447f160d7d90e27c08e0b2923da23aff7600741cf76750cba6a1bd5b2
MD5 974c04602ccbc81eef3d8c9bf91b2102
BLAKE2b-256 582f9f2e8b9f944624ea33a2ef3320567a25ab55e1f4ab03d839241160c5daed

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_price-0.1.3.tar.gz:

Publisher: publish.yml on VA24d/API-price

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_price-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: llm_price-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llm_price-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a154dee16f164791eb9bf3a30d9c4dfdd4eee8ebeb0f2c93d4eefc95901fb5af
MD5 aeb8fbb0e752bb62c54b12d5697194d3
BLAKE2b-256 7aead074e1c5d406c0e54e3000bf5872946b9b7493ba4dd621af062aab58b2cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_price-0.1.3-py3-none-any.whl:

Publisher: publish.yml on VA24d/API-price

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page