diff --git a/.gitignore b/.gitignore index d5d3336..949d634 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ env/ *~ .cursorrules .cursorignore +.kiro/ # OS .DS_Store diff --git a/pixelle_video/llm_presets.py b/pixelle_video/llm_presets.py index b3e2f0d..685143a 100644 --- a/pixelle_video/llm_presets.py +++ b/pixelle_video/llm_presets.py @@ -49,6 +49,7 @@ LLM_PRESETS: List[Dict[str, Any]] = [ "base_url": "http://localhost:11434/v1", "model": "llama3.2", "api_key_url": "https://ollama.com/download", + "default_api_key": "ollama", # Required by OpenAI SDK but ignored by Ollama }, { "name": "Moonshot", diff --git a/pixelle_video/services/llm_service.py b/pixelle_video/services/llm_service.py index 30cd31c..2af6e18 100644 --- a/pixelle_video/services/llm_service.py +++ b/pixelle_video/services/llm_service.py @@ -60,14 +60,15 @@ class LLMService: Initialize LLM service Args: - config: Full application config dict + config: Full application config dict (kept for backward compatibility) """ - self.config = config.get("llm", {}) + # Note: We no longer cache config here to support hot reload + # Config is read dynamically from config_manager in _get_config_value() self._client: Optional[AsyncOpenAI] = None def _get_config_value(self, key: str, default=None): """ - Get config value from config file + Get config value dynamically from config_manager (supports hot reload) Args: key: Config key name @@ -76,7 +77,8 @@ class LLMService: Returns: Config value """ - return self.config.get(key, default) + from pixelle_video.config import config_manager + return getattr(config_manager.config.llm, key, default) def _create_client( self, diff --git a/web/components/settings.py b/web/components/settings.py index bd0b012..b4df0f7 100644 --- a/web/components/settings.py +++ b/web/components/settings.py @@ -80,8 +80,8 @@ def render_advanced_settings(): # Same preset as saved config: keep API key default_api_key = current_llm["api_key"] else: - # Different preset: clear API key - default_api_key = "" + # Different preset: use default_api_key if provided (e.g., Ollama), otherwise clear + default_api_key = preset_config.get("default_api_key", "") default_base_url = preset_config.get("base_url", "") default_model = preset_config.get("model", "")