Spaces:
Running
Running
| """Deploy this Socratic Space to Hugging Face. | |
| Reads `HF_access` from the project-root `.env` (../../.env). Creates the Space | |
| repo if it doesn't exist (PUBLIC), then uploads the local folder excluding | |
| test artefacts and secrets. | |
| After running this script: | |
| 1. Visit https://huggingface.co/spaces/AE-Talk-bot/v5-AI-ethic-HOT-socratic | |
| 2. Settings → Variables and secrets → ensure these are set: | |
| API_KEY (secret) your OpenAI key | |
| HF_access (secret) your HF write token (same one this script used) | |
| RUN_MODE (variable) pilot | |
| AUTO_RESTART_ENABLED (variable) true | |
| 3. Restart the Space and verify the build logs. | |
| """ | |
| import os | |
| import sys | |
| from pathlib import Path | |
| from dotenv import load_dotenv | |
| from huggingface_hub import HfApi | |
| # Force UTF-8 stdout on Windows so → arrows in the post-deploy reminder | |
| # don't crash the script after a successful upload. | |
| try: | |
| sys.stdout.reconfigure(encoding="utf-8") | |
| except Exception: | |
| pass | |
| HERE = Path(__file__).resolve().parent | |
| load_dotenv(HERE / "../../.env") | |
| HF_TOKEN = os.environ.get("HF_access") | |
| if not HF_TOKEN: | |
| print("ERROR: HF_access not found in ../../.env", file=sys.stderr) | |
| sys.exit(1) | |
| REPO_ID = "AE-Talk-bot/v5-AI-ethic-HOT-socratic-frame" | |
| api = HfApi(token=HF_TOKEN) | |
| print(f"=== Creating Space {REPO_ID} (public, gradio) ===") | |
| api.create_repo( | |
| repo_id=REPO_ID, | |
| repo_type="space", | |
| space_sdk="gradio", | |
| private=False, | |
| exist_ok=True, | |
| ) | |
| print(f"=== Uploading {HERE} to Space ===") | |
| api.upload_folder( | |
| folder_path=str(HERE), | |
| repo_id=REPO_ID, | |
| repo_type="space", | |
| ignore_patterns=[ | |
| # All local archives (old prototypes, retired skills) — never deploy. | |
| "_archive_*", | |
| "_archive_*/**/*", | |
| "**/_archive_*", | |
| "**/_archive_*/**/*", | |
| # Raw course materials (PDFs etc.) — local-only research notes. | |
| "0_Raw_info/*", | |
| "0_Raw_info/**/*", | |
| # Test harnesses + artefacts — never deploy. | |
| "test_*.py", | |
| "test_*.json", | |
| "test_*.md", | |
| "test_logs/*", | |
| "verify_deployed.py", | |
| # Build artefacts | |
| "__pycache__/*", | |
| "**/__pycache__/*", | |
| "*.pyc", | |
| # Secrets (defensive — should never be in this folder anyway) | |
| ".env", | |
| # This script itself | |
| "deploy.py", | |
| ], | |
| commit_message="Deploy v8.3: add Look-back check to question_set generation. Manager must scan INITIAL_ARGUMENT + RECENT_TURNS + CURRENT_MSG before outputting any fresh question_set (opening or transition-due) and adjust the entry angle of candidate questions that would draw an 'as I said' pushback (redundancy) or 'I already rejected that premise' pushback. Probe target stays fixed; only entry angle moves. Two worked examples added (expected_consequences pivot, evaluation rejected-premise reformulation). Common mistakes updated.", | |
| ) | |
| print() | |
| print(f"=== Done ===") | |
| print(f"Space URL: https://huggingface.co/spaces/{REPO_ID}") | |
| print() | |
| print("Next manual steps:") | |
| print(" 1. Open the Space URL above") | |
| print(" 2. Settings → Variables and secrets → add 3 secrets:") | |
| print(" - API_KEY (your OpenAI key)") | |
| print(" - HF_access (your HF write token, same as in .env)") | |
| print(" - RUN_MODE (pilot)") | |
| print(" 3. Restart the Space and check the build logs") | |