Token Budget Control
LLM API calls cost money. Agents must track and control token usage.
Task
Build TokenBudgetController that:
- Tracks token usage across labeled operations.
- Returns
Falsefromconsume()if budget would be exceeded. - Provides a usage report broken down by label.
- Can be reset for new tasks.
Constraints
- Never go over budget (reject requests that would exceed it).
- Track per-label totals in
report(). - Default label:
'unlabeled'.
Examples
Example 1:
Input:
ctrl = TokenBudgetController(100)
ctrl.consume(40, 'prompt')
ctrl.consume(40, 'response')
ctrl.consume(30, 'tool')Output:
False (third consume rejected)Explanation: 40+40=80 used; 30 more would exceed 100.
Starter Code
from typing import Optional
class TokenBudgetController:
def __init__(self, max_tokens: int):
self.max_tokens = max_tokens
self.used_tokens = 0
self.history = []
def consume(self, tokens: int, label: str = '') -> bool:
# TODO: Deduct tokens, return False if budget exceeded
pass
def remaining(self) -> int:
pass
def reset(self) -> None:
pass
def report(self) -> dict:
# TODO: Return usage breakdown by label
pass
Python3
ReadyLines: 1Characters: 0
Ready