- 连上被测对象,把任务发给它。
- 按需要反复运行,每次都打分。
- 把每一次的对话、工具调用、文件改动、耗时和花费留下来。
- 让你在终端或浏览器里比较两个配置,并回到具体某一次失败去看发生了什么。
一条评估用例长什么样
下面这条评估用例验证一个天气助手:问天气时它要真的调用get_weather,而不是凭空编一个答案。
评估用来做什么
评估写起来像单元测试,用起来更像实验。同一批评估用例可以服务几种目的:- 防回归:改 prompt、换模型、升级依赖后重跑同一批评估,看通过率有没有掉。见修改后只重跑受影响的评估。
- 做对比:同一批评估对着两个模型、两版 prompt、装与不装某个 Skill 各跑一遍,逐题比较结果。见编写实验和比较两次运行。
- 进 CI:评估不通过就让 PR 变红。见 CI 集成。
- 越用越全:真实使用中暴露的失败,补成一条新的评估用例,以后每次改动都会检查到它。
能评什么
你自己的 AI Agent
基于 AI SDK、LangGraph、Pi 或自研 Agent loop 都可以,用什么语言写也不影响。只要有一个能调用的接口,写一个 Adapter 就能接进来。
Coding Agent 和它的扩展
把 Claude Code、Codex 等 Agent 放进 Sandbox,给它一个真实仓库和任务,用项目自己的测试判分。适合衡量 Skill、Plugin 或 memory 的实际效果。
任何 AI 应用,比如 LLM 游戏
被测对象提供的是发帖、回复、NPC 行动这类业务操作时,把它们原样交给评估用例,直接检查返回的结构化结果和世界状态。
examples/zh/llm-x 里一个 AI 社交应用的评估:
- 直连你的应用
- 放进 Sandbox
NiceEval 通过 Adapter 直接请求你的 Agent 或应用接口,不需要 Docker。对话式 Agent 和提供业务操作的应用都走这条路。
和 DeepEval、LangFuse、Braintrust 有什么不同
DeepEval 是成熟的 Python 评估框架,指标库丰富。NiceEval 的取舍不同:- TypeScript 原生:评估用例、Adapter、Experiment 都是带类型的 TypeScript 代码。
- 断言落在过程上:Agent 做对一件事,往往要经过多轮对话、几次工具调用、读文件、改代码,最终答案只是其中一环。NiceEval 直接断言这些过程事实,不要求你先攒一份 golden 数据集。
- 在真实环境里判分:Coding Agent 跑在 Sandbox 里,用项目自己的测试和文件改动判分,而不是只给回复打分。
- 对照实验是一等公民:评估用例和 Experiment 分开,同一批评估用例直接比较模型、prompt 和扩展。
会反复见到的几个词
其它术语第一次出现时都会就地解释。