class CostTracker:
def __init__(self):
self.total_cost = 0.0
self.total_tokens = 0
self.request_count = 0
def track(self, response):
if response.usage:
self.total_cost += response.usage.total_cost_usd or 0
self.total_tokens += response.usage.total_tokens
self.request_count += 1
def summary(self):
return {
"total_cost_usd": self.total_cost,
"total_tokens": self.total_tokens,
"requests": self.request_count,
"avg_cost_per_request": self.total_cost / self.request_count if self.request_count > 0 else 0
}
# Usage
tracker = CostTracker()
for question in questions:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": question}]
)
tracker.track(response)
print(tracker.summary())
# {'total_cost_usd': 0.0234, 'total_tokens': 1523, 'requests': 10, 'avg_cost_per_request': 0.00234}