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 和通过标准。 - 跳过对抗测试 → 注入和边界是必须覆盖的维度。