Skip to main content

A library to estimate OpenAI API costs based on token usage, integrating with Langchain. This is a fork from v1.1.1 of openai_cost_calculator by Orkun Kınay and Murat Barkın Kınay (https://github.com/orkunkinay/openai_cost_calculator).

Project description

openai_cost_calculator_with_langchain

License

This is a package forked of the original openai_cost_calculator, which integrates support for Langchain.

Instant, accurate USD cost estimates for OpenAI & Azure OpenAI API calls. Works with Chat Completions and the Responses API, streaming or not. It also works with Langchain invoke responses. Offers a typed Decimal-based API for finance-safe math and a legacy string API for drop-ins.

Docs: https://orkunkinay.github.io/openai_cost_calculator/


Installation

pip install openai-cost-calculator-with-langchain

Import name uses underscores: import openai_cost_calculator-with-langchain


Quickstart

Typed (recommended)

from openai import OpenAI
from openai_cost_calculator import estimate_cost_typed

client = OpenAI()
resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hi there!"}],
)

cost = estimate_cost_typed(resp)  # -> CostBreakdown (Decimal fields)
print(cost.total_cost)            # Decimal('0.00000750')
print(cost.as_dict(stringify=True))  # 8-dp strings if you prefer

Legacy (string output)

from openai_cost_calculator import estimate_cost
print(estimate_cost(resp))  # dict of 8-dp strings

Responses API

resp = client.responses.create(model="gpt-4.1-mini", input=[{"role":"user","content":"Hi"}])
from openai_cost_calculator import estimate_cost_typed
print(estimate_cost_typed(resp))

Streaming

stream = client.chat.completions.create(
  model="gpt-4o-mini",
  messages=[{"role":"user","content":"Hi"}],
  stream=True,
  stream_options={"include_usage": True},
)
from openai_cost_calculator import estimate_cost_typed
print(estimate_cost_typed(stream))

Langchain

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from openai_cost_calculator import estimate_cost_typed

load_dotenv()

model = ChatOpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    model="gpt-4o-mini",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)

messages = [
    (
        "system",
        "You are a helpful translator. Translate the user sentence to French.",
    ),
    ("human", "I love programming."),
]

response = model.invoke(messages)
print(estimate_cost_typed(response, is_langchain_response=True))

Highlights

  • Typed API: CostBreakdown dataclass with Decimal precision
  • Drop-in legacy API: 8-decimal strings (backward compatible)
  • Handles edge cases: cached tokens, undated model strings, streaming generators, Azure deployment names
  • Pricing sources: Remote CSV (24h cache) + local overrides and offline mode

Pricing utilities

from openai_cost_calculator import (
  refresh_pricing, set_offline_mode,
  add_pricing_entry, add_pricing_entries, clear_local_pricing
)

# Force refresh (bypasses 24h cache)
refresh_pricing()

# Run fully offline (no network calls)
set_offline_mode(True)

# Teach custom prices (per 1M tokens)
add_pricing_entry(
  "ollama/qwen3:30b", "2025-08-01",
  input_price=0.20, output_price=0.60, cached_input_price=0.04
)

Remote CSV (auto-fetched, cached 24h):
https://raw.githubusercontent.com/orkunkinay/openai_cost_calculator/refs/heads/main/data/gpt_pricing_data.csv


Errors

Recoverable issues raise CostEstimateError with a clear message (missing pricing row, unexpected input shape, etc.).


Troubleshooting

  • “Pricing not found” → confirm row exists in the CSV; call refresh_pricing().
  • cached_tokens = 0 → ensure include_usage_details=True (classic) or stream_options={"include_usage": True} (streaming).
  • Model string has no date → the latest row with date ≤ today is used.

Links


License

MIT © 2025 Orkun Kınay & Murat Barkın Kınay

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

openai_cost_calculator_with_lanchain-1.0.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file openai_cost_calculator_with_lanchain-1.0.0.tar.gz.

File metadata

File hashes

Hashes for openai_cost_calculator_with_lanchain-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3187209a37a9f332439fd084cda74233d9aaa95fd2fd9da9f2fd93a04bf56c36
MD5 874f22a8cac31b6e4c9067e5ec163d52
BLAKE2b-256 52d08c99649f10f4242b2a4dcc62bc497990626e9cdfa9dac1e72a60f469a312

See more details on using hashes here.

File details

Details for the file openai_cost_calculator_with_lanchain-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openai_cost_calculator_with_lanchain-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d37e300a179fd5b8e53e2ca661f48807c5872f851cefb8e0c3a3186f26e405c
MD5 2dbc6dc283a71d12537d493ce781e00d
BLAKE2b-256 0143dafb3a3403282573f5e90760a61ea544d84d9e24073c856d9a45dff31c22

See more details on using hashes here.

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