test_entry.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """Local CLI for preparing or executing one database-backed v2 test run."""
  2. from __future__ import annotations
  3. import argparse
  4. import json
  5. from find_agent_v2.demand_context import prepare_v2_demand_run
  6. from find_agent_v2.runner import run_find_agent_v2, run_prepared_find_agent_v2
  7. from find_agent_v2.service import get_find_agent_v2_service
  8. def main() -> None:
  9. parser = argparse.ArgumentParser(description="准备或执行一条寻找 Agent v2 本地测试任务")
  10. parser.add_argument("--demand-grade-id", type=int, default=None)
  11. parser.add_argument("--index", type=int, default=0, help="未指定需求 ID 时选择最新 S 级上下文序号")
  12. parser.add_argument("--run-id", default=None)
  13. parser.add_argument("--existing-run-id", default=None, help="读取并执行已准备的 v2 run")
  14. parser.add_argument("--execute", action="store_true", help="准备后立即调用模型和外部搜索")
  15. parser.add_argument("--model", default=None)
  16. args = parser.parse_args()
  17. if args.existing_run_id:
  18. run = get_find_agent_v2_service().require_run(args.existing_run_id)
  19. prepared = None
  20. output: dict = {"prepared": {
  21. "run_id": run["run_id"],
  22. "demand_grade_id": run["demand_grade_id"],
  23. "demand_name": run["demand_word"],
  24. "status": run["status"],
  25. }, "executed": False}
  26. else:
  27. prepared = prepare_v2_demand_run(
  28. demand_grade_id=args.demand_grade_id,
  29. index=args.index,
  30. run_id=args.run_id,
  31. )
  32. output = {"prepared": prepared.summary(), "executed": False}
  33. if args.execute:
  34. result = (
  35. run_prepared_find_agent_v2(args.existing_run_id, model=args.model)
  36. if args.existing_run_id
  37. else run_find_agent_v2(
  38. prepared.user_input,
  39. run_id=prepared.run_id,
  40. model=args.model,
  41. )
  42. )
  43. output.update({"executed": True, "result": {
  44. "status": result.status,
  45. "succeeded": result.succeeded,
  46. "valid_primary_count": result.valid_primary_count,
  47. "stop_reason": result.stop_reason,
  48. "final_output": result.final_output,
  49. }})
  50. print(json.dumps(output, ensure_ascii=False, default=str, indent=2))
  51. if __name__ == "__main__":
  52. main()