我用 AI 编程半年,这 5 个 Prompt 技巧让我效率翻倍

我用 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 处理百万级数据,也不会起 abtemp 这种变量名。

为什么有效?

大语言模型本质上是在做「下一个 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. 可量化的约束 1

  2. 可量化的约束 2

  3. 可量化的约束 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) 话题征文。
相关推荐
Scott9999HH9 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
PNP Robotics9 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR1239 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
AI云海10 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰11 小时前
[爬虫]-Urllib
爬虫·python
玉鸯12 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
weixin_4462608513 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao13 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest