patrickcmd's picture
Deploy: sync from local
ad6dc26 verified
"""gpt-4o-mini cost calculator.
Pricing as of 2026-04. Verify against https://openai.com/api/pricing
before recording Video 3 — these constants are the only thing the VP
will see translated into dollars.
"""
from pydantic import BaseModel, ConfigDict
INPUT_COST_PER_M_USD = 0.15
OUTPUT_COST_PER_M_USD = 0.60
class CostBreakdown(BaseModel):
model_config = ConfigDict(frozen=True)
input_tokens: int
output_tokens: int
requests: int
usd: float
def format(self) -> str:
return (
f"${self.usd:.5f} "
f"({self.input_tokens} in + {self.output_tokens} out, "
f"{self.requests} req)"
)
def cost_from_usage(usage) -> CostBreakdown:
"""Convert an openai-agents Usage object to a dollar breakdown."""
usd = (
usage.input_tokens * INPUT_COST_PER_M_USD
+ usage.output_tokens * OUTPUT_COST_PER_M_USD
) / 1_000_000
return CostBreakdown(
input_tokens=usage.input_tokens,
output_tokens=usage.output_tokens,
requests=usage.requests,
usd=usd,
)