Prompt_Tester / config.py
Marek4321's picture
Upload 6 files
3cd105e verified
"""
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)