token_calculator_tool_robust.md · 4.4 KB
Token Calculator Tool (Robust) Documentation
Overview
The TokenCalculatorToolRobust is an enhanced token calculator with improved robustness, error handling, and accuracy. It provides accurate token counting using tiktoken, comprehensive validation, thread-safe operations, and currency precision.
File: tools/token_calculator_tool_robust.py
Class: TokenCalculatorToolRobust
Version: 1.0.0
Status: ✅ Active
Architecture
Design Principles
Accuracy: Uses tiktoken for accurate token counting
Robustness: Comprehensive error handling and validation
Thread Safety: Thread-safe operations with file locking
Currency Precision: Uses Decimal for precise calculations
Caching: Token counting cache for performance
Rate Limiting: Prevents API abuse
Core Components
class TokenCalculatorToolRobust(BaseTool):
- memory_agent: MemoryAgent - For workspace management
- pricing_data: Dict - LLM pricing configuration
- _tokenizers: Dict - Tokenizer instances
- _cache: Dict - Token counting cache
- _lock: RLock - Thread safety lock
Key Features
1. Accurate Token Counting
Uses tiktoken library for:
Accurate token counting per model
Model-specific tokenizers
Fast tokenization
Reliable counts
2. Comprehensive Validation
Validates:
Currency values (Decimal precision)
Percentage values (0-1 range)
Token counts (non-negative, reasonable limits)
Model names (format validation)
3. Thread Safety
Thread-safe operations:
RLock for file operations
Safe concurrent access
Prevents race conditions
4. Currency Precision
Uses Decimal for:
Precise cost calculations
No floating-point errors
Accurate budget tracking
5. Caching
Token counting cache:
Reduces redundant calculations
Configurable TTL (default: 5 minutes)
Performance optimization
6. Rate Limiting
Prevents API abuse:
Max calls per minute (default: 60)
Automatic throttling
Request tracking
Usage
Calculate Token Cost
from tools.token_calculator_tool_robust import TokenCalculatorToolRobust
from agents.memory_agent import MemoryAgent
tool = TokenCalculatorToolRobust(memory_agent=memory_agent)
Calculate cost
success, result = await tool.execute(
operation="calculate_cost",
model="gpt-4",
prompt_tokens=1000,
completion_tokens=500
)
Track Usage
# Track token usage
success, result = await tool.execute(
operation="track_usage",
model="gpt-4",
prompt_tokens=1000,
completion_tokens=500
)
Configuration
Pricing Config
Located at:
config/llm_pricing_config.json
Usage Log
Stored at:
data/monitoring/token_usage.json
Cache
Stored at:
data/monitoring/token_cache.json
Limitations
Current Limitations
tiktoken Dependency: Requires tiktoken for accuracy
Limited Models: May not support all models
Basic Caching: Simple cache implementation
No Historical Analysis: No trend analysis
Single System: Single system only
Recommended Improvements
More Models: Support more LLM models
Advanced Caching: Better cache strategies
Historical Analysis: Trend tracking
Multi-System: Support distributed systems
Real-Time Alerts: Budget alerts
Visualization: Charts and graphs
API Integration: REST API access
Integration
With Memory Agent
Uses memory agent for:
Workspace management
Usage logging
Data persistence
Examples
Budget Tracking
# Check budget status
success, status = await tool.execute(
operation="check_budget",
period="daily"
)
Technical Details
Dependencies
tiktoken: Accurate token counting (optional but recommended)
decimal.Decimal: Currency precision
threading.RLock: Thread safety
agents.memory_agent.MemoryAgent: Workspace management
Tokenizer Initialization
Initializes tokenizers for:
OpenAI models (gpt-3.5, gpt-4, etc.)
Anthropic models (claude, etc.)
Other supported models
Future Enhancements
More Models: Expand model support
Advanced Analytics: Trend analysis
Real-Time Alerts: Budget alerts
Visualization: Charts and dashboards
API Integration: REST API
Multi-System: Distributed tracking
Predictive Budgeting: ML-based predictions