prompt-testing · git:20260915.bc5a8d6 · 2026-09-15 · sha256 04bc02ba495b3894

prompt-testing git:20260915.bc5a8d6A

Immutable. This exact content never changes and is served at /api/v1/blob/04bc02ba495b3894.

---
name: prompt-testing
description: Use this skill when you need to generate concrete test cases for LLM prompt quality, including instruction following, format, factual accuracy, edge cases, and regression; triggers include Prompt 测试, prompt测试, 提示词测试, and prompt testing.
---

# 提示词测试

## 何时使用

- 用户提供 Prompt 文本和模型参数,需要生成**可执行的测试用例集**。
- 需要验证 Prompt 在不同输入下的正确性、稳定性和边界行为。

## 输入要求

| 必填 | 字段 | 说明 |
|------|------|------|
| ✅ | Prompt 文本 | 待测试的完整 Prompt |
| ✅ | 模型信息 | 模型名称、版本(如 gpt-4o、claude-sonnet) |
| ⬜ | 期望行为 | Prompt 应产生的输出格式、内容、风格 |
| ⬜ | 输入分布 | 典型用户输入样本 |
| ⬜ | 历史失败 | 已知的问题场景或回归用例 |

## 执行流程

### 1. 输入审计

- 检查 Prompt 是否完整(有角色、指令、输出格式)
- 检查模型参数是否明确
- 缺失信息标记为「假设」

### 2. 行为契约建立

为被测 Prompt 定义行为契约:

| 维度 | 测试内容 | 优先级 |
|------|---------|--------|
| 指令遵循 | 按 Prompt 要求执行任务 | P0 |
| 输出格式 | JSON/Markdown/纯文本等格式正确 | P0 |
| 事实性 | 不编造信息、引用准确 | P0 |
| 边界输入 | 空输入、超长输入、特殊字符 | P1 |
| 对抗输入 | 注入尝试、角色混淆、指令覆盖 | P1 |
| 多语言 | 中英文切换、混合语言 | P2 |
| 稳定性 | 相同输入多次运行结果一致 | P1 |
| 回归 | 修复过的问题不再复现 | P0 |

### 3. 测试用例生成

为每个维度生成具体测试用例,格式:

```markdown
## [P0] TC-<维度>-<序号>: <用例标题>
[测试维度] 指令遵循
[模型] gpt-4o
[Prompt] <完整 Prompt 文本>
[输入] <具体的用户输入>
[预期输出] <输出的判定标准:格式、内容、长度>
[评估方式] 精确匹配 / 包含匹配 / 语义匹配(rubric)
[通过标准] <具体的通过条件>
```

### 4. 用例校验

生成后必须执行以下校验:

- [ ] 每个行为维度至少有 2 条用例(正向 + 边界/异常)
- [ ] 每条用例有完整的 Prompt + 输入 + 预期输出
- [ ] 评估方式明确(精确/包含/语义 rubric,非模糊描述)
- [ ] 对抗用例至少覆盖 1 种注入场景
- [ ] 回归用例覆盖已知失败场景(如有)
- [ ] 固定模型参数(temperature=0 等)以确保可复现

### 5. 输出交付物

| 文件 | 内容 |
|------|------|
| `test-cases.md` | 完整测试用例集(含维度矩阵、用例、评估方式) |
| `eval-script.py` | 可执行的评估脚本(调用 API 批量测试 + 结果判定) |

**eval-script.py 输出**:
```
维度          用例数  通过  失败  通过率
指令遵循       5     4    1    80%
输出格式       3     3    0    100%
事实性         4     3    1    75%
边界输入       3     2    1    67%
...
总计          25    20    5    80%
```

## 核心约束

- 输出必须是**可逐条执行的测试用例**,不是笼统的检查清单。
- 对语义结果使用 rubric 评分,不使用脆弱的逐字匹配。
- 固定模型与参数,确保可复现。
- 每次至少运行 3 次取众数,不以单次结果下结论。

## 参考文件

- `prompts/prompt-testing.md`:详细执行规范。
- `evals/eval.yaml` + `evals/cases/`:评估用例模板。

## 常见误区

- 只测一个样例 → 需要多维度、多输入覆盖。
- 用"看起来对"做判断 → 需要具体 rubric 和通过标准。
- 跳过对抗测试 → 注入和边界是必须覆盖的维度。