5.1.5 怎么和 AI 好好说话——Prompt 工程核心原则
一句话破题
好的 Prompt 三要素:清晰(AI 能理解)、具体(减少歧义)、结构化(便于执行)。
核心原则
原则一:清晰表达意图
❌ 模糊:"帮我优化这个代码"
(优化什么?性能?可读性?安全性?)
✅ 清晰:"这个函数运行太慢了,请优化性能,
目前处理 1000 条数据需要 5 秒,希望降到 1 秒以内"原则二:提供充足上下文
❌ 缺乏上下文:"写一个用户表"
✅ 上下文完整:
"用 Prisma 写一个用户表:
- 使用 PostgreSQL 数据库
- 需要支持邮箱登录
- 用户有基本信息(昵称、头像)
- 需要记录创建和更新时间"原则三:明确约束条件
❌ 无约束:"做一个登录页面"
✅ 有约束:
"做一个登录页面:
- 使用 Next.js App Router
- 样式用 Tailwind CSS
- 需要表单验证(邮箱格式、密码长度 8-20)
- 调用 /api/auth/login 接口"Prompt 结构模板
一个完整的开发类 Prompt 通常包含:
markdown
## 任务
[一句话说明要做什么]
## 背景
[相关的上下文信息]
## 技术约束
- [使用什么技术栈]
- [需要遵循什么规范]
## 输入/输出
- 输入:[接收什么数据]
- 输出:[返回什么结果]
## 示例
[如果有的话,提供参考示例]
## 注意事项
[容易出错的地方]实战示例
需求:创建一个文章管理的 API
markdown
## 任务
创建文章 CRUD 的 API 路由
## 背景
这是一个博客系统的后端接口,前端使用 React,
需要支持文章的创建、读取、更新和删除
## 技术约束
- Next.js 16 App Router
- 使用 Prisma ORM
- 数据库是 PostgreSQL
- 返回 JSON 格式
## 接口定义
- GET /api/posts - 获取文章列表(支持分页)
- GET /api/posts/[id] - 获取单篇文章
- POST /api/posts - 创建文章
- PUT /api/posts/[id] - 更新文章
- DELETE /api/posts/[id] - 删除文章
## 数据结构
文章包含:id, title, content, authorId,
createdAt, updatedAt
## 注意事项
- 创建和更新需要验证必填字段
- 删除要返回 204 状态码
- 列表接口默认每页 10 条常见误区
误区 1:一次说太多
❌ "帮我做一个完整的博客系统,包括文章管理、用户系统、
评论功能、搜索、RSS..."
✅ 分步骤:先做文章 CRUD,验证通过后再加其他功能误区 2:期望 AI 读心
❌ "按照通常的做法来就行"
(AI 不知道你认为的"通常"是什么)
✅ 明确指定:使用 RESTful 风格,遵循项目现有的代码规范误区 3:不给反馈
❌ 收到代码后直接使用,发现问题才说"你给的不对"
✅ 收到代码后检查,具体说明哪里不符合预期:
"创建文章时,如果标题为空应该返回 400 错误,
但现在返回的是 500"提升 Prompt 质量的技巧
- 先写后审:写完 Prompt 先读一遍,看自己是否能理解
- 假设 AI 是新人:把 AI 当作刚入职的同事,需要详细说明背景
- 提供示例:能给代码示例就给,AI 从示例中学习最快
- 迭代优化:第一次不完美很正常,根据结果调整 Prompt
