Track AI API usage with TokenTally
Project description
TokenTally Python SDK
Track your AI API usage with TokenTally. Get real-time analytics, cost tracking, and usage insights for Claude, OpenAI, and other AI providers.
Installation
pip install tokentally
Quick Start
from tokentally import TokenTally
# Initialize the client with your API key
tt = TokenTally(api_key="tt_your_api_key")
# Track usage manually
response = tt.track(
tokens_in=150,
tokens_out=300,
model="claude-3-sonnet-20240229",
provider="anthropic",
metadata={
"feature": "chat",
"user_id": "user123",
}
)
print(f"Recorded! Cost: ${response.cost_usd:.6f}")
Usage with Context Manager
The context manager automatically tracks timing:
from tokentally import TokenTally
import anthropic
tt = TokenTally(api_key="tt_your_api_key")
client = anthropic.Anthropic()
with tt.track_usage(
model="claude-3-sonnet-20240229",
metadata={"feature": "summarization"}
) as ctx:
# Make your API call
response = client.messages.create(
model="claude-3-sonnet-20240229",
max_tokens=1000,
messages=[{"role": "user", "content": "Summarize this..."}]
)
# Set the usage from the response
ctx.set_usage(
tokens_in=response.usage.input_tokens,
tokens_out=response.usage.output_tokens,
stop_reason=response.stop_reason,
)
# Usage is automatically sent when the context exits
print(f"Cost: ${ctx.response.cost_usd:.6f}")
Configuration
tt = TokenTally(
api_key="tt_your_api_key",
base_url="https://api.tokentally.io", # Optional custom URL
timeout=30.0, # Request timeout in seconds
)
Error Handling
from tokentally import TokenTally, RateLimitError, AuthenticationError, TokenTallyError
tt = TokenTally(api_key="tt_your_api_key")
try:
tt.track(tokens_in=100, tokens_out=200, model="claude-3-sonnet")
except RateLimitError:
print("Rate limit exceeded. Upgrade your plan for unlimited usage.")
except AuthenticationError:
print("Invalid API key. Check your credentials.")
except TokenTallyError as e:
print(f"Error tracking usage: {e}")
Metadata
Add custom metadata to categorize your usage:
tt.track(
tokens_in=100,
tokens_out=200,
model="claude-3-sonnet-20240229",
metadata={
"user_id": "user123",
"feature_name": "chat_completion",
"environment": "production",
"code_path": "services.chat.complete",
"request_id": "abc-123",
}
)
Image Generation
Track image generation APIs like Leonardo, DALL-E, and Midjourney using credits, resolution, and quality parameters:
# Leonardo AI
tt.track(
model="leonardo-phoenix",
provider="leonardo",
credits=15,
resolution="1024x1024",
quality="high",
)
# OpenAI DALL-E
tt.track(
model="dall-e-3",
provider="openai",
resolution="1024x1024",
quality="hd",
)
# With context manager
with tt.track_usage(model="leonardo-phoenix", provider="leonardo") as ctx:
response = leonardo.generate(prompt="A sunset over mountains")
ctx.set_usage(
credits=response.credits_used,
resolution="1024x1024",
quality="high",
)
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tokentally-0.2.0.tar.gz.
File metadata
- Download URL: tokentally-0.2.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ad43c74fda3a32e74f38721438030093831e60ed39c881e74d13d0a7b61a060
|
|
| MD5 |
8898572279928b9ef56bd6688bb4315c
|
|
| BLAKE2b-256 |
1e1f83b9144422788183c2699afc0c082f36b4b7a77adf0d96912ef7c11bf657
|
File details
Details for the file tokentally-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tokentally-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38c1b9586db8208ae630c52fcd45d48632a4cb3ebe898d454bdc7be83f9fe8f4
|
|
| MD5 |
af00290771bbf0ce015c99ed54a6002a
|
|
| BLAKE2b-256 |
e7db2fab822c47071e3cf38ebd7ec3b894644802d9ce4b9d292b3fc4a5398586
|