Spaces:
Runtime error
Runtime error
| """ | |
| 非同期手紙生成システムの設定初期化 | |
| Async Letter Generation System Configuration Setup | |
| """ | |
| import os | |
| import sys | |
| from pathlib import Path | |
| from letter_config import Config | |
| from letter_logger import get_app_logger | |
| logger = get_app_logger() | |
| def initialize_config() -> bool: | |
| """ | |
| 設定を初期化し、必要なディレクトリを作成する | |
| Returns: | |
| 初期化が成功したかどうか | |
| """ | |
| try: | |
| # 設定の妥当性をチェック | |
| if not Config.validate_config(): | |
| logger.error("設定の検証に失敗しました") | |
| return False | |
| # 必要なディレクトリを作成 | |
| storage_path = Path(Config.STORAGE_PATH) | |
| storage_path.parent.mkdir(parents=True, exist_ok=True) | |
| backup_path = Path(Config.BACKUP_PATH) | |
| backup_path.mkdir(parents=True, exist_ok=True) | |
| # ログディレクトリを作成(本番環境用) | |
| if not Config.DEBUG_MODE: | |
| log_dir = Path("/tmp") | |
| log_dir.mkdir(parents=True, exist_ok=True) | |
| logger.info("設定初期化が完了しました") | |
| logger.info(f"ストレージパス: {Config.STORAGE_PATH}") | |
| logger.info(f"バックアップパス: {Config.BACKUP_PATH}") | |
| logger.info(f"デバッグモード: {Config.DEBUG_MODE}") | |
| logger.info(f"バッチ処理時刻: {Config.BATCH_SCHEDULE_HOURS}") | |
| return True | |
| except Exception as e: | |
| logger.error(f"設定初期化エラー: {e}") | |
| return False | |
| def check_api_keys() -> bool: | |
| """ | |
| API キーの存在をチェックする | |
| Returns: | |
| API キーが設定されているかどうか | |
| """ | |
| try: | |
| missing_keys = [] | |
| if not Config.GROQ_API_KEY: | |
| missing_keys.append("GROQ_API_KEY") | |
| if not Config.GEMINI_API_KEY: | |
| missing_keys.append("GEMINI_API_KEY") | |
| if missing_keys: | |
| logger.error(f"必要なAPI キーが設定されていません: {', '.join(missing_keys)}") | |
| return False | |
| logger.info("API キーの確認が完了しました") | |
| return True | |
| except Exception as e: | |
| logger.error(f"API キー確認エラー: {e}") | |
| return False | |
| def setup_environment() -> bool: | |
| """ | |
| 環境をセットアップする | |
| Returns: | |
| セットアップが成功したかどうか | |
| """ | |
| try: | |
| # 設定を初期化 | |
| if not initialize_config(): | |
| return False | |
| # API キーをチェック | |
| if not check_api_keys(): | |
| return False | |
| # Hugging Face Spaces 固有の設定 | |
| if os.getenv("SPACE_ID"): | |
| logger.info(f"Hugging Face Spaces環境で実行中: {os.getenv('SPACE_ID')}") | |
| # Spaces用の追加設定があればここに記述 | |
| logger.info("環境セットアップが完了しました") | |
| return True | |
| except Exception as e: | |
| logger.error(f"環境セットアップエラー: {e}") | |
| return False | |
| def get_system_info() -> dict: | |
| """ | |
| システム情報を取得する | |
| Returns: | |
| システム情報の辞書 | |
| """ | |
| return { | |
| "python_version": sys.version, | |
| "storage_path": Config.STORAGE_PATH, | |
| "backup_path": Config.BACKUP_PATH, | |
| "debug_mode": Config.DEBUG_MODE, | |
| "batch_hours": Config.BATCH_SCHEDULE_HOURS, | |
| "max_daily_requests": Config.MAX_DAILY_REQUESTS, | |
| "generation_timeout": Config.GENERATION_TIMEOUT, | |
| "max_concurrent_generations": Config.MAX_CONCURRENT_GENERATIONS, | |
| "groq_model": Config.GROQ_MODEL, | |
| "Together_model": Config.TOGETHER_API_MODEL, | |
| "available_themes": Config.AVAILABLE_THEMES, | |
| "space_id": os.getenv("SPACE_ID", "local"), | |
| "streamlit_port": Config.STREAMLIT_PORT | |
| } | |
| if __name__ == "__main__": | |
| # スクリプトとして実行された場合の設定確認 | |
| print("非同期手紙生成システム設定確認") | |
| print("=" * 50) | |
| if setup_environment(): | |
| print("✅ 環境セットアップ成功") | |
| system_info = get_system_info() | |
| for key, value in system_info.items(): | |
| print(f"{key}: {value}") | |
| else: | |
| print("❌ 環境セットアップ失敗") | |
| sys.exit(1) |