| | |
| | MODELS = { |
| | |
| |
|
| | "anthropic/claude-sonnet-4-20250514": { |
| | "aliases": ["claude-sonnet-4"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 3.00, |
| | "output_cost_per_million_tokens": 15.00 |
| | }, |
| | "tier_availability": ["free", "paid"] |
| | }, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | "openrouter/moonshotai/kimi-k2": { |
| | "aliases": ["moonshotai/kimi-k2"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 1.00, |
| | "output_cost_per_million_tokens": 3.00 |
| | }, |
| | "tier_availability": ["free", "paid"] |
| | }, |
| | "xai/grok-4": { |
| | "aliases": ["grok-4"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 5.00, |
| | "output_cost_per_million_tokens": 15.00 |
| | }, |
| | "tier_availability": ["free", "paid"] |
| | }, |
| | |
| | |
| | "openrouter/google/gemini-2.5-pro": { |
| | "aliases": ["google/gemini-2.5-pro"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 1.25, |
| | "output_cost_per_million_tokens": 10.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | "openai/gpt-4o": { |
| | "aliases": ["gpt-4o"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 2.50, |
| | "output_cost_per_million_tokens": 10.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | "openai/gpt-4.1": { |
| | "aliases": ["gpt-4.1"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 15.00, |
| | "output_cost_per_million_tokens": 60.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | "openai/gpt-4.1-mini": { |
| | "aliases": ["gpt-4.1-mini"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 1.50, |
| | "output_cost_per_million_tokens": 6.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | "anthropic/claude-3-7-sonnet-latest": { |
| | "aliases": ["sonnet-3.7"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 3.00, |
| | "output_cost_per_million_tokens": 15.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | "anthropic/claude-3-5-sonnet-latest": { |
| | "aliases": ["sonnet-3.5"], |
| | "pricing": { |
| | "input_cost_per_million_tokens": 3.00, |
| | "output_cost_per_million_tokens": 15.00 |
| | }, |
| | "tier_availability": ["paid"] |
| | }, |
| | } |
| |
|
| | |
| | def _generate_model_structures(): |
| | """Generate all model structures from the master MODELS dictionary.""" |
| | |
| | |
| | free_models = [] |
| | paid_models = [] |
| | |
| | |
| | aliases = {} |
| | |
| | |
| | pricing = {} |
| | |
| | for model_name, config in MODELS.items(): |
| | |
| | if "free" in config["tier_availability"]: |
| | free_models.append(model_name) |
| | if "paid" in config["tier_availability"]: |
| | paid_models.append(model_name) |
| | |
| | |
| | for alias in config["aliases"]: |
| | aliases[alias] = model_name |
| | |
| | |
| | pricing[model_name] = config["pricing"] |
| | |
| | |
| | if model_name.startswith("openrouter/deepseek/"): |
| | legacy_name = model_name.replace("openrouter/", "") |
| | pricing[legacy_name] = config["pricing"] |
| | elif model_name.startswith("openrouter/qwen/"): |
| | legacy_name = model_name.replace("openrouter/", "") |
| | pricing[legacy_name] = config["pricing"] |
| | elif model_name.startswith("openrouter/google/"): |
| | legacy_name = model_name.replace("openrouter/", "") |
| | pricing[legacy_name] = config["pricing"] |
| | elif model_name.startswith("anthropic/"): |
| | |
| | if "claude-sonnet-4-20250514" in model_name: |
| | pricing["anthropic/claude-sonnet-4"] = config["pricing"] |
| | |
| | return free_models, paid_models, aliases, pricing |
| |
|
| | |
| | FREE_TIER_MODELS, PAID_TIER_MODELS, MODEL_NAME_ALIASES, HARDCODED_MODEL_PRICES = _generate_model_structures() |
| |
|
| | MODEL_ACCESS_TIERS = { |
| | "free": FREE_TIER_MODELS, |
| | "tier_2_20": PAID_TIER_MODELS, |
| | "tier_6_50": PAID_TIER_MODELS, |
| | "tier_12_100": PAID_TIER_MODELS, |
| | "tier_25_200": PAID_TIER_MODELS, |
| | "tier_50_400": PAID_TIER_MODELS, |
| | "tier_125_800": PAID_TIER_MODELS, |
| | "tier_200_1000": PAID_TIER_MODELS, |
| | } |
| |
|