Spaces:
Running
Running
| import asyncio | |
| import os | |
| import sys | |
| import time | |
| import json | |
| import logging | |
| from typing import Dict, Any | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s | %(levelname)-7s | %(message)s") | |
| from agents.orchestrator import Orchestrator | |
| TEST_CASES = [ | |
| { | |
| "id": "case_1_easy", | |
| "name": "Bài 1 (Dễ): Hình chóp tứ giác đều", | |
| "text": "Cho hình chóp S.ABCD có đáy ABCD là hình vuông cạnh 10. Chiều cao SO vuông góc với đáy tại tâm O, SO=15. Tính thể tích khối chóp S.ABCD.", | |
| "expected_answer": "500", | |
| }, | |
| { | |
| "id": "case_2_medium", | |
| "name": "Bài 2 (Trung bình): Hình chóp tam giác đều", | |
| "text": "Cho hình chóp tam giác đều S.ABC có cạnh đáy bằng 6, chiều cao SO = 8 vuông góc với đáy tại trọng tâm O của tam giác ABC. Tính thể tích khối chóp S.ABC.", | |
| "expected_answer": "24*sqrt(3) ≈ 41.57", | |
| }, | |
| { | |
| "id": "case_3_hard", | |
| "name": "Bài 3 (Khó): Hình chóp cụt tứ giác đều", | |
| "text": "Cho hình chóp cụt tứ giác đều ABCD.A1B1C1D1 có cạnh đáy dưới bằng 8, cạnh đáy trên bằng 4, chiều cao giữa hai đáy h=6. Tính thể tích khối chóp cụt.", | |
| "expected_answer": "224", | |
| }, | |
| ] | |
| async def main(): | |
| print("=" * 80, flush=True) | |
| print(" END-TO-END AI CORE BENCHMARK (v6.0 Unified Architecture)", flush=True) | |
| print(" GeometryParserAgent + GeometryEngine + DeepMathSolverAgent", flush=True) | |
| print("=" * 80, flush=True) | |
| orchestrator = Orchestrator() | |
| results = [] | |
| for tc in TEST_CASES: | |
| print(f"\n" + "=" * 80, flush=True) | |
| print(f"🔥 TEST CASE: {tc['name']}", flush=True) | |
| print(f"📄 Đề bài: {tc['text']}", flush=True) | |
| print(f"🎯 Kỳ vọng kết quả: {tc['expected_answer']}", flush=True) | |
| print("=" * 80, flush=True) | |
| start_time = time.time() | |
| try: | |
| res = await orchestrator.run( | |
| text=tc["text"], | |
| job_id=f"e2e_{tc['id']}", | |
| ) | |
| elapsed = time.time() - start_time | |
| status = res.get("status") | |
| is_3d = res.get("is_3d") | |
| dsl = res.get("geometry_dsl") | |
| coords = res.get("coordinates", {}) | |
| solution = res.get("solution", {}) | |
| answer = solution.get("answer") if solution else "N/A" | |
| steps = solution.get("steps", []) if solution else [] | |
| vars_eval = solution.get("evaluated_variables", {}) if solution else {} | |
| print(f"\n⏱ Tổng thời gian chạy: {elapsed:.2f}s", flush=True) | |
| print(f"📊 Trạng thái: {status} | Không gian 3D: {is_3d} | Tọa độ điểm ({len(coords)}): {list(coords.keys())}", flush=True) | |
| print(f"\n📐 Generated Geometry DSL:\n{dsl}", flush=True) | |
| print(f"\n🐍 Evaluated Variables via SymPy Sandbox: {vars_eval}", flush=True) | |
| print(f"🏆 Kết quả tính toán cuối cùng: {answer}", flush=True) | |
| print(f"\n📋 Các bước giải chi tiết ({len(steps)} bước):", flush=True) | |
| for s in steps: | |
| print(f" • {s}", flush=True) | |
| results.append({ | |
| "id": tc["id"], | |
| "name": tc["name"], | |
| "elapsed": round(elapsed, 2), | |
| "status": status, | |
| "n_coords": len(coords), | |
| "answer": answer, | |
| "vars": vars_eval, | |
| }) | |
| except Exception as e: | |
| print(f"❌ Error during test: {e}", flush=True) | |
| import traceback | |
| traceback.print_exc() | |
| print("\n" + "=" * 80, flush=True) | |
| print(" E2E BENCHMARK SUMMARY TABLE", flush=True) | |
| print("=" * 80, flush=True) | |
| for r in results: | |
| print(f"[{r['id']}] {r['name']}: Status={r['status']}, Coords={r['n_coords']} pts, Time={r['elapsed']}s, Ans={r['answer']}, Vars={r['vars']}", flush=True) | |
| print("=" * 80, flush=True) | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |