> ## Documentation Index
> Fetch the complete documentation index at: https://niceeval.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 实验（Experiment）：评谁、怎么跑

> Experiment 是可签入的运行配置：同一批 eval 对着哪个 agent、哪个模型、哪些 flags、跑几次。eval 与 experiment 分开的原因——晚绑定，让同一份 eval 换着对象跑。

**experiment** 对着哪个 agent、用哪个模型、开哪些 flags、跑几次。用于做 AB 测试、模型对比、feature 对比。

## 一个 experiment 里有什么

experiment 是 `experiments/` 下可签入的 TypeScript 文件，核心就几个字段：

```ts theme={null}
// experiments/concise.ts
export default defineExperiment({
  description: "简洁 prompt 变体",
  agent: webAgent({ baseUrl: "https://staging.example.com" }),  // 已配置好的 agent 实例
  model: "gpt-5.4",                    // 经 ctx.model 透传给 Adapter
  flags: { promptVariant: "concise" }, // 经 ctx.flags 透传;eval 里是 t.flags
  runs: 3,                             // 每条 eval 跑几次(对抗随机性)
});
```

* `agent`：评谁。放的是已经配置好的实例——被测系统的 URL、鉴权传给 Adapter 工厂，不进 experiment 的其它字段。
* `model` / `flags`：透传语义。[NiceEval](https://niceeval.com/) 不解释它们的含义，原样经 `ctx` 递给 Adapter，由 Adapter 随请求转发、应用按需切换——这正是 [Tier](/zh/concepts/tier) 里模型对比（Tier 1）和 feature A/B（Tier 3）的通道。
* `runs`、`budget`、并发、`sandbox` 等运行参数：怎么跑、跑多少。完整字段见[写实验](/zh/guides/write-experiment)。

## 矩阵对比

要比较的每个变体写一个 experiment 文件：两个模型就是两个文件，只差 `model` 一行；prompt A/B 就是只差一个 flag。同一批 eval 在多个 experiment 下各跑一遍，pass rate、成本、延迟就有了可比的横截面——`niceeval view` 里叠着看。适合比什么、结果怎么读，见[实验矩阵](/zh/guides/experiments)。

## 相关阅读

* [写实验](/zh/guides/write-experiment) — `defineExperiment` 的完整字段：runs、预算、并发与 sandbox。
* [实验矩阵](/zh/guides/experiments) — 跨 agent / model / flags 的对比怎么组织、怎么读结果。
* [评估](/zh/concepts/evals) — 另一半：eval 是什么、生命周期与 outcome。
* [Tier](/zh/concepts/tier) — `model` / `flags` 各在哪一档生效。
