🛡️ TokenShield
Real-time token cost monitoring, budget enforcement, and optimization for LLM applications.
Stop burning money on LLM API calls. TokenShield gives you per-request cost tracking, budget gates, and automatic optimization — before the invoice arrives.
The Problem
Month 1: $50 "This is cheap!"
Month 2: $200 "Growth is normal"
Month 3: $3,400 "WHAT HAPPENED?!"
LLM costs are invisible until the bill arrives. A single misconfigured loop, a verbose system prompt, or an unbound tool list can 10x your spend overnight.
The Solution
from tokenshield import Shield, BudgetPolicy
shield = Shield(
model="gpt-4o",
policy=BudgetPolicy(
max_cost_per_request=0.05, # $0.05 per request
max_cost_per_hour=2.00, # $2/hour
max_cost_per_day=20.00, # $20/day
alert_threshold_pct=80, # Alert at 80% of any limit
)
)
# Wrap any LLM call
result = shield.call(
messages=[{"role": "user", "content": "Summarize this order"}],
tools=tool_schemas,
)
print(shield.report())
# ┌─────────────────────────────────┐
# │ Requests today: 142 │
# │ Tokens (in/out): 89K / 12K │
# │ Cost today: $4.23 │
# │ Budget remaining: $15.77 │
# │ Avg cost/request: $0.030 │
# │ Most expensive: search (48%)│
# └─────────────────────────────────┘
Features
| Feature | Description |
|---|---|
| Cost Tracking | Per-request, per-hour, per-day cost accumulation with model-aware pricing |
| Budget Gates | Hard limits that reject calls before they execute (no surprise bills) |
| Alert Hooks | Webhook/callback when approaching budget thresholds |
| Token Estimation | Pre-flight token count estimation before calling the API |
| Model Pricing DB | Built-in pricing for GPT-4o, Claude, Gemini, Mistral, and custom models |
| Optimization Tips | Automatic suggestions: "Your system prompt is 4,200 tokens — consider trimming" |
| Dashboard Export | JSON/CSV export for cost dashboards and observability tools |
| Async Support | Full async/await support for high-throughput applications |
Architecture
┌──────────────────────────────────────────────────────────┐
│ Your Application │
├──────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ shield │──→│ estimator│──→│ budget_gate │ │
│ │ .call() │ │ (tokens) │ │ (allow / reject) │ │
│ └──────────┘ └──────────┘ └──────────┬───────────┘ │
│ │ │ │
│ │ ┌──────────┐ ┌───────────▼──────────┐ │
│ │ │ tracker │←──│ LLM API call │ │
│ │ │ (costs) │ │ (litellm / openai) │ │
│ │ └────┬─────┘ └──────────────────────┘ │
│ │ │ │
│ ┌────▼──────────────▼─────┐ ┌──────────────────────┐ │
│ │ reporter │ │ alert_hooks │ │
│ │ (dashboard / export) │ │ (webhook / callback) │ │
│ └─────────────────────────┘ └──────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
Quick Start
pip install tokenshield
Basic Usage
from tokenshield import Shield
shield = Shield(model="gpt-4o")
# Track a call (wrap your existing LLM call)
result = shield.call(messages=[...])
# Check current spend
print(f"Today: ${shield.tracker.cost_today:.2f}")
Budget Enforcement
from tokenshield import Shield, BudgetPolicy
shield = Shield(
model="gpt-4o",
policy=BudgetPolicy(max_cost_per_request=0.10)
)
try:
result = shield.call(messages=huge_prompt)
except shield.BudgetExceeded as e:
print(f"Blocked! Estimated cost ${e.estimated_cost:.3f} exceeds limit")
Alert Hooks
shield = Shield(
model="gpt-4o",
policy=BudgetPolicy(max_cost_per_day=20.00, alert_threshold_pct=80),
on_alert=lambda msg: slack.post(channel="#llm-costs", text=msg),
)
Optimization Suggestions
tips = shield.optimize(messages, tools)
# [
# "System prompt is 3,800 tokens (63% of input). Consider compressing.",
# "18 tools bound but only 3 used. Use dynamic tool binding to save ~2,250 tokens.",
# "History has 45 messages. Consider windowing to last 20.",
# ]
Pricing Database
Built-in pricing (updated monthly):
| Model | Input ($/1M) | Output ($/1M) | Context |
|---|---|---|---|
| gpt-4o | $2.50 | $10.00 | 128K |
| gpt-4o-mini | $0.15 | $0.60 | 128K |
| claude-3.5-sonnet | $3.00 | $15.00 | 200K |
| claude-3-haiku | $0.25 | $1.25 | 200K |
| gemini-1.5-pro | $1.25 | $5.00 | 1M |
| mistral-large | $2.00 | $6.00 | 128K |
Add custom models:
shield.pricing.add("my-finetuned-model", input=5.00, output=15.00)
Documentation
- Architecture & Data Flow — Mermaid diagrams of the full pipeline
- Benchmarks — Cost savings measurements across real workloads
- API Reference — Full class/method documentation
License
MIT — see LICENSE
Metadata
Release files for tokenshield-ai 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tokenshield_ai-2.0.0.tar.gz | 12.5 kB | Without provenance | Details for tokenshield_ai-2.0.0.tar.gz |
Release files / tokenshield_ai-2.0.0.tar.gz
| Download URL | tokenshield_ai-2.0.0.tar.gz |
|---|---|
| Size | 12.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7db181e421fd98d1682a8cc9c9e221138f364e8a792320941dd7ca522a1a80f4
|
|
BLAKE2b-256 checksum How to use checksums |
06d9b1d0db13be39e0e498679532bf7395c947c1e6ac8019a2662fd9e49ec6a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for tokenshield-ai 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.