Skip to main content

Accurate token counting for multiple LLM providers

Project description

AI Token Counter

Accurate token counting for multiple LLM providers.

Features

  • Multi-Provider Support: OpenAI (GPT-4, GPT-3.5, GPT-4o, o1), Anthropic (Claude 3, 3.5, 3.7), Google (Gemini), Meta (Llama 2, 3, 3.1, 3.2, 3.3), Mistral, DeepSeek, Cohere
  • Cost Estimation: Built-in pricing for accurate cost calculations
  • Message Support: Count tokens in chat messages with proper overhead
  • Simple API: Easy-to-use functions for quick counting

Installation

pip install ai-token-counter

Quick Start

from ai_token_counter import count_tokens, estimate_cost

# Count tokens in text
count = count_tokens("Hello, world!", model="gpt-4o")
print(f"Tokens: {count}")

# Estimate cost
cost = estimate_cost(input_tokens=1000, output_tokens=500, model="gpt-4o")
print(f"Cost: ${cost.total_cost_usd:.6f}")

# Count chat messages
messages = [
    {"role": "user", "content": "Hello!"},
    {"role": "assistant", "content": "Hi there!"}
]
from ai_token_counter import count_message_tokens
result = count_message_tokens(messages, model="claude-3-5-sonnet")
print(f"Message tokens: {result.count}")

Supported Models

OpenAI

  • gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-4, gpt-3.5-turbo
  • o1-preview, o1-mini

Anthropic

  • claude-3-7-sonnet, claude-3-5-sonnet, claude-3-5-haiku
  • claude-3-opus, claude-3-sonnet, claude-3-haiku

Google

  • gemini-2.0-flash-exp, gemini-1.5-pro, gemini-1.5-flash
  • gemini-1.0-pro

Meta

  • llama-3.3-70b, llama-3.1-405b, llama-3.1-70b
  • llama-3-70b, llama-3-8b, llama-2-70b

Mistral

  • mistral-large, mistral-medium, mistral-small
  • mixtral-8x7b, mixtral-8x22b, codestral

DeepSeek

  • deepseek-chat, deepseek-coder, deepseek-reasoner

Cohere

  • command-r-plus, command-r, command

API Reference

TokenCounter Class

from ai_token_counter import TokenCounter

counter = TokenCounter(model="gpt-4o")

# Count text
result = counter.count("Your text here")
print(result.count)  # Token count
print(result.provider)  # Provider
print(result.estimated)  # Whether estimated

# Count messages
messages = [{"role": "user", "content": "Hello"}]
result = counter.count(messages=messages)

# Estimate cost
cost = counter.estimate_cost(input_tokens=1000, output_tokens=500)
print(cost.total_cost_usd)

# Get pricing info
pricing = counter.get_pricing_info("gpt-4o")

Convenience Functions

from ai_token_counter import (
    count_tokens,
    count_string_tokens,
    count_message_tokens,
    estimate_cost,
    count_conversation_tokens
)

# Quick count
count = count_tokens("text", model="gpt-4o")

# Full result
result = count_string_tokens("text", model="claude-3-opus")

# Messages
result = count_message_tokens(messages, model="gemini-1.5-pro")

# Cost
cost = estimate_cost(1000, 500, model="llama-3-70b")

# Conversation breakdown
breakdown = count_conversation_tokens(messages)
for msg in breakdown["messages"]:
    print(f"Message {msg['index']} ({msg['role']}): {msg['tokens']} tokens")
print(f"Total: {breakdown['total_tokens']} tokens")

License

MIT License - see LICENSE file for details.

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

ai_token_counter-1.0.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

ai_token_counter-1.0.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ai_token_counter-1.0.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for ai_token_counter-1.0.0.tar.gz
Algorithm Hash digest
SHA256 610925471e6349ba0c39f8c430adfc6ff412d0938a6b31ff780b3cab063f8910
MD5 f9768da01c700f3cc29efdcbe5b8c3bd
BLAKE2b-256 d7ef9d11ed558401f12f2bee43736633bed325009de39ed0fe278d07830ce4b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ai_token_counter-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a75aabadb88875c7acddaa0a06900e497253f733ac7e23cb124e06cd2946199
MD5 a4d0b53f313dd776e6a9535f5b8c3991
BLAKE2b-256 a32030c050166e1d80ad8eb80bdcd51d9e610cb5c6bc364a5ff5b8f89f912351

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