Files
Aether/src/core/api_format/enums.py

71 lines
1.8 KiB
Python
Raw Normal View History

"""API format enums.
新模式下系统使用结构化的 (ApiFamily, EndpointKind) / `family:kind` signature 作为唯一标识
"""
from enum import Enum
class ApiFamily(str, Enum):
"""
协议族兼容族- 决定数据格式与认证方式的基础
注意不叫 Provider 避免与 ORM Provider 模型撞名
"""
OPENAI = "openai" # openai-compatible含 deepseek, grok, qwen 等)
CLAUDE = "claude" # claude-compatible
GEMINI = "gemini" # gemini-compatible
@property
def priority(self) -> int:
"""基础优先级(数字越小越优先)"""
return {
ApiFamily.OPENAI: 1,
ApiFamily.CLAUDE: 2,
ApiFamily.GEMINI: 3,
}.get(self, 99)
class EndpointKind(str, Enum):
"""
端点变体 - 决定 API 路径/认证变体/数据格式变体等
注意不复用现有 EndpointTypeEndpointType 用于请求上下文检测/功能分类
"""
CHAT = "chat"
CLI = "cli"
VIDEO = "video"
IMAGE = "image"
class AuthMethod(str, Enum):
"""认证方式 - 决定如何构造认证 Header"""
BEARER = "bearer" # Authorization: Bearer {token}
API_KEY = "api_key" # x-api-key: {key}
GOOG_API_KEY = "goog_key" # x-goog-api-key: {key}
OAUTH2 = "oauth2" # Google OAuth2 / Service Account
QUERY_KEY = "query_key" # ?key={key} (Gemini 备用)
class EndpointType(str, Enum):
"""端点类型 - 决定 API 功能类别"""
CHAT = "chat" # Chat/Completion API
VIDEO = "video" # Video Generation API
FILES = "files" # Files API
IMAGE = "image" # Image Generation API
AUDIO = "audio" # Audio API
EMBEDDING = "embedding" # Embedding API
MODELS = "models" # Models API
__all__ = [
"ApiFamily",
"EndpointKind",
"AuthMethod",
"EndpointType",
]