|
|
"""Configuration management for MythForge AI""" |
|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv(override=True) |
|
|
|
|
|
class Config: |
|
|
"""Application configuration""" |
|
|
|
|
|
|
|
|
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") |
|
|
OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini") |
|
|
|
|
|
|
|
|
HUGGINGFACE_TOKEN = os.getenv("HUGGINGFACE_TOKEN") |
|
|
|
|
|
|
|
|
ELEVENLABS_API_KEY = os.getenv("ELEVENLABS_API_KEY") |
|
|
|
|
|
|
|
|
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") |
|
|
|
|
|
|
|
|
MODAL_TOKEN = os.getenv("MODAL_TOKEN") |
|
|
SAMBANOVA_API_KEY = os.getenv("SAMBANOVA_API_KEY") |
|
|
NEBIUS_API_KEY = os.getenv("NEBIUS_API_KEY") |
|
|
BLAXEL_API_KEY = os.getenv("BLAXEL_API_KEY") |
|
|
|
|
|
|
|
|
ENABLE_COMIC_MODE = os.getenv("ENABLE_COMIC_MODE", "false").lower() == "true" |
|
|
ENABLE_BLAXEL = os.getenv("ENABLE_BLAXEL", "false").lower() == "true" |
|
|
ENABLE_MODAL = os.getenv("ENABLE_MODAL", "false").lower() == "true" |
|
|
ENABLE_SAMBANOVA = os.getenv("ENABLE_SAMBANOVA", "false").lower() == "true" |
|
|
|
|
|
|
|
|
ENABLE_MCP = os.getenv("ENABLE_MCP", "false").lower() == "true" |
|
|
|
|
|
|
|
|
|
|
|
ENABLE_LLAMAINDEX = os.getenv("ENABLE_LLAMAINDEX", "true").lower() == "true" |
|
|
ENABLE_GEMINI = os.getenv("ENABLE_GEMINI", "false").lower() == "true" |
|
|
ENABLE_OPENAI_FALLBACK = os.getenv("ENABLE_OPENAI_FALLBACK", "true").lower() == "true" |
|
|
ENABLE_BLAXEL_WORKFLOW = os.getenv("ENABLE_BLAXEL_WORKFLOW", "false").lower() == "true" |
|
|
|
|
|
|
|
|
USE_OPENAI_PRIMARY = os.getenv("USE_OPENAI_PRIMARY", "true").lower() == "true" |
|
|
|
|
|
|
|
|
ENABLE_NANO_BANANA = os.getenv("ENABLE_NANO_BANANA", "false").lower() == "true" |
|
|
NANO_BANANA_MODEL = os.getenv("NANO_BANANA_MODEL", "gemini-2.5-flash-image") |
|
|
NANO_BANANA_MAX_REFERENCES = int(os.getenv("NANO_BANANA_MAX_REFERENCES", "14")) |
|
|
ENABLE_CHARACTER_LIBRARY = os.getenv("ENABLE_CHARACTER_LIBRARY", "false").lower() == "true" |
|
|
|
|
|
|
|
|
NANO_BANANA_AUTO_FALLBACK = os.getenv("NANO_BANANA_AUTO_FALLBACK", "true").lower() == "true" |
|
|
NANO_BANANA_FALLBACK_ON_QUOTA = os.getenv("NANO_BANANA_FALLBACK_ON_QUOTA", "true").lower() == "true" |
|
|
NANO_BANANA_MAX_RETRY = int(os.getenv("NANO_BANANA_MAX_RETRY", "2")) |
|
|
|
|
|
|
|
|
MAX_STORY_LENGTH = 2000 |
|
|
DEFAULT_TEMPERATURE = 0.7 |
|
|
|
|
|
|
|
|
COMIC_PANEL_COUNT = 6 |
|
|
COMIC_PANEL_WIDTH = 1024 |
|
|
COMIC_PANEL_HEIGHT = 1024 |
|
|
|
|
|
@classmethod |
|
|
def validate_v1(cls): |
|
|
"""Validate V1 configuration""" |
|
|
if not cls.OPENAI_API_KEY: |
|
|
raise ValueError("OPENAI_API_KEY is required. Please set it in .env file") |
|
|
return True |
|
|
|