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