AIstudioProxyAPI / config /constants.py
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
3.04 kB
"""
Constants Configuration Module
Contains all fixed constant definitions, such as model names, markers, filenames, etc.
"""
import json
import os
from dotenv import load_dotenv
# Load .env file
load_dotenv()
# --- Model Related Constants ---
MODEL_NAME = os.environ.get('MODEL_NAME', 'AI-Studio_Proxy_API')
CHAT_COMPLETION_ID_PREFIX = os.environ.get('CHAT_COMPLETION_ID_PREFIX', 'chatcmpl-')
DEFAULT_FALLBACK_MODEL_ID = os.environ.get('DEFAULT_FALLBACK_MODEL_ID', "no model list")
# --- Default Parameter Values ---
DEFAULT_TEMPERATURE = float(os.environ.get('DEFAULT_TEMPERATURE', '1.0'))
DEFAULT_MAX_OUTPUT_TOKENS = int(os.environ.get('DEFAULT_MAX_OUTPUT_TOKENS', '65536'))
DEFAULT_TOP_P = float(os.environ.get('DEFAULT_TOP_P', '0.95'))
# --- Default Feature Toggles ---
ENABLE_URL_CONTEXT = os.environ.get('ENABLE_URL_CONTEXT', 'false').lower() in ('true', '1', 'yes')
ENABLE_THINKING_BUDGET = os.environ.get('ENABLE_THINKING_BUDGET', 'false').lower() in ('true', '1', 'yes')
DEFAULT_THINKING_BUDGET = int(os.environ.get('DEFAULT_THINKING_BUDGET', '8192'))
# Separate defaults for Pro (2 levels) and Flash (4 levels)
_raw_level_pro = os.environ.get("DEFAULT_THINKING_LEVEL_PRO", "high").lower()
DEFAULT_THINKING_LEVEL_PRO = (
_raw_level_pro if _raw_level_pro in ("high", "low") else "high"
)
_raw_level_flash = os.environ.get("DEFAULT_THINKING_LEVEL_FLASH", "high").lower()
DEFAULT_THINKING_LEVEL_FLASH = (
_raw_level_flash
if _raw_level_flash in ("high", "medium", "low", "minimal")
else "high"
)
ENABLE_GOOGLE_SEARCH = os.environ.get('ENABLE_GOOGLE_SEARCH', 'false').lower() in ('true', '1', 'yes')
# Default Stop Sequences - Support JSON format configuration
try:
DEFAULT_STOP_SEQUENCES = json.loads(os.environ.get('DEFAULT_STOP_SEQUENCES', '["User:"]'))
except (json.JSONDecodeError, TypeError):
DEFAULT_STOP_SEQUENCES = ["User:"] # Fallback to default value
# --- URL Patterns ---
AI_STUDIO_URL_PATTERN = os.environ.get('AI_STUDIO_URL_PATTERN', 'aistudio.google.com/')
MODELS_ENDPOINT_URL_CONTAINS = os.environ.get('MODELS_ENDPOINT_URL_CONTAINS', "MakerSuiteService/ListModels")
# --- Input Markers ---
USER_INPUT_START_MARKER_SERVER = os.environ.get('USER_INPUT_START_MARKER_SERVER', "__USER_INPUT_START__")
USER_INPUT_END_MARKER_SERVER = os.environ.get('USER_INPUT_END_MARKER_SERVER', "__USER_INPUT_END__")
# --- Filename Constants ---
EXCLUDED_MODELS_FILENAME = os.environ.get('EXCLUDED_MODELS_FILENAME', "excluded_models.txt")
# --- Stream State Configuration ---
STREAM_TIMEOUT_LOG_STATE = {
"consecutive_timeouts": 0,
"last_error_log_time": 0.0, # Use time.monotonic()
"suppress_until_time": 0.0, # Use time.monotonic()
"max_initial_errors": int(os.environ.get("STREAM_MAX_INITIAL_ERRORS", "3")),
"warning_interval_after_suppress": float(
os.environ.get("STREAM_WARNING_INTERVAL_AFTER_SUPPRESS", "60.0")
),
"suppress_duration_after_initial_burst": float(
os.environ.get("STREAM_SUPPRESS_DURATION_AFTER_INITIAL_BURST", "400.0")
),
}