Skip to main content

Token Estimation

PraisonAI provides fast, offline token estimation that works without API calls. This enables real-time context budget tracking and optimization decisions. The user estimates tokens for a prompt; heuristics predict cost before the agent calls the model.

How It Works

Quick Start

1

Estimate text tokens

2

Estimate messages and tool schemas

Estimation Algorithm

The heuristic estimator uses character-based rules optimized for typical LLM tokenization:

Message Overhead

Each message includes overhead for role markers and formatting:
  • Base overhead: 4 tokens per message
  • Role tokens: ~2 tokens
  • Content: Estimated via heuristic

API Reference

estimate_tokens_heuristic(text: str) -> int

Estimate tokens for a string using character-based heuristics.

estimate_messages_tokens(messages: List[Dict]) -> int

Estimate total tokens for a list of chat messages.

estimate_tool_schema_tokens(tools: List[Dict]) -> int

Estimate tokens for tool/function schemas.

TokenEstimatorImpl

Class-based estimator with caching:

get_estimator() -> TokenEstimatorImpl

Get a singleton estimator instance:

Accuracy Considerations

The heuristic estimator is designed for speed over perfect accuracy: For budget decisions, the estimator adds a small safety margin to prevent underestimation.

Performance

  • Speed: < 1ms for 100K characters
  • Memory: O(1) - no caching required
  • No API calls: Works completely offline

Integration with Budgeter

Best Practices

Check message totals against the budget to trigger compaction proactively.
Pass the model name so tiktoken or provider-specific counting applies when available.
Act before hard limits — retrieval trimming and summarisation need headroom.
Run validated mode on fixture conversations to catch drift in token counting.

Context Ledger

Track tokens by segment

Context Budgeter

Allocate token budgets