""" Configuration Manager - Obsługa konfiguracji dla Streamlit Używa st.session_state do przechowywania ustawień """ import streamlit as st class ConfigManager: """Zarządza konfiguracją aplikacji w Streamlit""" def __init__(self): # Initialize session state if not exists if 'config' not in st.session_state: st.session_state.config = self._default_config() def _default_config(self): """Domyślna konfiguracja""" return { "api_key": "", "model": "gpt-4o", "temperature": 0.1, "max_tokens": 2000, "top_p": 1.0, "num_responses": 5 } def get(self, key, default=None): """Pobiera wartość z konfiguracji""" return st.session_state.config.get(key, default) def set(self, key, value): """Ustawia wartość w konfiguracji""" st.session_state.config[key] = value def get_api_key(self): """ Pobiera klucz API - priorytet: 1. Streamlit secrets (production) 2. Session state (user input) """ # Try Streamlit secrets first (for Hugging Face deployment) try: if hasattr(st, 'secrets') and 'OPENAI_API_KEY' in st.secrets: return st.secrets['OPENAI_API_KEY'] except: pass # Fallback to session state return st.session_state.config.get("api_key", "") def set_api_key(self, api_key): """Zapisuje klucz API do session state""" st.session_state.config["api_key"] = api_key def get_all_settings(self): """Zwraca wszystkie ustawienia""" return st.session_state.config.copy() def update_settings(self, settings): """Aktualizuje wiele ustawień jednocześnie""" st.session_state.config.update(settings)