unsloth/studio/backend/utils/helper_precache_settings.py
Wasim Yousef Said 0d6d7dd4b3
Studio: make Helper LLM startup pre-cache opt in (#6113)
* Studio: make Helper LLM startup pre-cache opt in

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-06-09 15:28:34 +02:00

65 lines
2.2 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
"""Persisted opt-in controls for Helper LLM startup pre-cache."""
from __future__ import annotations
import os
from typing import Any
HELPER_PRECACHE_SETTING_KEY = "helper_model_preload_on_startup"
DEFAULT_HELPER_PRECACHE_ENABLED = False
def _coerce_bool(value: Any) -> bool | None:
if isinstance(value, bool):
return value
if isinstance(value, str):
normalized = value.strip().lower()
if normalized in {"1", "true", "yes", "on"}:
return True
if normalized in {"0", "false", "no", "off", ""}:
return False
return None
def helper_model_disabled_by_env() -> bool:
"""Return True when existing broad helper-disable env var is active."""
return os.environ.get("UNSLOTH_HELPER_MODEL_DISABLE", "").strip() in {"1", "true"}
def get_helper_precache_enabled() -> bool:
"""Read the persisted startup pre-cache preference.
Missing or unreadable settings default to False so Studio startup never
performs optional network work unless the user explicitly opted in.
"""
try:
from storage.studio_db import get_app_setting
stored = get_app_setting(HELPER_PRECACHE_SETTING_KEY, None)
except Exception:
stored = None
parsed = _coerce_bool(stored)
return parsed if parsed is not None else DEFAULT_HELPER_PRECACHE_ENABLED
def set_helper_precache_enabled(value: Any) -> bool:
"""Persist whether Studio should pre-cache the Helper LLM at startup."""
parsed = _coerce_bool(value)
if parsed is None:
raise ValueError("Helper LLM startup pre-cache must be true or false.")
from storage.studio_db import upsert_app_settings
upsert_app_settings({HELPER_PRECACHE_SETTING_KEY: parsed})
return parsed
def should_preload_helper_on_startup() -> bool:
"""Gate the startup pre-cache thread.
The persisted setting is opt-in and the existing broad disable env var wins.
Explicit AI Assist calls do not use this gate; they remain user-triggered.
"""
return get_helper_precache_enabled() and not helper_model_disabled_by_env()