今天不学语法。今天学的是这门课里最实用的一课:怎么把需求说给 AI 听。
你已经在用 AI 写代码了,但大部分人的问法是这样的——「帮我写个通讯录」。五个字,AI 收到的信息只有"通讯录"三个字,剩下的全靠猜:你是初学者还是老手?数据存哪?要哪些功能?界面长什么样?每个没说的细节,AI 都会自己挑一个默认答案。猜对了算运气好,猜错了就是"AI 写的代码不对"。
今天教你一套固定的说法,把需求一次说清楚,AI 写出来的代码十有八九直接能用。学完你会有个直观的对比:问得好,5 分钟出活;问得差,2 小时扯皮。
先做个实验:两种问法,两种结果
在 Cursor 里分别复制下面两段提示词,看看 AI 的产出差多少。
第一段,一句话需求:
帮我写个通讯录。
第二段,把话说全:
我是 Python 初学者,第一次写通讯录程序。
请帮我写一个通讯录程序:支持添加联系人(姓名 + 电话)、查看全部联系人、按姓名搜索。
数据保存到 contacts.json 文件,程序关闭再打开数据还在。
用函数封装每个功能,代码加中文注释,尽量简单,控制在 80 行以内。
跑一遍对比,你会看得非常清楚:第二段生成的代码,功能、结构、注释都贴着你说的来,几乎可以直接用。第一段生成的东西,是 AI 按自己的想象写的——它不坏,但它不是你要的那个东西。
这里先摆正一个观念:AI 写代码的能力已经很强,但"读懂人心"的能力是 0。它只会按你写出来的字面意思行动,没写 = 不知道。所以高质量的提问,就是把"你脑子里的需求"原样搬进提示词里,让 AI 不用猜。
一次说清四件事
"把话说全"不是让你写作文。你只需要交代四件事,按固定顺序:
背景 / 角色 → 目标 → 输入输出 → 约束
这个顺序是有讲究的:先自我介绍,再谈要做什么,然后谈细节,最后谈要求,和人与人沟通的顺序一样,AI 顺着理解最省力。下面一项一项拆开讲。
要素一:我是谁(背景 / 角色)
第一句告诉 AI 你是谁、水平如何。这决定它用多深的词、多花哨的写法:
| 你说 | AI 的反应 |
|---|---|
| 我是 Python 零基础初学者 | 用最基础的写法,每行加注释,不装高深 |
| 我在准备面试,需要完整规范的写法 | 补全边界判断、异常处理、类型标注 |
| 我上过一个月 Python 课,会函数和字典 | 跳过基础解释,直接用你会的技术 |
新手最典型的坑,就是不说水平。AI 默认按"有一定基础"写,代码里冒出 lambda、列表推导式、dataclass,你根本看不懂,更别提维护。把身份说清楚,AI 才知道该用几成功力。
写法示例:
我是 Python 零基础初学者,只学过变量、列表、字典、函数,还没学过类。
"初学者"不是丢人的标签,是为了让 AI 不给你挖坑——维护不了的高级代码等于没用。背景可以写得更细:学过哪些语法、项目是给别人看还是自己练手、要不要中文注释。后面还能接一句"请用我学过的语法写",进一步约束。
要素二:要做出什么(目标)
第二句告诉 AI 最终要交付一个什么东西,一句话说清"程序的名字 + 核心用途"。
目标具体到什么程度算够?有个判断标准:把这句话念给另一个同学听,他能说清楚"这程序是干嘛的",就算合格。看看模糊和清晰的区别:
| 模糊的目标 | 清晰的目标 |
|---|---|
| 写个成绩的东西 | 写一个成绩管理系统,能录入学生成绩 |
| 搞个记账 | 写一个记账本程序,能记录每天的收入和支出 |
| 做个计算器 | 写一个命令行计算器,支持加减乘除四种运算 |
写法示例:
目标是:写一个成绩管理系统,能录入学生成绩。
目标是"做什么",不是"怎么做"——具体技术属于后面的约束要素,别混在一起写。目标也别贪多,一个程序聚焦一件事:想把成绩管理和记账本合体,AI 写出来的代码复杂度会暴涨,新手改不动。目标写清楚后,AI 生成的代码开头注释里一般会有一句程序简介,读它就能验证 AI 有没有理解错你的目标。
要素三:喂什么、吐什么(输入输出)
第三句告诉 AI 用户会输入什么、程序要输出什么。这是最容易漏、也最容易让 AI 写偏的一项。拆成两个问题问自己:
| 问题 | 例子(成绩管理系统) |
|---|---|
| 输入什么?用户怎么操作? | 输入学生姓名和成绩;菜单选择:录入/查看/退出 |
| 输出什么?屏幕上要显示什么? | 打印每个学生的姓名和成绩;打印平均分 |
提示词里最好把操作流程一条条列出来,用 1. 2. 3.,AI 就能把菜单、函数、分支都对齐你的预期:
程序的交互流程:
1. 用户选择功能:1 录入成绩,2 查看全部,3 退出
2. 录入时依次输入姓名、成绩
3. 查看时打印所有学生的「姓名:成绩」
4. 退出时程序结束
写法示例:
输入:用户从键盘输入姓名和成绩。
输出:屏幕上打印每个学生的姓名和成绩,并打印平均分。
只写"输入"不写"输出",AI 可能把结果显示成别的样子(比如只存不打印)。交互流程用数字列表写,比一大段散文更容易让 AI 逐条实现。再想想"程序跑起来用户先看到什么"——通常是一个菜单,AI 默认会做菜单,但你写了流程后它做得更准确。
要素四:有哪些限制(约束)
第四句告诉 AI 有哪些限制和偏好。这是"定制化"的来源:同样写一个程序,约束不同,产出完全不同。常见的约束分几类:
| 约束类型 | 例子 |
|---|---|
| 数据存储 | 数据保存到 JSON 文件 / 用字典列表存内存 |
| 代码风格 | 用函数封装每个功能 / 用类实现 / 加中文注释 / 尽量简单 |
| 环境限制 | 只用 Python 标准库,不要装第三方包 |
| 界面形式 | 命令行黑窗口版,不要图形界面 |
| 规模要求 | 控制在 80 行以内 / 分成多个文件 |
新手常见心理:觉得"约束"是刁难,不加约束让 AI 自由发挥。恰恰相反——不加约束,AI 就按它自己的默认喜好写(可能用你完全没学过的库),加了约束,代码才真正归你所有。
写法示例:
约束:只允许使用 Python 标准库(不许用第三方库),用函数封装每个功能,
代码加中文注释,尽量简单,适合零基础阅读。
"尽量简单"这四个字对新手特别重要:写出来看不懂的代码,等于废代码。约束也要现实:别同时要求"非常简单"又"支持 10 万条数据高性能",AI 会精神分裂。存储方式直接影响程序行为,务必明确:数据要不要"关掉程序再打开还在",存文件还是存内存,一句话的事。
四要素合体:一张模板卡走天下
四要素的顺序固定为背景 → 目标 → 输入输出 → 约束。完整模板抄进笔记,这就是你的"模板卡",以后每个项目都用它:
【背景 / 角色】我是 <水平描述>,学过 <学过的内容>。
【目标】请帮我写一个 <程序名>:<一句话用途>。
【输入输出】
输入:<用户输入什么>。
输出:<屏幕显示什么>。
交互流程:
1. <步骤一>
2. <步骤二>
【约束】数据存 <存储方式>;<代码风格要求>;<其他要求>。
一份填好的完整示例(通讯录,直接可用):
【背景 / 角色】我是 Python 初学者,只学过变量、列表、字典、函数。
【目标】请帮我写一个通讯录程序:能添加联系人、查看全部、按姓名搜索。
【输入输出】
输入:用户从键盘选择功能并输入姓名、电话。
输出:屏幕上打印联系人列表或搜索结果。
交互流程:
1. 显示菜单:1 添加联系人,2 查看全部,3 按姓名搜索,4 退出
2. 添加时输入姓名和电话
3. 搜索时输入姓名,打印匹配的联系人
4. 退出时程序结束
【约束】数据保存到 contacts.json 文件,程序重启后数据还在;用函数封装每个功能;
代码加中文注释;只用标准库;尽量简单,适合零基础阅读。
这个模板周五做图书管理小程序时直接复用,只改程序名、字段和功能列表。
第一次写不完美没关系,四要素本质是"检查清单",写完对照四个框看有没有漏。模板抄进笔记后不要每次重新发明——复制 → 填空,这才是高手效率。提示词里的中文标点(【】、:)AI 都能看懂,但保持一致,别混用。
发出去之前,花一分钟自查
四要素不是写完就完,发出去之前花 1 分钟过一遍这个清单,每项都能打勾,提示词才合格:
| 检查项 | 自问自答 | 打勾标准 |
|---|---|---|
| 背景/角色 | 我告诉 AI 自己是初学者了吗? | 有"我是初学者/学过什么"这类话 |
| 目标 | AI 知道程序叫什么、干嘛用吗? | 有一句"写一个 XX 程序:能 XX" |
| 输入输出 | 用户输什么、屏幕显示什么都写了吗? | 有"输入:"和"输出:"两句 |
| 交互流程 | 菜单有几项、顺序对不对? | 用 1. 2. 3. 逐条列出 |
| 约束 | 存储方式、代码风格、注释要求写了吗? | 至少写了存储方式和"加注释" |
| 细节 | 有没有需要我拍板的选项(如删除按序号)? | 所有"AI 会猜"的地方我都给了答案 |
最后一步:自己当 AI 读一遍。把提示词从头读一遍,凡是"这里 AI 不知道我在想什么"的地方,就是需要补的地方。
还要避开三个最常见的提问误区:
| 误区 | 表现 | 后果 | 怎么破 |
|---|---|---|---|
| 挤牙膏 | 先发一句"帮我写个程序",AI 问一句你答一句 | 一来一回十几轮,效率极低 | 一次把四要素全给全,AI 不需要追问 |
| 术语轰炸 | 堆砌"ORM""MVC""异步"自己都不懂的名词 | AI 以为你会,生成你完全看不懂的代码 | 用大白话描述需求,术语交给 AI 翻译 |
| 复制粘贴不检查 | 从别处抄来的模板没改程序名直接发 | 生成的是别人的需求 | 发之前把【目标】那句话重读一遍 |
自查清单练熟了要内化成习惯——以后不列清单,脑子里自动过一遍。四要素里最容易漏的是"约束"和"交互流程",因为你觉得"这还用说?"——但 AI 真的不知道。补信息的原则:只补和这次需求相关的,别把无关的背景(比如"我昨天吃了火锅")写进去,信息噪音同样会干扰 AI。
随堂练习
练习一:用四要素让 AI 写"成绩管理系统"
把下面这段话的括号补全,然后复制给 AI(Cursor 或任意 AI 工具):
【背景 / 角色】我是 ____,只学过 ____。
【目标】请帮我写一个成绩管理系统:____。
【输入输出】输入:____;输出:____。
【约束】数据用 ____ 存;____;加注释;尽量简单。
提示:参考答案方向——背景"Python 初学者";目标"录入 3 个学生成绩并算平均分";输入输出"输入姓名和成绩 → 输出每个学生成绩和平均分";约束"用字典列表存储、用函数封装"。先自己填空,再和同桌的对比。
练习二:把第 1~4 周的需求用四要素重写(今天的核心练习)
- 翻出第 1~4 周里所有"让 AI 写的代码"的记录(比如猜数字、计算器、学生信息管理……)。
- 挑 2 个程序,用四要素模板重新让 AI 写一遍。
- 对比新旧两版:哪个更好读?哪个功能更符合你的预期?把结论写进笔记。
进阶题 ★:同一需求,两种问法,看 AI 表现
- 先只发一句"帮我写个通讯录",看 AI 生成什么,记下它的功能点。
- 再用上面的完整模板发一遍,对比两版代码的功能差异。
- 数一数:第二版比第一版多了哪些功能?把清单写下来,你会直观理解"四要素值多少钱"。
让 AI 当你的提问教练
进阶用法:拿不准自己写得好不好,把提示词交给 AI 检查。
我是零基础初学者。下面是我准备发给 AI 的提示词:
<粘贴你的提示词>
请用"需求描述四要素"(背景/角色、目标、输入输出、约束)帮我检查:
1. 哪一项信息缺失或模糊
2. 缺了它会有什么后果
3. 帮我补全成一段完整提示词
请用大白话回答,尽量简短。
报错速查
这里的"报错"不是代码报错,而是"AI 写出来的东西不对劲",多半都能在四要素里找到原因:
| 遇到的问题 | 什么意思 | 怎么办 |
|---|---|---|
| AI 生成的代码用了你没学过的写法(lambda、推导式) | 背景里没说"我是初学者" | 补上【背景/角色】要素,加"只用基础语法"约束 |
| AI 写的功能和你要的不一样 | 目标/输入输出没写清,AI 在猜 | 用四要素检查清单逐条对照,缺哪补哪 |
| 程序关掉后数据就没了 | 没写存储约束,AI 默认存内存 | 加约束"数据保存到 xxx.json 文件,重启后还在" |
| AI 用了一个你没见过的第三方库,装不上 | 没加"只用标准库"约束 | 加约束"只允许使用 Python 标准库,不要第三方库" |
| 代码没有注释,读不懂 | 没写"加中文注释"要求 | 加约束"每行关键代码加中文注释" |
明天的第二板斧
今天这节课,信息量不大,含金量不低。四要素——背景/角色、目标、输入输出、约束——从今天起就是你写提示词的默认格式。一句话总结今天的观念:AI 编程的核心不是 AI 多强,而是你会不会问;没写 = 不知道。
明天学第二板斧:报错三步法 + 追问修改。今天解决的是"怎么让 AI 一次写对",明天解决"写错了怎么修、想改怎么改"。四要素管前 80%,三步法和追问补后 20%,两节课合起来才是完整闭环。周五的图书管理小程序,会把这两天的本事全部用上。