mari-chat-3 / async_config_setup.py
sirochild's picture
Upload 57 files
a73fa4e verified
"""
非同期手紙生成システムの設定初期化
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)