Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| import os | |
| from pathlib import Path | |
| from dotenv import dotenv_values | |
| from huggingface_hub import HfApi | |
| ROOT = Path(__file__).resolve().parents[1] | |
| def env_value(values: dict[str, str | None], *names: str) -> str | None: | |
| for name in names: | |
| value = values.get(name) or os.getenv(name) | |
| if value: | |
| return value | |
| return None | |
| def main() -> None: | |
| values = dotenv_values(ROOT / ".env") | |
| token = env_value(values, "HF_TOKEN", "HF_Token", "HUGGINGFACE_TOKEN") | |
| if not token: | |
| raise SystemExit("Missing HF token. Add HF_TOKEN=... to .env and rerun this script.") | |
| api = HfApi(token=token) | |
| username = api.whoami()["name"] | |
| space_name = env_value(values, "HF_SPACE_NAME") or "agent-tina" | |
| repo_id = env_value(values, "HF_SPACE_ID") or f"{username}/{space_name}" | |
| openrouter_api_key = env_value(values, "OPENROUTER_API_KEY") | |
| if not openrouter_api_key: | |
| raise SystemExit("Missing OPENROUTER_API_KEY in .env.") | |
| openrouter_model = env_value(values, "OPENROUTER_MODEL") or "openai/gpt-oss-20b" | |
| correction_model = env_value(values, "OPENROUTER_CORRECTION_MODEL") or "openai/gpt-4o-mini" | |
| whisper_model = env_value(values, "WHISPER_MODEL") or "base" | |
| whisper_beam_size = env_value(values, "WHISPER_BEAM_SIZE") or "5" | |
| max_upload_mb = env_value(values, "MAX_UPLOAD_MB") or "250" | |
| app_base_url = env_value(values, "HF_APP_BASE_URL") or f"https://{repo_id.replace('/', '-').lower()}.hf.space" | |
| dataset_repo = env_value(values, "HF_DATASET_REPO") or f"{username}/agent-tina-meetings" | |
| api.create_repo( | |
| repo_id=repo_id, | |
| repo_type="space", | |
| space_sdk="docker", | |
| exist_ok=True, | |
| ) | |
| api.add_space_secret(repo_id=repo_id, key="OPENROUTER_API_KEY", value=openrouter_api_key) | |
| api.add_space_secret(repo_id=repo_id, key="HF_TOKEN", value=token) | |
| api.add_space_variable(repo_id=repo_id, key="OPENROUTER_MODEL", value=openrouter_model) | |
| api.add_space_variable(repo_id=repo_id, key="OPENROUTER_CORRECTION_MODEL", value=correction_model) | |
| api.add_space_variable(repo_id=repo_id, key="WHISPER_MODEL", value=whisper_model) | |
| api.add_space_variable(repo_id=repo_id, key="WHISPER_BEAM_SIZE", value=whisper_beam_size) | |
| api.add_space_variable(repo_id=repo_id, key="MAX_UPLOAD_MB", value=max_upload_mb) | |
| api.add_space_variable(repo_id=repo_id, key="APP_BASE_URL", value=app_base_url) | |
| api.add_space_variable(repo_id=repo_id, key="HF_DATASET_REPO", value=dataset_repo) | |
| api.create_repo( | |
| repo_id=dataset_repo, | |
| repo_type="dataset", | |
| private=True, | |
| exist_ok=True, | |
| ) | |
| api.update_repo_settings( | |
| repo_id=dataset_repo, | |
| repo_type="dataset", | |
| private=True, | |
| ) | |
| api.upload_folder( | |
| repo_id=repo_id, | |
| repo_type="space", | |
| folder_path=str(ROOT), | |
| commit_message="Deploy Agent Tina", | |
| ignore_patterns=[ | |
| ".env", | |
| ".venv/*", | |
| "**/__pycache__/**", | |
| ".cache/*", | |
| "data/*", | |
| "**/*.pyc", | |
| "sample.wav", | |
| ], | |
| ) | |
| print(f"Deployed to https://huggingface.co/spaces/{repo_id}") | |
| print(f"App URL: {app_base_url}") | |
| print(f"Dataset repo: https://huggingface.co/datasets/{dataset_repo}") | |
| if __name__ == "__main__": | |
| main() | |