agent-tina / scripts /deploy_hf_space.py
KPrashanth's picture
Deploy Agent Tina
fb59416 verified
Raw
History Blame Contribute Delete
3.37 kB
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()