第 1 章 / 共 12 章

Prompt:把需求表达清楚

Prompt 是 AI 学习路线的第一章。

很多人接触 AI,都是从“问一句话”开始。但真正想把 AI 用到学习、开发、测试、写作和自动化中,只会随口提问还不够。Prompt 的核心能力,是把一个模糊想法整理成模型能理解、能执行、能检查的任务说明。

这一章要解决一个基础问题:

如何把需求讲清楚,让 AI 稳定地产出有用结果。

学完这一章,你应该能做到三件事:

  • 把模糊想法拆成清晰任务
  • 给 AI 提供必要背景、约束和输出格式
  • 让 AI 在信息不足时主动标注问题或假设

1. Prompt 的本质#

Prompt 可以理解成写给 AI 的任务说明书。

一条好用的 Prompt,通常要回答这些问题:

  • 你希望 AI 扮演什么角色
  • 你要 AI 完成什么任务
  • 你提供了哪些背景材料
  • 你希望它按什么步骤处理
  • 你希望它输出什么格式
  • 有哪些边界和限制
  • 信息不足时应该怎么处理
  • 输出前需要检查哪些内容

如果这些信息缺失,AI 就会依赖猜测。猜对时,输出看起来很聪明;猜错时,就会出现跑题、漏点、幻觉、格式混乱、代码不可用等问题。

所以,Prompt 学习的第一目标是:减少 AI 的猜测空间。

2. 普通提问和工程化 Prompt 的差异#

普通提问通常像这样:

帮我写一个接口测试用例。

这个问题太宽泛。AI 无法确定接口是什么、业务是什么、测试范围是什么、输出格式是什么,也无法判断你更关心正常流程、异常流程、边界场景,还是安全风险。

工程化 Prompt 会更具体:

你是一名接口测试工程师。
请根据下面的接口说明生成接口测试用例。
要求:
1. 按正常场景、异常场景、边界场景分类。
2. 每条用例包含:用例标题、前置条件、请求参数、预期结果。
3. 输出 Markdown 表格。
4. 如果接口说明缺少关键信息,请在最后列出“待确认问题”。
接口说明:
...

这类 Prompt 的特点很明确:角色清楚、任务清楚、约束清楚、输出清楚,遇到缺口也有处理方式。

3. 基础 Prompt 模板#

初学阶段可以先记住这个结构:

你是:[角色]
背景:[上下文信息]
任务:[希望 AI 完成什么]
输入材料:
[粘贴需求、代码、日志、接口说明、数据样例等]
要求:
1. [具体要求一]
2. [具体要求二]
3. [具体要求三]
输出格式:[Markdown / JSON / 表格 / 分点说明]
限制条件:[需要避免什么、必须保留什么、范围到哪里为止]
信息不足时:[先提问 / 列出假设 / 标注不确定项]
输出前请自检:[需要检查的事项]

这个模板适合大多数基础任务。刚开始练习时,可以先照着填空;熟悉之后,再按任务类型调整。

示例:

你是一名后端开发工程师。
背景:我正在开发一个用户登录接口,使用 FastAPI 和 PostgreSQL。
任务:请帮我设计这个登录接口的实现思路。
要求:
1. 说明接口入参和返回值。
2. 说明密码校验流程。
3. 说明 token 生成逻辑。
4. 列出常见错误场景。
输出格式:用小标题分段说明。
限制条件:不要直接生成完整项目代码,只给出接口设计和关键伪代码。
信息不足时:请列出需要我确认的问题。
输出前请自检:检查是否覆盖正常登录、密码错误、账号不存在、账号禁用、参数缺失等场景。

4. Prompt 的七个关键要素#

4.1 角色#

角色用于告诉 AI 从什么专业角度处理问题。

常见角色包括:

  • 后端开发工程师
  • 前端开发工程师
  • 测试工程师
  • 产品经理
  • 架构师
  • 运维工程师
  • 技术写作者
  • 代码审查者

角色越贴近任务,输出越容易对齐。

示例:

你是一名资深测试工程师,请根据下面的需求生成测试点。

4.2 背景#

背景用于说明当前任务发生在什么环境里。

