掌握与 AI 高效沟通的艺术,编写高质量的 Prompt
Prompt 工程是设计和优化与 AI 交互的提示词(Prompt)的艺术和科学。好的 Prompt 能够:
在 Vibe Coding 中,Prompt 质量直接影响:
❌ 模糊的 Prompt:
做个登录功能
✅ 清晰的 Prompt:
创建一个用户登录功能:
- 输入:邮箱和密码
- 验证:检查邮箱格式和密码强度
- 认证:使用 JWT token
- 返回:token 和用户信息
- 错误处理:显示友好的错误信息
将复杂需求分解为清晰的结构:
创建一个电商购物车系统,包含以下模块:
【模块 1:商品管理】
- 添加商品到购物车
- 从购物车移除商品
- 更新商品数量
- 清空购物车
【模块 2:价格计算】
- 计算商品总价
- 应用折扣
- 计算运费
- 显示最终总价
【模块 3:数据持久化】
- 保存到本地存储
- 同步到服务器
- 恢复购物车状态
给 AI 足够的上下文信息:
项目背景:
- 这是一个 Node.js + Express 项目
- 使用 MongoDB 数据库
- 已有用户认证系统
需求:
在现有项目基础上,添加商品管理模块
明确说明限制和要求:
创建一个文件上传功能:
✅ 允许:jpg, png, gif(最大 5MB)
❌ 不允许:可执行文件、脚本文件
🔒 安全要求:
- 验证文件类型(不能仅依赖扩展名)
- 使用安全的文件名
- 限制上传频率
通过示例展示期望的输出:
创建一个 API,返回用户列表。
返回格式示例:
{
"success": true,
"data": [
{
"id": 1,
"name": "张三",
"email": "zhangsan@example.com",
"createdAt": "2025-01-10T10:00:00Z"
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 100
}
}
在 Cursor 中,选中代码后再提问:
选中这段代码:
def calculate_total(items):
return sum(item['price'] for item in items)
然后提问:
"在这个函数中添加数量计算,总价 = 单价 × 数量"
参考 src/models/User.js 的结构,
创建 Product.js 模型,包含类似的字段和方法
项目结构:
backend/
├── models/ # 数据模型
├── routes/ # 路由
├── controllers/ # 控制器
└── middleware/ # 中间件
frontend/
├── components/ # 组件
├── pages/ # 页面
└── utils/ # 工具函数
请在这个结构下创建用户管理功能
技术栈:
- 后端:Node.js + Express + TypeScript
- 数据库:PostgreSQL + Prisma ORM
- 前端:React + TypeScript + Tailwind CSS
- 认证:JWT
请使用这些技术创建用户认证系统
第一步:基础功能
创建一个待办事项列表,可以添加和删除任务
第二步:添加功能
在刚才的基础上,添加:
- 标记任务为完成
- 按状态筛选(全部/未完成/已完成)
第三步:优化体验
添加:
- 任务优先级(高/中/低)
- 任务分类
- 搜索功能
第一次生成后:
生成的代码可以工作,但请优化:
1. 添加错误处理
2. 改进代码结构
3. 添加注释
继续优化:
性能有问题,请优化:
- 使用索引优化数据库查询
- 添加缓存
- 优化前端渲染
模块 1:
先实现用户认证模块:
- 注册
- 登录
- 登出
模块 2(基于模块 1):
在认证模块基础上,添加:
- 密码重置
- 邮箱验证
- 记住我功能
创建一个 [功能名称] 功能:
【功能描述】
[详细描述功能]
【技术要求】
- 使用 [技术栈]
- 遵循 [代码规范]
- 包含 [测试/文档等]
【输入输出】
输入:[描述输入]
输出:[描述输出]
【错误处理】
- [错误情况 1]:处理方式
- [错误情况 2]:处理方式
示例:
创建一个用户注册功能:
【功能描述】
用户可以通过邮箱和密码注册账户
【技术要求】
- 使用 Node.js + Express
- 遵循 RESTful API 规范
- 包含单元测试
【输入输出】
输入:{ email, password, name }
输出:{ success, user, token }
【错误处理】
- 邮箱已存在:返回 409 错误
- 密码太弱:返回 400 错误
- 服务器错误:返回 500 错误
修复这个 Bug:
【问题描述】
[描述问题现象]
【错误信息】
[粘贴错误信息]
【相关代码】
[选中或粘贴相关代码]
【期望行为】
[描述应该发生什么]
【环境信息】
- 操作系统:[OS]
- 运行环境:[Node/Python 版本等]
重构这段代码:
【当前代码】
[选中要重构的代码]
【重构目标】
- 提高可读性
- 提高可维护性
- 提高性能
- 遵循 [设计模式/原则]
【要求】
- 保持功能不变
- 添加注释
- 添加测试
优化这个功能的性能:
【当前实现】
[描述或选中当前代码]
【性能问题】
- [问题 1]:当前耗时 X 秒
- [问题 2]:内存占用过高
【优化目标】
- 响应时间 < 100ms
- 内存占用 < 50MB
【约束】
- 不能改变 API 接口
- 必须保持功能完整性
为这个功能编写测试:
【功能代码】
[选中要测试的代码]
【测试要求】
- 单元测试
- 覆盖正常情况和边界情况
- 覆盖错误情况
- 使用 [测试框架]
【测试用例】
1. [测试用例 1]
2. [测试用例 2]
3. [测试用例 3]
让 AI 扮演特定角色:
你是一个经验丰富的全栈开发工程师,擅长:
- 后端:Node.js, Python
- 前端:React, Vue
- 数据库:PostgreSQL, MongoDB
请帮我设计一个可扩展的微服务架构。
引导 AI 逐步思考:
创建一个用户管理系统,请按以下步骤思考:
1. 首先分析需要哪些数据模型
2. 然后设计 API 接口
3. 接着实现业务逻辑
4. 最后添加错误处理和验证
请逐步展示你的思考过程。
让 AI 比较不同方案:
比较两种实现方式:
方案 A:使用 JWT token 进行认证
方案 B:使用 session 进行认证
请分析:
- 各自的优缺点
- 适用场景
- 安全性对比
- 性能对比
并给出推荐。
将复杂任务分解:
分步骤实现这个功能:
步骤 1:创建数据模型
步骤 2:创建 API 路由
步骤 3:实现业务逻辑
步骤 4:添加验证和错误处理
步骤 5:编写测试
请逐步完成,每完成一步让我确认。
明确约束,引导方向:
创建一个 REST API,要求:
✅ 必须:
- 遵循 RESTful 规范
- 使用 HTTP 状态码
- 返回 JSON 格式
- 包含错误处理
❌ 不能:
- 使用 GET 请求修改数据
- 返回敏感信息(如密码)
- 缺少输入验证
🎯 目标:
- 代码清晰易读
- 易于测试
- 易于扩展
提供多个示例:
创建一个数据验证函数,参考以下示例:
示例 1:邮箱验证
输入:"user@example.com" → 输出:true
输入:"invalid-email" → 输出:false
示例 2:密码强度
输入:"StrongPass123!" → 输出:true
输入:"weak" → 输出:false
请创建类似的验证函数。
初始 Prompt(模糊):
做个博客系统
优化后的 Prompt(清晰):
创建一个个人博客系统:
【功能需求】
1. 文章管理
- 创建、编辑、删除文章
- 支持 Markdown 格式
- 文章分类和标签
2. 用户系统
- 注册、登录
- 个人资料管理
3. 前端展示
- 文章列表(分页)
- 文章详情
- 搜索功能
【技术栈】
- 后端:Node.js + Express + MongoDB
- 前端:React + Next.js
- 样式:Tailwind CSS
【要求】
- RESTful API
- 响应式设计
- SEO 优化
第一版 Prompt:
创建一个待办事项应用
第二版(添加功能):
在待办事项应用基础上,添加:
- 任务优先级
- 任务分类
- 截止日期
第三版(优化体验):
优化用户体验:
- 添加拖拽排序
- 添加筛选和搜索
- 添加数据持久化
第四版(完善功能):
完善功能:
- 添加任务提醒
- 添加任务统计
- 添加导出功能
整体需求:
创建一个电商平台
分解为模块:
模块 1:
创建商品管理模块:
- 商品 CRUD
- 商品分类
- 商品搜索
模块 2:
创建购物车模块:
- 添加商品
- 更新数量
- 计算总价
模块 3:
创建订单模块:
- 创建订单
- 订单状态管理
- 订单历史
在发送 Prompt 前,检查:
❌ 错误:
做个登录
✅ 正确:
创建用户登录功能,包含邮箱密码验证、JWT token 生成、错误处理
❌ 错误:
添加这个功能
✅ 正确:
在现有的用户管理系统中,添加密码重置功能
❌ 错误:
优化这个代码
✅ 正确:
优化这个函数的性能,目标是响应时间从 500ms 降到 100ms 以下
❌ 错误:
创建一个完整的电商平台,包含用户、商品、订单、支付、物流...
✅ 正确:
第一步:创建用户认证模块
第二步:创建商品管理模块
...
优秀的 Prompt 工程需要:
记住:好的 Prompt = 好的代码! 🚀