我为 AI 代理构建了一个类似 pytest 的工具,因为 “it passed once” 还不够。

发布: (2026年2月6日 GMT+8 04:10)
4 min read
原文: Dev.to

Source: Dev.to

介绍

你是否有过这样的感觉:你的 AI 代理在开发环境中运行完美,但在生产环境中却随机出错?相同的提示、相同的模型,却得到不同的结果。我花了太多时间调试那些偶尔会失败的代理。最糟糕的不是失败本身,而是根本不知道原因。是工具选择的问题?提示的问题?模型状态不佳?

现有的评估工具帮助不大。它们只运行一次测试,检查输出,然后结束。但代理并非确定性行为。只跑一次测试几乎没有任何意义。

agentrial

我构建了 agentrial,一个类似 pytest 的 AI 代理测试框架,它会对每个测试运行多次并提供真实的统计数据。

安装

pip install agentrial

配置 (agentrial.yml)

suite: my-agent
agent: my_module.agent
trials: 10
threshold: 0.85

cases:
  - name: basic-math
    input:
      query: "What is 15 * 37?"
    expected:
      output_contains: ["555"]
      tool_calls:
        - tool: calculate

运行测试

agentrial run

输出

┌──────────────────────┬────────┬──────────────┬──────────┐
│ 测试用例            │ 通过率 │ 95% 置信区间 │ 平均费用 │
├──────────────────────┼────────┼──────────────┼──────────┤
│ easy-multiply        │ 100.0% │ 72.2%-100.0% │ $0.0005  │
│ medium-population    │ 90.0%  │ 59.6%-98.2%  │ $0.0006  │
│ hard-multi-step      │ 70.0%  │ 39.7%-89.2%  │ $0.0011  │
└──────────────────────┴────────┴──────────────┴──────────┘

置信区间

“95% 置信区间”列显示的是 Wilson 分数区间。进行 10 次试验后,100 % 的通过率实际上意味着在 95 % 置信水平下,真实通过率介于 72 % 到 100 % 之间。看到“100 %(72‑100 %)”而不是单纯的“100 %”,彻底改变了我对代理可靠性的看法。

步骤级别的失败归因

当测试失败时,agentrial 会告诉你是哪一步出现了偏差:

Failures: medium-population (90% pass rate)
  Step 0 (tool_selection): called 'calculate' instead of 'lookup_country_info'

在我的案例中,代理在模糊查询时偶尔会选错工具——这类 bug 若手动排查需要数小时。

实际费用追踪

agentrial 会从 API 响应的元数据中提取 token 使用情况。对 10 个测试用例执行 100 次试验,总费用仅 6 美分,并在扩展前提供了每个测试的精确费用估算。

CI 集成

可以在 GitHub Action 中强制每个 PR 达到可靠性阈值:

- uses: alepot55/agentrial@v0.1.4
  with:
    trials: 10
    threshold: 0.80

如果通过率低于 80 %,PR 将被阻止。上周正是它拦截了两次回归,否则这些问题本会被直接发布。

当前局限

  • 目前仅支持 LangGraph;计划后续加入 CrewAIAutoGen 的适配器。
  • 仅提供 CLI,尚未有图形界面。
  • 暂未实现 LLM‑as‑judge 的语义评估(后续会加入)。

开源

agentrial 采用 MIT 许可证,代码托管在 。

结束语

我用了大约一周时间(主要借助 Claude Code)完成了整个项目。统计部分(Wilson 区间、用于回归检测的 Fisher 精确检验、Benjamini‑Hochberg 校正)是最有趣的环节。如果你在构建代理时已经厌倦了“在我的机器上可以工作”,不妨试试 agentrial。我仍在探索哪些指标最有价值,欢迎分享你的想法!

Back to Blog

相关文章

阅读更多 »