Spaces:
Build error
Build error
| import os | |
| import sys | |
| import tempfile | |
| import requests | |
| import asyncio | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| # Add the current directory to Python path | |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) | |
| # Import the latest agent system | |
| from langgraph_agent_system import run_agent_system | |
| from observability import flush_traces, shutdown_observability | |
| # Default API URL - Using the same URL as the original basic_agent.py | |
| DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space" | |
| def fetch_random_question(api_base: str = DEFAULT_API_URL): | |
| """Return JSON of /random-question.""" | |
| resp = requests.get(f"{api_base}/random-question", timeout=30) | |
| resp.raise_for_status() | |
| return resp.json() | |
| def maybe_download_file(task_id: str, api_base: str = DEFAULT_API_URL) -> str | None: | |
| """Try to download the file associated with a given task id. Returns local path or None.""" | |
| url = f"{api_base}/files/{task_id}" | |
| try: | |
| resp = requests.get(url, timeout=60) | |
| if resp.status_code != 200: | |
| print(f"No file associated with task {task_id} (status {resp.status_code}).") | |
| return None | |
| # Create temp file with same name from headers if available | |
| filename = resp.headers.get("content-disposition", "").split("filename=")[-1].strip("\"") or f"{task_id}_attachment" | |
| tmp_path = os.path.join(tempfile.gettempdir(), filename) | |
| with open(tmp_path, "wb") as f: | |
| f.write(resp.content) | |
| print(f"Downloaded attachment to {tmp_path}") | |
| return tmp_path | |
| except requests.HTTPError as e: | |
| print(f"Could not download file for task {task_id}: {e}") | |
| except Exception as e: | |
| print(f"Error downloading file: {e}") | |
| return None | |
| async def main(): | |
| print("Random Agent Test - Latest LangGraph Multi-Agent System") | |
| print("=" * 60) | |
| try: | |
| # Fetch random question | |
| q = fetch_random_question() | |
| task_id = str(q["task_id"]) | |
| question_text = q["question"] | |
| print("\n=== Random Question ===") | |
| print(f"Task ID : {task_id}") | |
| print(f"Question: {question_text}") | |
| # Attempt to get attachment if any | |
| attachment_path = maybe_download_file(task_id) | |
| if attachment_path: | |
| question_text += f"\n\nAttachment available at: {attachment_path}" | |
| # Run the latest agent system | |
| print("\n=== Running Latest LangGraph Multi-Agent System ===") | |
| result = await run_agent_system( | |
| query=question_text, | |
| user_id="test_user", | |
| session_id=f"session_{task_id}" | |
| ) | |
| print("\n=== Agent Answer ===") | |
| print(result) | |
| except Exception as e: | |
| print(f"Error in main execution: {e}") | |
| import traceback | |
| traceback.print_exc() | |
| finally: | |
| # Cleanup | |
| try: | |
| flush_traces(background=False) | |
| shutdown_observability() | |
| print("\n✅ Agent cleanup completed") | |
| except Exception as e: | |
| print(f"⚠️ Cleanup warning: {e}") | |
| if __name__ == "__main__": | |
| asyncio.run(main()) |