03_bfcl_custom_evaluation.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """
  2. 第十二章示例3:BFCL自定义评估
  3. 对应文档:12.2.5 在HelloAgents中实现BFCL评估 - 方式3
  4. 这个示例展示如何使用底层组件进行自定义评估流程。
  5. 适合需要自定义评估流程的场景。
  6. """
  7. from hello_agents import SimpleAgent, HelloAgentsLLM
  8. from hello_agents.evaluation import BFCLDataset, BFCLEvaluator
  9. # 1. 创建智能体
  10. llm = HelloAgentsLLM()
  11. agent = SimpleAgent(name="TestAgent", llm=llm)
  12. # 2. 加载数据集
  13. dataset = BFCLDataset(
  14. bfcl_data_dir="./temp_gorilla/berkeley-function-call-leaderboard/bfcl_eval/data",
  15. category="simple_python"
  16. )
  17. data = dataset.load()
  18. print(f"✅ 加载了 {len(data)} 个测试样本")
  19. # 3. 创建评估器
  20. evaluator = BFCLEvaluator(
  21. dataset=dataset,
  22. category="simple_python"
  23. )
  24. # 4. 运行评估
  25. results = evaluator.evaluate(
  26. agent=agent,
  27. max_samples=5 # 只评估5个样本
  28. )
  29. # 5. 查看详细结果
  30. print(f"\n评估结果:")
  31. print(f"总样本数: {results['total_samples']}")
  32. print(f"正确样本数: {results['correct_samples']}")
  33. print(f"准确率: {results['overall_accuracy']:.2%}")
  34. # 6. 查看每个样本的详细结果
  35. print(f"\n详细结果:")
  36. for detail in results['detailed_results']:
  37. print(f"样本 {detail['sample_id']}:")
  38. print(f" 问题: {detail['question'][:50]}...")
  39. print(f" 预测: {detail['predicted']}")
  40. print(f" 正确答案: {detail['expected']}")
  41. print(f" 结果: {'✅ 正确' if detail['success'] else '❌ 错误'}")
  42. print()
  43. # 7. 导出结果
  44. evaluator.export_results(
  45. results,
  46. output_file="./evaluation_results/bfcl_custom_result.json"
  47. )
  48. print("✅ 结果已导出到 ./evaluation_results/bfcl_custom_result.json")