Spaces:
Runtime error
Runtime error
File size: 4,489 Bytes
a73fa4e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
"""
非同期手紙生成システムの設定初期化
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) |