Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 135 additions & 3 deletions src/analyzer/cost.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,18 @@ def _load_pricing() -> dict:


def _fetch_and_cache() -> dict:
req = urllib.request.Request(LITELLM_URL, headers={"User-Agent": "token-tracker/0.1"})
with urllib.request.urlopen(req, timeout=10) as resp:
data = json.loads(resp.read().decode())
import ssl
ctx = ssl.create_default_context()
try:
req = urllib.request.Request(LITELLM_URL, headers={"User-Agent": "token-tracker/0.1"})
with urllib.request.urlopen(req, timeout=10, context=ctx) as resp:
data = json.loads(resp.read().decode())
except ssl.SSLCertVerificationError:
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
req = urllib.request.Request(LITELLM_URL, headers={"User-Agent": "token-tracker/0.1"})
with urllib.request.urlopen(req, timeout=10, context=ctx) as resp:
data = json.loads(resp.read().decode())

try:
with open(CACHE_PATH, "w") as f:
Expand All @@ -88,6 +97,7 @@ def _fetch_and_cache() -> dict:

def _fallback_pricing() -> dict:
return {
# --- Anthropic Claude ---
"claude-opus-4-6": {
"input_cost_per_token": 15e-6,
"output_cost_per_token": 75e-6,
Expand All @@ -112,4 +122,126 @@ def _fallback_pricing() -> dict:
"cache_creation_input_token_cost": 1e-6,
"cache_read_input_token_cost": 0.08e-6,
},
# --- OpenAI GPT-5 ---
"gpt-5": {
"input_cost_per_token": 1.25e-6,
"output_cost_per_token": 10e-6,
},
"gpt-5.2-codex": {
"input_cost_per_token": 1.75e-6,
"output_cost_per_token": 14e-6,
},
"gpt-5.3-codex": {
"input_cost_per_token": 1.75e-6,
"output_cost_per_token": 14e-6,
},
"gpt-5.3-codex-spark": {
"input_cost_per_token": 1.75e-6,
"output_cost_per_token": 14e-6,
},
"gpt-5.4": {
"input_cost_per_token": 2.5e-6,
"output_cost_per_token": 15e-6,
},
"gpt-5.4-mini": {
"input_cost_per_token": 0.75e-6,
"output_cost_per_token": 4.5e-6,
},
"gpt-5.5": {
"input_cost_per_token": 5e-6,
"output_cost_per_token": 30e-6,
},
# --- 阿里 Qwen ---
"qwen/qwen3.6-plus": {
"input_cost_per_token": 0.4e-6,
"output_cost_per_token": 1.2e-6,
},
"qwen-max": {
"input_cost_per_token": 1.6e-6,
"output_cost_per_token": 6.4e-6,
},
"qwen-plus": {
"input_cost_per_token": 0.4e-6,
"output_cost_per_token": 1.2e-6,
},
"qwen-turbo": {
"input_cost_per_token": 0.05e-6,
"output_cost_per_token": 0.2e-6,
},
# --- DeepSeek ---
"deepseek-v4-flash": {
"input_cost_per_token": 0.14e-6,
"output_cost_per_token": 0.28e-6,
"cache_read_input_token_cost": 0.0028e-6,
},
"deepseek-v4-pro": {
"input_cost_per_token": 1.74e-6,
"output_cost_per_token": 3.48e-6,
"cache_read_input_token_cost": 0.0145e-6,
},
"deepseek-chat": {
"input_cost_per_token": 0.14e-6,
"output_cost_per_token": 0.28e-6,
},
"deepseek-reasoner": {
"input_cost_per_token": 0.14e-6,
"output_cost_per_token": 0.28e-6,
},
# --- Kimi / Moonshot ---
"kimi-k2": {
"input_cost_per_token": 0.55e-6,
"output_cost_per_token": 2.20e-6,
},
"kimi-k2-thinking": {
"input_cost_per_token": 0.55e-6,
"output_cost_per_token": 2.20e-6,
},
"kimi-k2-turbo": {
"input_cost_per_token": 1.10e-6,
"output_cost_per_token": 8.00e-6,
},
"kimi-k2.5": {
"input_cost_per_token": 0.60e-6,
"output_cost_per_token": 3.00e-6,
},
"moonshot-v1": {
"input_cost_per_token": 0.55e-6,
"output_cost_per_token": 2.20e-6,
},
# --- 智谱 GLM ---
"glm-5": {
"input_cost_per_token": 0.95e-6,
"output_cost_per_token": 3.15e-6,
},
"glm-4.7": {
"input_cost_per_token": 0.60e-6,
"output_cost_per_token": 2.20e-6,
},
"glm-4.6": {
"input_cost_per_token": 0.60e-6,
"output_cost_per_token": 2.20e-6,
},
"glm-4-flash": {
"input_cost_per_token": 0.05e-6,
"output_cost_per_token": 0.05e-6,
},
"glm-4": {
"input_cost_per_token": 0.60e-6,
"output_cost_per_token": 2.20e-6,
},
# --- 小米 MiMo ---
"mimo-v2-flash": {
"input_cost_per_token": 0.10e-6,
"output_cost_per_token": 0.30e-6,
},
"mimo-v2.5-pro": {
"input_cost_per_token": 1.0e-6,
"output_cost_per_token": 3.0e-6,
"cache_read_input_token_cost": 0.2e-6,
},
"mimo-v2.5-pro[1m]": {
"input_cost_per_token": 2.0e-6,
"output_cost_per_token": 6.0e-6,
"cache_read_input_token_cost": 0.4e-6,
},
}