|
|
|
|
|
|
|
|
|
|
|
import os |
|
|
from typing import Dict, List, Optional |
|
|
from pydantic_settings import BaseSettings |
|
|
|
|
|
|
|
|
class Settings(BaseSettings): |
|
|
"""Application settings""" |
|
|
|
|
|
|
|
|
API_ENDPOINT: str = "https://chat.z.ai/api/chat/completions" |
|
|
|
|
|
|
|
|
AUTH_TOKEN: Optional[str] = os.getenv("AUTH_TOKEN") |
|
|
|
|
|
|
|
|
TOKEN_FAILURE_THRESHOLD: int = int(os.getenv("TOKEN_FAILURE_THRESHOLD", "3")) |
|
|
TOKEN_RECOVERY_TIMEOUT: int = int(os.getenv("TOKEN_RECOVERY_TIMEOUT", "1800")) |
|
|
|
|
|
|
|
|
GLM45_MODEL: str = os.getenv("GLM45_MODEL", "GLM-4.5") |
|
|
GLM45_THINKING_MODEL: str = os.getenv("GLM45_THINKING_MODEL", "GLM-4.5-Thinking") |
|
|
GLM45_SEARCH_MODEL: str = os.getenv("GLM45_SEARCH_MODEL", "GLM-4.5-Search") |
|
|
GLM45_AIR_MODEL: str = os.getenv("GLM45_AIR_MODEL", "GLM-4.5-Air") |
|
|
GLM45V_MODEL: str = os.getenv("GLM45V_MODEL", "GLM-4.5V") |
|
|
GLM46_MODEL: str = os.getenv("GLM46_MODEL", "GLM-4.6") |
|
|
GLM46_THINKING_MODEL: str = os.getenv("GLM46_THINKING_MODEL", "GLM-4.6-Thinking") |
|
|
GLM46_SEARCH_MODEL: str = os.getenv("GLM46_SEARCH_MODEL", "GLM-4.6-Search") |
|
|
GLM46_ADVANCED_SEARCH_MODEL: str = os.getenv("GLM46_ADVANCED_SEARCH_MODEL", "GLM-4.6-advanced-search") |
|
|
|
|
|
|
|
|
@property |
|
|
def provider_model_mapping(self) -> Dict[str, str]: |
|
|
"""模型到提供商的映射""" |
|
|
return { |
|
|
|
|
|
"GLM-4.5": "zai", |
|
|
"GLM-4.5-Thinking": "zai", |
|
|
"GLM-4.5-Search": "zai", |
|
|
"GLM-4.5-Air": "zai", |
|
|
"GLM-4.5V": "zai", |
|
|
"GLM-4.6": "zai", |
|
|
"GLM-4.6-Thinking": "zai", |
|
|
"GLM-4.6-Search": "zai", |
|
|
"GLM-4.6-advanced-search": "zai", |
|
|
|
|
|
"MBZUAI-IFM/K2-Think": "k2think", |
|
|
|
|
|
"LongCat-Flash": "longcat", |
|
|
"LongCat": "longcat", |
|
|
"LongCat-Search": "longcat", |
|
|
} |
|
|
|
|
|
|
|
|
LISTEN_PORT: int = int(os.getenv("LISTEN_PORT", "7860")) |
|
|
DEBUG_LOGGING: bool = os.getenv("DEBUG_LOGGING", "true").lower() == "true" |
|
|
SERVICE_NAME: str = os.getenv("SERVICE_NAME", "z-ai2api-server") |
|
|
ROOT_PATH: str = os.getenv("ROOT_PATH", "") |
|
|
|
|
|
ANONYMOUS_MODE: bool = os.getenv("ANONYMOUS_MODE", "true").lower() == "true" |
|
|
TOOL_SUPPORT: bool = os.getenv("TOOL_SUPPORT", "true").lower() == "true" |
|
|
SCAN_LIMIT: int = int(os.getenv("SCAN_LIMIT", "200000")) |
|
|
SKIP_AUTH_TOKEN: bool = os.getenv("SKIP_AUTH_TOKEN", "false").lower() == "true" |
|
|
|
|
|
|
|
|
LONGCAT_TOKEN: Optional[str] = os.getenv("LONGCAT_TOKEN") |
|
|
|
|
|
|
|
|
DEFAULT_PROVIDER: str = os.getenv("DEFAULT_PROVIDER", "zai") |
|
|
|
|
|
|
|
|
HTTP_PROXY: Optional[str] = os.getenv("HTTP_PROXY") |
|
|
HTTPS_PROXY: Optional[str] = os.getenv("HTTPS_PROXY") |
|
|
SOCKS5_PROXY: Optional[str] = os.getenv("SOCKS5_PROXY") |
|
|
|
|
|
|
|
|
ADMIN_PASSWORD: str = os.getenv("ADMIN_PASSWORD", "admin123") |
|
|
SESSION_SECRET_KEY: str = os.getenv("SESSION_SECRET_KEY", "your-secret-key-change-in-production") |
|
|
|
|
|
class Config: |
|
|
env_file = ".env" |
|
|
extra = "ignore" |
|
|
|
|
|
|
|
|
settings = Settings() |
|
|
|