From d4fdcbb54c1837d5031a068d89a838af2a7d3474 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 8 Oct 2025 08:34:58 +0800 Subject: [PATCH] fix Streamlit session state modification by using rerun instead of direct update --- app/ui/views/settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/ui/views/settings.py b/app/ui/views/settings.py index 0d2c738..fcacad3 100644 --- a/app/ui/views/settings.py +++ b/app/ui/views/settings.py @@ -269,7 +269,10 @@ def render_llm_settings() -> None: cfg.sync_runtime_llm() save_config() st.success("Provider 已保存。") - st.session_state[title_key] = provider_cfg.title or "" + # Avoid modifying st.session_state after the widget with the same key + # has been created (Streamlit raises an exception). Rerun so the + # page is re-executed and widgets are recreated with updated values. + st.rerun() provider_in_use = (cfg.llm.primary.provider == selected_provider) or any( ep.provider == selected_provider for ep in cfg.llm.ensemble