GoForum🌐 V2EX

NiceEval: 为你的 Agent 构建评估

HXHL · 2026-07-06 16:48 · 0 次点赞 · 0 条回复

评估的意义

在过去程序的开发中,大家用测试来保障程序质量与程序员今晚不会被 oncall 可以安全下班的自信。而现在评估对于 Agent 也是一样意义。

除了保障功能本质,迭代功能本身也需要评估。换模型、调提示词,同一套用例跑一遍看分数在哪些用例是差一点,在哪些指标上更好了。

Langfuse 与 BrainTrust 有什么问题

尽管现在市面上已经有了 DeepEval 、LangFuse 、BrainTrust 。但是它们是 Prompt Enginering 时代的产物,现在 Agent 评估套进 Dataset 还有 Golden 的模型会非常别扭。

随着开发范式收敛,Agent 胜出,所以我做了 NiceEval ,是一个开源、专为 Agent 设计的估计工具。 在 Agent 需要评估多轮对话、工具调用还有 Skill 加载的场景,都能被很好的解决了。

import { defineEval } from "niceeval";

export default defineEval({
  description: "实时天气必须走 get_weather 工具,不许编造",

  async test(t) {
    const turn = await t.send("北京今天天气怎么样?");
    t.succeeded();

    t.calledTool("get_weather", { input: { city: "北京" } });
    t.notCalledTool("web_search");
    t.eventOrder(["action.called", "action.result", "message"]);
    t.messageIncludes(/°C|晴|多云|雨/);

    await t.group("预算内完成", () => {
      t.maxToolCalls(2);
      t.maxCost(0.05);
    });

    t.judge.autoevals
      .closedQA("助手是否给出了具体的天气数据,而不是含糊其辞?")
      .atLeast(0.7);
  },
});

用 NiceEval 快速接入你的应用

在 NiceEval 里,写一个 Adapter就能把自己的 Agent 系统接进来。可以非侵入式的快速开始。来实现测试不同模型在相同评估用例下面的表现。

如果你还想更进一步,测试在不同 Prompt 、不同记忆算法下的表现。在 NiceEval 也是非常好实现的。 在 Exp 中定义 flag ,然后在 Adapter 把 Flag 传给你的 Agent ,然后使用不同的逻辑就可以了。

// experiments/prompt-v1.ts
export default defineExperiment({
  agent: webAgent({ baseUrl: "https://staging.example.com" }),
  model: "gpt-5.4",
  flags: { promptVersion: "v1" },
});
// experiments/prompt-v2.ts
export default defineExperiment({
  agent: webAgent({ baseUrl: "https://staging.example.com" }),
  model: "gpt-5.4",
  flags: { promptVersion: "v2" },
});

评估与看结果

pnpm exec niceeval exp 实验名
pnpm exec niceeval view

实验结果

结束

给我一个 ⭐ 吧: https://github.com/CorrectRoadH/NiceEval

官网: https://niceeval.com/

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: HXHL
发布: 2026-07-06
点赞: 0
回复: 0