我用 AI 编程半年,这 5 个 Prompt 技巧让我效率翻倍
不是 AI 不行,是你的提示词太随便了。
半年前,我第一次用 AI 辅助编程的时候,体验非常糟糕。
那时候我让 AI 帮我写一个「用户管理系统」,它给我生成了 800 行代码,里面掺杂了 PHP、Python 和莫名其妙的伪代码,接口命名毫无规律,错误处理完全没有。我当时心想:这玩意儿也就这样吧。
转折点发生在一个深夜。我加班改一个数据迁移脚本,困得不行,决定再给 AI 一次机会。但这次,我没有像平时那样随口说一句「帮我写个脚本」,而是花了 5 分钟,认真写了一段 Prompt。
结果 AI 直接给出了一个能跑的脚本,还自动处理了我没考虑到的边界情况。那个脚本我稍微改了两行就直接上线了。
从那以后,我开始认真研究 Prompt Engineering,发现这玩意儿跟学编程语言一样,有它自己的「语法」和「最佳实践」。
今天把这半年踩过的坑、总结的技巧,一次性分享出来。
技巧一:给 AI 一个「角色剧本」
很多人写 Prompt 上来就是「帮我写一个排序算法」,这跟找一个路人说「帮我修一下车」差不多——对方根本不知道你是要换轮胎还是换发动机。
最基础的优化:给 AI 分配一个角色。
以写一个 Python 数据处理脚本为例,我的 Prompt 是这样写的:
1你是一位有 10 年经验的 Python 后端工程师,擅长数据处理和性能优化。 2你的代码风格:简洁、类型安全、有完善的错误处理。 3请帮我完成以下任务。 4
然后才开始说具体需求。这个简单的角色设定,让 AI 的代码质量提升了一个档次。它不会再写 try...except: pass 这种敷衍的错误处理,不会用 list 处理百万级数据,也不会起 a、b、temp 这种变量名。
为什么有效?
大语言模型本质上是在做「下一个 token 预测」。当你给它一个角色设定时,你实际上是在限定它的输出空间——「有 10 年经验的 Python 工程师」这个角色,会激活它训练数据中更高质量、更专业的代码模式。
我的经验是:角色设定越具体,输出质量越高。与其说「你是一个程序员」,不如说「你是一个专注后端开发的 Python 工程师,熟悉 Django 和 FastAPI,代码风格偏好函数式编程」。
技巧二:用「约束」代替「要求」
这是我踩过最大的坑。
刚开始用 AI 的时候,我总是说「代码要简洁」、「性能要好」、「要安全」。这些词对 AI 来说太模糊了——什么叫「简洁」?10 行算简洁还是 100 行算简洁?
后来我学会了一个技巧:把抽象的要求转化为具体的约束。
对比一下:
❌ 差的 Prompt:
1帮我写一个用户登录接口,要安全、性能好 2
✅ 好的 Prompt:
1帮我写一个用户登录接口,要求: 21. 使用 bcrypt 加密密码,工作因子 ≥ 12 32. JWT token 过期时间设置为 2 小时,支持 refresh token 43. 连续 5 次登录失败后锁定账号 15 分钟 54. 登录日志记录到独立的 log 表,包含 IP、User-Agent、时间戳 65. 密码长度 8-64 位,必须包含大小写字母和数字 76. 使用 Redis 做登录状态缓存,key 格式为 "session:{user_id}" 87. 接口响应时间需要控制在 200ms 以内,数据库查询不超过 3 次 9
第二个 Prompt 生成的代码,我可以直接拿去 code review。因为每一个要求都是可验证的,AI 没法糊弄。
核心原则:能量化的就量化,不能量化的就举例。
比如「代码要清晰」这种要求,可以改成「函数命名遵循 PEP 8,每个函数不超过 30 行,关键逻辑要有注释」。
技巧三:分而治之,别让 AI 一口吃成胖子
有一次我让 AI「帮我写一个完整的电商系统」,结果它给我生成了一个 main.py 文件,里面混杂了路由、数据库操作、业务逻辑、模板渲染……整整 2000 行,完全没法维护。
从那以后,我学会了「拆」。
我的做法是:把大任务拆成小任务,一个一个喂给 AI,每个任务之间保持上下文连贯。
具体来说,我是这样拆一个「用户模块」的:
第一步:先让 AI 设计数据结构
1请设计一个用户模块的数据模型,包括: 2- 用户表(users) 3- 用户资料表(user_profiles) 4- 登录日志表(login_logs) 5请用 SQLAlchemy ORM 定义,给出字段类型、索引、外键关系。 6
第二步:确认模型后,再写 CRUD
1基于刚才定义的数据模型,帮我写以下接口: 21. 用户注册(POST /api/users/register) 32. 用户登录(POST /api/users/login) 43. 获取用户信息(GET /api/users/{user_id}) 5使用 FastAPI 框架,Pydantic 做请求验证。 6
第三步:加上认证和权限
1在已有的接口基础上,添加 JWT 认证中间件。 2要求: 3- 除了 /register 和 /login,其他接口都需要验证 token 4- 在请求上下文中注入当前用户信息 5- token 过期返回 401,权限不足返回 403 6
这样分步来,每一步 AI 的输出都是可控的,你可以随时 review、调整,不会出现一个 2000 行的怪兽文件。
关键技巧:保持上下文。 每一步都引用上一步的结果,让 AI 知道「我们在延续之前的工作」。比如「基于刚才定义的数据模型」这个短语,就是给 AI 一个上下文锚点。
技巧四:给 AI 看「你想要的」和「你不想要的」
这是我从一个开源项目里学到的技巧——在 Prompt 里同时提供正面示例和反面示例。
比如,让 AI 写一个错误处理模块:
1请帮我写一个全局异常处理中间件。 2 3✅ 你想要的风格(参考): 4```python 5class AppException(Exception): 6 def __init__(self, code: int, message: str, detail: dict = None): 7 self.code = code 8 self.message = message 9 self.detail = detail or {} 10 11@app.exception_handler(AppException) 12async def app_exception_handler(request, exc): 13 return JSONResponse( 14 status_code=exc.code, 15 content={ 16 "code": exc.code, 17 "message": exc.message, 18 "detail": exc.detail 19 } 20 ) 21
❌ 你不想要的风格(请避免):
1try: 2 # 业务逻辑 3 pass 4except: 5 pass # 吞掉异常,不记录日志 6
1 2有了正反示例后,AI 的输出质量明显更稳定。它不会写出「吞掉异常」这种反模式,也不会使用 [`print()`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.print.md) 代替日志。 3 4这个技巧在处理代码风格一致性的时候特别有用。比如你想让 AI 写的代码和你已有的代码风格一致,直接把现有代码片段贴进去作为示例。 5 6--- 7 8## 技巧五:迭代式对话,把 AI 当结对编程伙伴 9 10很多人把 AI 当「一次性代码生成器」——输入需求,拿到代码,复制粘贴,完事。 11 12但真正高效的使用方式是 **「迭代式对话」**。把它当成一个坐在你旁边的结对编程伙伴。 13 14我现在的 workflow 是这样的: 15 16
第一轮:我描述需求,AI 给出方案 第二轮:我 review 方案,指出问题,AI 改进 第三轮:我确认方案,AI 生成代码 第四轮:我 review 代码,指出 bug 或优化点,AI 修复 第五轮:我让 AI 写单元测试 第六轮:我让 AI 写文档和使用说明
1 2一个真实的例子。上周我需要写一个数据导出功能,支持 CSV 和 Excel 两种格式。 3 4**第一轮:** 5> 我需要一个数据导出功能,支持 CSV 和 Excel。数据量可能达到 10 万行。请先给出设计方案,不要直接写代码。 6 7AI 给出了方案:使用策略模式,流式写入避免内存溢出,Excel 用 openpyxl 的 write_only 模式。 8 9**第二轮:** 10> 方案不错,但考虑一下:如果导出过程中出错怎么办?需要支持断点续传吗?另外 Excel 的 10 万行会不会有性能问题? 11 12AI 补充了错误处理和分批写入方案。 13 14**第三轮:** 15> 好的,按这个方案写代码吧。注意:导出 Excel 时每 5000 行写一次,避免内存溢出。 16 17AI 生成了完整的代码,包括接口层、服务层、导出策略。 18 19**第四轮:** 20> 代码里有个问题:`csv_writer` 没有处理 BOM 头,在 Excel 里打开中文会乱码。另外 `export_excel` 方法里 `cell.value` 赋值没有做类型转换,数字类型会丢失。 21 22AI 修复了这些 bug。 23 24**第五轮:** 25> 写单元测试,覆盖以下场景:空数据导出、大数据量导出、异常数据(包含特殊字符)、导出中断恢复。 26 27一套完整的测试用例就出来了。 28 29整个过程大概 20 分钟,如果纯手写,我估计要 2-3 个小时。 30 31--- 32 33## 总结:我的 Prompt 模板 34 35最后分享一个我常用的 Prompt 模板,可以直接复制使用: 36 37
你是一位 [角色描述],具备以下技能:[技能列表]。
任务
[一句话描述任务目标]
具体要求
- [可量化的约束 1]
- [可量化的约束 2]
- [可量化的约束 3]
技术栈
- 语言:[Python 3.11+]
- 框架:[FastAPI]
- 数据库:[PostgreSQL]
输出格式
请先给出设计方案和思路,确认后再写代码。
注意事项
- 代码需要包含完整的错误处理
- 关键逻辑要有注释
- 不要使用已废弃的 API
1 2--- 3 4## 写在最后 5 6回顾这半年,我最大的感受是:**AI 编程工具不是「银弹」,而是「倍增器」——它放大的是你的能力,而不是替代你的能力。** 7 8你用得好,它能帮你处理 80% 的体力活,让你把精力集中在架构设计和业务理解上。你用不好,它生成的代码可能比你自己写的还烂,你还得花更多时间去 debug。 9 10核心就一句话:**把 AI 当成一个聪明但没经验的实习生来带。** 你给它的指令越清晰、约束越具体、反馈越及时,它产出的代码就越靠谱。 11 12如果你也在用 AI 辅助编程,欢迎在评论区分享你的 Prompt 技巧,一起交流进步 👇 13 14--- 15 16> 本文参与 [AI 编程](https://juejin.cn/tag/AI%20%E7%BC%96%E7%A8%8B) 话题征文。 17
《我用 AI 编程半年,这 5 个 Prompt 技巧让我效率翻倍》 是转载文章,点击查看原文。