Spaces:
Sleeping
Sleeping
| import argparse | |
| import textwrap | |
| from typing import Any | |
| import requests | |
| from app import DEFAULT_API_URL, GAIAAgent | |
| def fetch_question_row(task_id: str, api: str = DEFAULT_API_URL) -> dict[str, Any]: | |
| """Return the question dict associated with *task_id* (raises if not found).""" | |
| resp = requests.get(f"{api}/questions", timeout=15) | |
| resp.raise_for_status() | |
| for row in resp.json(): | |
| if row["task_id"] == task_id: | |
| return row | |
| raise ValueError(f"task_id '{task_id}' not present in /questions.") | |
| def run_one(task_id: str | None, question: str | None) -> None: | |
| agent = GAIAAgent() | |
| if task_id: | |
| row = fetch_question_row(task_id) | |
| question = row["question"] | |
| print(f"\n{row}\n") # show full row incl. metadata | |
| # --- show pretty question | |
| print("=" * 90) | |
| print(f"QUESTION ({task_id or 'adhoc'})") | |
| print(textwrap.fill(question or "", width=90)) | |
| print("=" * 90) | |
| assert question is not None, "Internal error: question was None" | |
| answer = agent(question, task_id=task_id) | |
| print(f"\nFINAL ANSWER --> {answer}") | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser(description="Run one GAIAAgent query locally.") | |
| parser.add_argument("--task_id", help="GAIA task_id to fetch & run") | |
| parser.add_argument("question", nargs="?", help="Ad-hoc question text (positional)") | |
| ns = parser.parse_args() | |
| # mutual-exclusion checks | |
| if ns.task_id and ns.question: | |
| parser.error("Provide either --task_id OR a question, not both.") | |
| if ns.task_id is None and ns.question is None: | |
| parser.error("You must supply a GAIA --task_id or a question.") | |
| return ns | |
| if __name__ == "__main__": | |
| args = parse_args() | |
| run_one(task_id=args.task_id, question=args.question) | |