| import os | |
| def to_bool(value: str, default: bool = False) -> bool: | |
| if value is None: | |
| return default | |
| return str(value).strip().lower() in {"true", "1", "yes", "on"} | |
| def to_int(value: str, default: int) -> int: | |
| try: | |
| return int(str(value).strip()) | |
| except Exception: | |
| return default | |
| def to_float(value: str, default: float) -> float: | |
| try: | |
| return float(str(value).strip()) | |
| except Exception: | |
| return default | |
| class Settings: | |
| APP_NAME = "Chat7 CodeX Backend" | |
| APP_VERSION = "1.0.0" | |
| PRIMARY_CODE_MODEL = os.getenv("PRIMARY_CODE_MODEL", "Qwen/Qwen2.5-7B-Instruct") | |
| FALLBACK_CODE_MODEL = os.getenv("FALLBACK_CODE_MODEL", "Qwen/Qwen2.5-3B-Instruct") | |
| GITHUB_TOKEN = os.getenv("GITHUB_TOKEN", "") | |
| STACKOVERFLOW_KEY = os.getenv("STACKOVERFLOW_KEY", "") | |
| HUGGINGFACE_API_TOKEN = os.getenv("HUGGINGFACE_API_TOKEN", "") | |
| MODEL_TIMEOUT_SECONDS = to_int(os.getenv("MODEL_TIMEOUT_SECONDS", "90"), 90) | |
| SEARCH_TIMEOUT_SECONDS = to_int(os.getenv("SEARCH_TIMEOUT_SECONDS", "20"), 20) | |
| MAX_HISTORY_ITEMS = to_int(os.getenv("MAX_HISTORY_ITEMS", "5"), 5) | |
| MAX_CODE_CHARS = to_int(os.getenv("MAX_CODE_CHARS", "25000"), 25000) | |
| MAX_ERROR_CHARS = to_int(os.getenv("MAX_ERROR_CHARS", "8000"), 8000) | |
| MAX_MESSAGE_CHARS = to_int(os.getenv("MAX_MESSAGE_CHARS", "6000"), 6000) | |
| MAX_PREVIOUS_CONTEXT_CHARS = to_int(os.getenv("MAX_PREVIOUS_CONTEXT_CHARS", "6000"), 6000) | |
| MAX_STACK_RESULTS = to_int(os.getenv("MAX_STACK_RESULTS", "5"), 5) | |
| MAX_GITHUB_RESULTS = to_int(os.getenv("MAX_GITHUB_RESULTS", "5"), 5) | |
| MAX_RETRIEVED_ITEMS = to_int(os.getenv("MAX_RETRIEVED_ITEMS", "8"), 8) | |
| ENABLE_STACK_SEARCH = to_bool(os.getenv("ENABLE_STACK_SEARCH", "true"), True) | |
| ENABLE_GITHUB_SEARCH = to_bool(os.getenv("ENABLE_GITHUB_SEARCH", "true"), True) | |
| ENABLE_RETRIEVAL_FOR_FIX = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_FIX", "true"), True) | |
| ENABLE_RETRIEVAL_FOR_DEBUG = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_DEBUG", "true"), True) | |
| ENABLE_RETRIEVAL_FOR_GENERATE = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_GENERATE", "false"), False) | |
| ENABLE_RETRIEVAL_FOR_EXPLAIN = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_EXPLAIN", "false"), False) | |
| ENABLE_RETRIEVAL_FOR_REVIEW = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_REVIEW", "false"), False) | |
| ENABLE_RETRIEVAL_FOR_REFACTOR = to_bool(os.getenv("ENABLE_RETRIEVAL_FOR_REFACTOR", "false"), False) | |
| DEFAULT_TEMPERATURE = to_float(os.getenv("DEFAULT_TEMPERATURE", "0.2"), 0.2) | |
| DEFAULT_TOP_P = to_float(os.getenv("DEFAULT_TOP_P", "0.9"), 0.9) | |
| MAX_OUTPUT_TOKENS = to_int(os.getenv("MAX_OUTPUT_TOKENS", "1200"), 1200) | |
| PRESERVE_SYMBOL_NAMES_BY_DEFAULT = to_bool( | |
| os.getenv("PRESERVE_SYMBOL_NAMES_BY_DEFAULT", "true"), | |
| True, | |
| ) | |
| ENABLE_SCOPE_GUARD = to_bool(os.getenv("ENABLE_SCOPE_GUARD", "true"), True) | |
| ALLOWED_TASK_TYPES = { | |
| "generate", | |
| "fix", | |
| "explain", | |
| "refactor", | |
| "review", | |
| "unknown", | |
| } | |
| settings = Settings() |