Download submit_answers.py from AndreasG10/Final_Assignment_Template: direct link, hf CLI and curl.
- Browser
- Download file 2.18 kB
-
https://huggingface.co/spaces/AndreasG10/Final_Assignment_Template/resolve/main/submit_answers.py
- Command line
-
hf download hf://spaces/AndreasG10/Final_Assignment_Template/submit_answers.py
-
curl -L -o submit_answers.py https://huggingface.co/spaces/AndreasG10/Final_Assignment_Template/resolve/main/submit_answers.py
2.18 kB
| """ | |
| Submit answers.json to the course scoring API. | |
| python submit_answers.py --username YOUR_HF_USERNAME --space YOUR_HF_USERNAME/YOUR_SPACE_NAME | |
| --space is only used to build the agent_code link (https://huggingface.co/spaces/<space>/tree/main). | |
| The course asks for a public Space containing your code; use --agent-code to pass a full URL instead. | |
| """ | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| import requests | |
| API_URL = "https://agents-course-unit4-scoring.hf.space" | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("--username", required=True, help="your Hugging Face username") | |
| g = ap.add_mutually_exclusive_group(required=True) | |
| g.add_argument("--space", help="owner/space-name of your public Space") | |
| g.add_argument("--agent-code", help="full URL to your public code, ending in /tree/main") | |
| ap.add_argument("--file", default="answers.json") | |
| ap.add_argument("--yes", action="store_true", help="skip the confirmation prompt") | |
| args = ap.parse_args() | |
| data = json.loads(Path(args.file).read_text(encoding="utf-8")) | |
| agent_code = args.agent_code or f"https://huggingface.co/spaces/{args.space}/tree/main" | |
| answers = [ | |
| {"task_id": tid, "submitted_answer": str(v.get("answer", "")).strip()} | |
| for tid, v in sorted(data.items(), key=lambda kv: kv[1].get("index", 0)) | |
| ] | |
| print(f"User: {args.username}\nCode: {agent_code}\nAnswers: {len(answers)}") | |
| empty = [a["task_id"] for a in answers if not a["submitted_answer"]] | |
| if empty: | |
| print(f"WARNING: {len(empty)} empty answers (they will count as wrong).") | |
| for v in sorted(data.values(), key=lambda v: v.get("index", 0)): | |
| print(f" [{v.get('index')}] {v.get('answer')!r}") | |
| if not args.yes and input("\nSubmit? [y/N] ").strip().lower() != "y": | |
| raise SystemExit("Cancelled.") | |
| r = requests.post( | |
| f"{API_URL}/submit", | |
| json={"username": args.username.strip(), "agent_code": agent_code, "answers": answers}, | |
| timeout=60, | |
| ) | |
| try: | |
| r.raise_for_status() | |
| except requests.HTTPError: | |
| raise SystemExit(f"Submission failed ({r.status_code}): {r.text[:500]}") | |
| res = r.json() | |
| print(f"\nScore: {res.get('score')}% ({res.get('correct_count')}/{res.get('total_attempted')} correct)") | |
| print(res.get("message", "")) | |