python --version
pip install openai tiktoken
export OPENAI_API_KEY=sk-...
Use tiktoken to count tokens before sending requests, track actual usage from API responses, and calculate cost per request.
1 import tiktoken 2 from openai import OpenAI 3 4 client = OpenAI() 5 enc = tiktoken.get_encoding("cl100k_base") 6 7 # Pricing (per 1M tokens as of 2025 — check current prices) 8 PRICING = { 9 "gpt-4o": {"input": 2.50, "output": 10.00}, 10 "gpt-4o-mini": {"input": 0.15, "output": 0.60}, 11 } 12 13 session_cost = 0.0 14 session_tokens = {"input": 0, "output": 0} 15 16 def count_tokens(text: str) -> int: 17 return len(enc.encode(text)) 18 19 def tracked_chat(messages: list[dict], model: str = "gpt-4o-mini") -> str: 20 global session_cost, session_tokens 21 22 # Estimate before call 23 estimated = sum(count_tokens(m["content"]) for m in messages) 24 print(f"Estimated input tokens: {estimated}") 25 26 resp = client.chat.completions.create(model=model, messages=messages) 27 usage = resp.usage 28 29 # Actual usage 30 input_tokens = usage.prompt_tokens 31 output_tokens = usage.completion_tokens 32 price = PRICING.get(model, {"input": 0, "output": 0}) 33 cost = (input_tokens * price["input"] + output_tokens * price["output"]) / 1_000_000 34 35 session_tokens["input"] += input_tokens 36 session_tokens["output"] += output_tokens 37 session_cost += cost 38 39 print(f"Actual: {input_tokens} in / {output_tokens} out | Cost: ${cost:.6f}") 40 return resp.choices[0].message.content or "" 41 42 tracked_chat([{"role": "user", "content": "What is a transformer?"}]) 43 print(f"\nSession total: {session_tokens} | Total cost: ${session_cost:.6f}") 44
Sign in to share your feedback and join the discussion.