背景可以包括:

  • 项目类型
  • 技术栈
  • 业务目标
  • 当前问题
  • 已经尝试过的方法
  • 错误日志
  • 约束条件

示例:

背景:这是一个 Cloudflare Workers 项目,使用 Hono 框架。当前接口在本地可以访问,但部署后返回 500。

背景越具体,AI 越容易判断问题边界。

4.3 任务#

任务要尽量具体,并使用明确动作词。

模糊任务:

帮我优化一下。

清晰任务:

请帮我检查下面这段代码是否存在性能问题,并给出可以直接修改的建议。

常用动作词包括:

  • 分析
  • 生成
  • 总结
  • 对比
  • 检查
  • 重写
  • 提取
  • 设计
  • 调试
  • 评审

一个好任务,通常能让 AI 明确知道“要处理什么”和“处理到什么程度”。

4.4 输入#

输入是 AI 完成任务所需的材料。

常见输入包括:

  • 需求文档
  • 接口说明
  • 代码片段
  • 错误日志
  • 数据样例
  • 用户反馈
  • 设计稿说明

如果输入较长,建议用明确分隔符包起来:

以下是错误日志:
```log
...
```

这样可以降低模型把说明文字和材料混在一起的概率。

4.5 输出格式#

输出格式决定结果是否方便使用。

常见格式包括:

  • Markdown
  • 表格
  • JSON
  • YAML
  • 代码块
  • 分点清单
  • 测试用例表
  • PR 描述

示例:

请用 Markdown 表格输出,列包括:问题、影响、建议、优先级。

当输出要进入程序处理时,后续还要学习 Structured Output。Prompt 阶段先做到格式清楚即可。

4.6 约束#

约束用于控制任务边界。

常见约束包括:

  • 不要改动业务逻辑
  • 不要引入新依赖
  • 不要输出无关解释
  • 不要生成完整代码
  • 保留原有接口字段
  • 输出控制在 800 字以内
  • 使用简体中文

示例:

限制条件:不要引入新的第三方库,优先使用项目里已有工具函数。

约束写得越清楚,结果越容易直接使用。

4.7 自检#

自检用于让 AI 在输出前检查结果。

示例:

输出前请检查:
1. 是否覆盖正常、异常、边界场景。
2. 是否存在重复用例。
3. 是否有无法从需求中确认的假设。

自检无法保证结果一定正确,但可以明显减少低级遗漏。

5. 常见任务 Prompt 示例#

5.1 需求分析#

你是一名产品经理和测试分析师。
请分析下面的需求说明,输出:
1. 核心业务目标
2. 主要用户流程
3. 功能点清单
4. 异常场景
5. 待确认问题
要求:
- 不要补充需求中没有出现的功能。
- 如果需要推断,请标注为“推断”。
- 输出使用 Markdown 小标题。
需求说明:
...

5.2 接口测试用例#

你是一名接口测试工程师。
请根据下面的接口说明生成测试用例。
要求:
1. 覆盖正常场景、异常场景、边界场景。
2. 每条用例包含:用例标题、请求参数、前置条件、预期结果。
3. 输出 Markdown 表格。
4. 如果字段规则不明确,请在最后列出待确认问题。
接口说明:
...

5.3 代码审查#

你是一名代码审查工程师。
请审查下面这段代码,优先关注:
1. 可能导致运行错误的问题
2. 安全风险
3. 边界条件
4. 可维护性问题
5. 缺失的测试场景
输出格式:
- 先列出问题,按严重程度排序。
- 每个问题包含:位置、原因、影响、修改建议。
- 如果没有明显问题,请说明剩余风险。
代码:
...

5.4 错误日志分析#

你是一名后端排障工程师。
请根据下面的错误日志分析问题。
要求:
1. 提取关键错误信息。
2. 给出最可能的 3 个原因。
3. 说明每个原因的验证方法。
4. 给出下一步排查命令或检查点。
限制条件:
- 不要直接下结论。
- 明确区分已知事实和推测。
错误日志:
...

5.5 学习笔记整理#

