import os import sys import gradio as gr from common import PoetryModel from poem_generator.app import create_app as create_poem_generator from collaborative_writer.app import create_app as create_collaborative_writer from poem_tutor.app import create_app as create_poem_tutor from vocabulary_game.app import create_app as create_vocabulary_game def build_suite(shared_model: PoetryModel) -> gr.Blocks: with gr.Blocks(title="America SCORES Poetry & Vocabulary Apps") as demo: gr.Markdown("# 🎨 America SCORES Poetry & Vocabulary Apps") gr.Markdown("Pick a tab to launch one of the four activities.") with gr.Tabs(): with gr.Tab("📝 Poem Generator"): create_poem_generator(shared_model) with gr.Tab("✍️ Collaborative Writer"): create_collaborative_writer(shared_model) with gr.Tab("🎓 Poem Tutor"): create_poem_tutor(shared_model) with gr.Tab("📚 Vocabulary Game"): create_vocabulary_game(shared_model) return demo if __name__ == "__main__": from dotenv import load_dotenv load_dotenv() hf_token = os.getenv("HF_TOKEN") if hf_token: try: from huggingface_hub import login login(hf_token, add_to_git_credential=False) except Exception as exc: print(f"⚠️ Hugging Face login skipped: {exc}") model_name = os.getenv("DEFAULT_MODEL", "openai") device = os.getenv("DEVICE", "cpu") openai_key = os.getenv("OPENAI_API_KEY") shared_model = PoetryModel( model_name=model_name, device=device, openai_api_key=openai_key, ) app_user = os.getenv("APP_USER", "user") app_pass = os.getenv("APP_PASS", "1lB>nZREOl/Ysf") demo = build_suite(shared_model) on_spaces = bool(os.getenv("SPACE_ID")) demo.launch( server_name="0.0.0.0", server_port=int(os.getenv("PORT", "7860")), share=on_spaces or bool(os.getenv("FORCE_SHARE")), debug=True, ssr_mode=False, auth=(app_user, app_pass), auth_message="Restricted area. Please log in.", )