工作原理
一个.eval.ts 文件默认导出数组:
生成 ID
如果文件是evals/sql.eval.ts,生成的 ID 是:
从 YAML / JSON 加载
过滤数据集 eval
数据集 vs 独立文件
- 使用数据集
- 使用独立文件
case 结构完全一致,主要差异是输入和预期输出。
Documentation Index
Fetch the complete documentation index at: /docs/llms.txt
Use this file to discover all available pages before exploring further.
从 .eval.ts 文件导出数组,将一套 eval 逻辑展开为多个 case。用 loadYaml 或 loadJson 读取外部数据集,并获得稳定 ID。
.eval.ts 文件默认导出数组:
import { defineEval } from "niceeval";
import { equals } from "niceeval/expect";
const rows = [
{ task: "Count users", prompt: "Count all users", sql: "SELECT COUNT(*) FROM users;" },
{ task: "Recent orders", prompt: "Find recent orders", sql: "SELECT * FROM orders ORDER BY created_at DESC LIMIT 10;" },
];
export default rows.map((row) =>
defineEval({
description: row.task,
async test(t) {
await t.send(row.prompt);
t.check(t.reply, equals(row.sql));
},
}),
);
evals/sql.eval.ts,生成的 ID 是:
sql/0000
sql/0001
import { loadYaml } from "niceeval/loaders";
const doc = await loadYaml("evals/data/sql-cases.yaml");
const rows = doc.cases as { task: string; prompt: string; sql: string }[];
cases:
- task: Count users
prompt: Count all rows in the users table
sql: SELECT COUNT(*) FROM users;
# 运行整个数据集
npx niceeval exp local sql
# 只运行第一个 case
npx niceeval exp local sql/0000