你是一名技术写作者。
请把下面的学习笔记整理成一篇结构清晰的博客草稿。
要求:
1. 保留原始观点。
2. 补齐必要的过渡句。
3. 使用二级标题组织结构。
4. 语言自然,不要太像教科书。
5. 最后给出一个简短总结。
原始笔记:
...

6. Prompt 写作中的常见问题#

6.1 任务太大#

问题示例:

帮我做一个 AI 项目。

这种任务范围太大。可以先拆成更小的目标:

请先帮我设计一个 AI 项目助手的功能清单,只输出第一版 MVP 范围。

6.2 背景太少#

问题示例:

这个报错怎么解决?

更清楚的写法:

这是一个 Node.js 项目,运行 npm run build 时报错。下面是 package.json、命令输出和错误日志。请帮我分析最可能原因,并给出验证步骤。

6.3 输出格式不明确#

问题示例:

帮我总结一下。

更清楚的写法:

请用 5 条要点总结,每条不超过 40 字,最后补一条“下一步建议”。

6.4 允许模型自由发挥过多#

问题示例:

随便写点优化建议。

更清楚的写法:

请只基于我提供的代码提出建议,不要假设项目里有其他模块。

6.5 没有处理信息不足#

问题示例:

直接给我方案。

更清楚的写法:

如果信息不足,请先列出最多 5 个关键问题;如果可以基于现有信息给初版方案,请明确写出假设。

7. Prompt 迭代方法#

Prompt 通常需要通过使用反馈来迭代。可以按这个流程优化:

  1. 先写一个基础版本
  2. 查看 AI 输出是否跑题
  3. 找出缺失的背景、约束或格式要求
  4. 补充输入材料
  5. 加入示例
  6. 加入自检规则
  7. 保存成可复用模板

示例:

第一版:

帮我写测试用例。

第二版:

请根据下面的登录需求写测试用例,覆盖正常、异常、边界场景。

第三版:

你是一名测试工程师。
请根据下面的登录需求生成测试用例。
要求:
1. 按正常场景、异常场景、边界场景分类。
2. 每条用例包含:标题、前置条件、操作步骤、预期结果。
3. 输出 Markdown 表格。
4. 如果需求缺少字段规则,请列出待确认问题。
登录需求:
...

第三版已经具备明确角色、任务、范围、格式和缺口处理方式,更适合复用。

8. Prompt 练习清单#

可以按下面的顺序练习:

  1. 写一个总结文章的 Prompt
  2. 写一个整理会议纪要的 Prompt
  3. 写一个分析错误日志的 Prompt
  4. 写一个生成接口测试用例的 Prompt
  5. 写一个代码审查 Prompt
  6. 写一个需求拆解 Prompt
  7. 写一个博客改写 Prompt
  8. 写一个让 AI 先提问再回答的 Prompt
  9. 写一个带输出格式约束的 Prompt
  10. 写一个带自检规则的 Prompt

每个练习都可以保存三个版本:

  • 初始版本
  • 优化版本
  • 最终模板

这样能直观看到 Prompt 质量的提升过程。

9. 阶段验收标准#

学完这一章,可以用下面的问题检查自己:

  • 我能不能把一个模糊需求拆成清晰任务?
  • 我能不能给 AI 提供足够背景?
  • 我能不能明确要求输出格式?
  • 我能不能限制 AI 做无关发挥?
  • 我能不能让 AI 标注不确定信息?
  • 我能不能把好用的 Prompt 沉淀成模板?

如果这些问题大多数都能做到,说明 Prompt 阶段已经基本合格。

10. 本章总结#

Prompt 的核心是把任务、背景、约束和输出讲清楚。

一条可复用的 Prompt,建议至少包含:

  • 角色
  • 背景
  • 任务
  • 输入材料
  • 输出格式
  • 限制条件
  • 信息不足时的处理方式
  • 输出前自检规则

Prompt 是后续 Structured Output、Tool Calling、RAG、Agent、MCP、Skill 和 Subagent 的基础。前面讲不清楚,后面就很难稳定执行。

这一章的目标很朴素:把“我想让 AI 做什么”说到足够清楚、足够具体、足够可检查。