| | """Grok 模型配置和枚举定义""" |
| |
|
| | from enum import Enum |
| | from typing import Dict, Any, Tuple |
| |
|
| |
|
| | |
| | _MODEL_CONFIG: Dict[str, Dict[str, Any]] = { |
| | "grok-3-fast": { |
| | "grok_model": ("grok-3", "MODEL_MODE_FAST"), |
| | "rate_limit_model": "grok-3", |
| | "cost": {"type": "low_cost", "multiplier": 1, "description": "计1次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 3 Fast", |
| | "description": "Fast and efficient Grok 3 model", |
| | "raw_model_path": "xai/grok-3", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 8192, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4-fast": { |
| | "grok_model": ("grok-4-mini-thinking-tahoe", "MODEL_MODE_GROK_4_MINI_THINKING"), |
| | "rate_limit_model": "grok-4-mini-thinking-tahoe", |
| | "cost": {"type": "low_cost", "multiplier": 1, "description": "计1次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 4 Fast", |
| | "description": "Fast version of Grok 4 with mini thinking capabilities", |
| | "raw_model_path": "xai/grok-4-mini-thinking-tahoe", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 8192, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4-fast-expert": { |
| | "grok_model": ("grok-4-mini-thinking-tahoe", "MODEL_MODE_EXPERT"), |
| | "rate_limit_model": "grok-4-mini-thinking-tahoe", |
| | "cost": {"type": "high_cost", "multiplier": 4, "description": "计4次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 4 Fast Expert", |
| | "description": "Expert mode of Grok 4 Fast with enhanced reasoning", |
| | "raw_model_path": "xai/grok-4-mini-thinking-tahoe", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 32768, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4-expert": { |
| | "grok_model": ("grok-4", "MODEL_MODE_EXPERT"), |
| | "rate_limit_model": "grok-4", |
| | "cost": {"type": "high_cost", "multiplier": 4, "description": "计4次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 4 Expert", |
| | "description": "Full Grok 4 model with expert mode capabilities", |
| | "raw_model_path": "xai/grok-4", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 32768, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4-heavy": { |
| | "grok_model": ("grok-4-heavy", "MODEL_MODE_HEAVY"), |
| | "rate_limit_model": "grok-4-heavy", |
| | "cost": {"type": "independent", "multiplier": 1, "description": "独立计费,只有Super用户可用"}, |
| | "requires_super": True, |
| | "display_name": "Grok 4 Heavy", |
| | "description": "Most powerful Grok 4 model with heavy computational capabilities. Requires Super Token for access.", |
| | "raw_model_path": "xai/grok-4-heavy", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 65536, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4.1": { |
| | "grok_model": ("grok-4-1-non-thinking-w-tool", "MODEL_MODE_GROK_4_1"), |
| | "rate_limit_model": "grok-4-1-non-thinking-w-tool", |
| | "cost": {"type": "low_cost", "multiplier": 1, "description": "计1次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 4.1", |
| | "description": "Latest Grok 4.1 model with tool capabilities", |
| | "raw_model_path": "xai/grok-4-1-non-thinking-w-tool", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 8192, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-4.1-thinking": { |
| | "grok_model": ("grok-4-1-thinking-1108b", "MODEL_MODE_AUTO"), |
| | "rate_limit_model": "grok-4-1-thinking-1108b", |
| | "cost": {"type": "high_cost", "multiplier": 1, "description": "计1次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok 4.1 Thinking", |
| | "description": "Grok 4.1 model with advanced thinking and tool capabilities", |
| | "raw_model_path": "xai/grok-4-1-thinking-1108b", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 32768, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95 |
| | }, |
| | "grok-imagine-0.9": { |
| | "grok_model": ("grok-3", "MODEL_MODE_FAST"), |
| | "rate_limit_model": "grok-3", |
| | "cost": {"type": "low_cost", "multiplier": 1, "description": "计1次调用"}, |
| | "requires_super": False, |
| | "display_name": "Grok Imagine 0.9", |
| | "description": "Image and video generation model. Supports text-to-image and image-to-video generation.", |
| | "raw_model_path": "xai/grok-imagine-0.9", |
| | "default_temperature": 1.0, |
| | "default_max_output_tokens": 8192, |
| | "supported_max_output_tokens": 131072, |
| | "default_top_p": 0.95, |
| | "is_video_model": True |
| | } |
| | } |
| |
|
| |
|
| | class TokenType(Enum): |
| | """Token类型""" |
| | NORMAL = "ssoNormal" |
| | SUPER = "ssoSuper" |
| |
|
| |
|
| | class Models(Enum): |
| | """支持的模型""" |
| | GROK_3_FAST = "grok-3-fast" |
| | GROK_4_1 = "grok-4.1" |
| | GROK_4_1_THINKING = "grok-4.1-thinking" |
| | GROK_4_FAST = "grok-4-fast" |
| | GROK_4_FAST_EXPERT = "grok-4-fast-expert" |
| | GROK_4_EXPERT = "grok-4-expert" |
| | GROK_4_HEAVY = "grok-4-heavy" |
| | GROK_IMAGINE_0_9 = "grok-imagine-0.9" |
| |
|
| | @classmethod |
| | def get_model_info(cls, model: str) -> Dict[str, Any]: |
| | """获取模型配置""" |
| | return _MODEL_CONFIG.get(model, {}) |
| |
|
| | @classmethod |
| | def is_valid_model(cls, model: str) -> bool: |
| | """检查模型是否有效""" |
| | return model in _MODEL_CONFIG |
| | |
| | @classmethod |
| | def to_grok(cls, model: str) -> Tuple[str, str]: |
| | """转换为Grok内部模型名和模式 |
| | |
| | Returns: |
| | (模型名, 模式类型) 元组 |
| | """ |
| | config = _MODEL_CONFIG.get(model) |
| | return config["grok_model"] if config else (model, "MODEL_MODE_FAST") |
| | |
| | @classmethod |
| | def to_rate_limit(cls, model: str) -> str: |
| | """转换为速率限制模型名""" |
| | config = _MODEL_CONFIG.get(model) |
| | return config["rate_limit_model"] if config else model |
| | |
| | @classmethod |
| | def get_all_model_names(cls) -> list[str]: |
| | """获取所有模型名称""" |
| | return list(_MODEL_CONFIG.keys()) |