prepare_agent_evaluation.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import hashlib
  2. import json
  3. from pathlib import Path
  4. from zhifu.evaluation import AgentManifest, Dataset, Judgment, RetrievalManifest, source_digest
  5. def main():
  6. path = Path("evaluations/agent-scenarios.json")
  7. content = path.read_bytes()
  8. dataset = Dataset.model_validate_json(content)
  9. output = Path(".work/agent-evaluation")
  10. output.mkdir(parents=True, exist_ok=True)
  11. # 同一情境的不同表述属于同一集合,避免重复表述跨集合影响评测结果。
  12. cases = [
  13. {
  14. **case,
  15. "status": "NOT_RUN",
  16. "label_review": "REQUIRED",
  17. }
  18. for case in dataset.cases()
  19. ]
  20. report = {
  21. "version": dataset.version,
  22. "origin": dataset.origin,
  23. "sha256": hashlib.sha256(content).hexdigest(),
  24. "source_sha256": source_digest(),
  25. "count": len(cases),
  26. "generation_attempts": 0,
  27. "cases": cases,
  28. }
  29. (output / "cases.json").write_text(
  30. json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
  31. )
  32. for name, model in (("agent-manifest", AgentManifest), ("judgment", Judgment),
  33. ("retrieval-manifest", RetrievalManifest)):
  34. (output / f"{name}.schema.json").write_text(
  35. json.dumps(model.model_json_schema(), ensure_ascii=False, indent=2) + "\n",
  36. encoding="utf-8",
  37. )
  38. print(json.dumps({"count": len(cases), "generation_attempts": 0, "output": str(output)}))
  39. if __name__ == "__main__":
  40. main()