Prompt工程实战
本文为「AI 辅助编程实战指南」第3篇,完整系列持续更新中。
前言
Prompt 工程是 AI 辅助编程最底层的技能。不管用 Copilot、Cursor 还是 Claude Code,Prompt 的质量直接决定了 AI 输出的上限。本篇用大量实战案例,拆解 5 大核心 Prompt 方法,帮你从”能用 AI”升级到”用好 AI”。
本篇学完你将掌握:
- 5 大核心 Prompt 方法的原理、实战案例和使用时机
- 如何组合使用多种方法,写出高质量的生产级 Prompt
- 3 套可直接复用的 Prompt 模板
一、角色设定——给 AI 一个专业身份
大多数人用 AI 写代码时,直接甩一句”帮我写一个 XXX 接口”。问题是,AI 不知道你是谁、项目是什么级别、代码该用什么风格——它只能猜。
角色设定的核心思路:给 AI 一个明确的专业身份,让它以该身份的视角来生成代码。
1.1 基础版:单角色设定
1 | 请扮演拥有 10 年经验的 Spring Boot 架构师,帮我设计一个用户认证服务, |
效果对比:
| 维度 | 不设角色 | 设定角色后 |
|---|---|---|
| 代码风格 | 通用模板风 | 符合企业级架构规范 |
| 依赖选择 | 随机推荐 | 优先选择成熟稳定的库 |
| 安全考虑 | 基本不考虑 | 自动加入安全最佳实践 |
1.2 进阶版:角色 + 项目上下文
1 | 请扮演资深 Python 后端工程师,当前项目背景: |
💡 建议:角色设定越具体,AI 输出越贴合需求。”资深工程师”不如”10 年经验的 Spring Boot 架构师”,后者能让 AI 生成更符合该身份水准的代码。
1.3 在 IDE 工具中固化角色
大部分 AI 编程工具支持通过项目规则文件自动加载角色设定,不用每次手动输入:
| 工具 | 配置文件 | 示例 |
|---|---|---|
| Cursor | .cursorrules |
写入角色描述和项目规范 |
| Claude Code | CLAUDE.md |
项目根目录放置,每次对话自动加载 |
| Qoder | AGENTS.md |
团队共享的项目角色和规范 |
| Copilot | .github/copilot-instructions.md |
GitHub 仓库级指令 |
二、少样本示例(Few-shot)——让 AI 模仿你的风格
AI 最擅长”照葫芦画瓢”。给它 2-3 个输入输出示例,它就能模仿你的代码风格、注释格式、文档结构,大幅减少返工。
2.1 代码风格模仿
1 | 请按照以下格式为函数生成 JSDoc 文档: |
2.2 API 响应格式模仿
1 | 我们项目的 API 统一响应格式如下: |
💡 提示:Few-shot 最适合统一团队代码风格的场景。把你团队的代码规范写成 2-3 个示例,AI 生成的代码就能直接符合团队标准,省掉大量格式调整。
三、思维链(Chain-of-Thought)——让 AI 一步步思考
对于复杂的逻辑推理类任务(算法设计、架构决策、Bug 排查),直接让 AI 给答案容易出错。要求它”一步步思考”,准确率能提升 40% 以上。
3.1 算法类任务
1 | 请解决这个算法问题:给定一个整数数组和一个目标值,找出数组中所有 |
3.2 架构决策类任务
1 | 我们的电商系统需要引入缓存层,目前日均请求量 500 万, |
3.3 Bug 排查类任务
1 | 我的 FastAPI 接口在高并发下偶尔返回 500 错误,错误日志如下: |
💡 提示:思维链的关键是”把思考过程外显化”。你不需要 AI 直接给答案,而是让它展示推理过程,这样你能检查它的逻辑是否正确,及时纠偏。
四、明确约束条件——给 AI 画好边界
AI 最大的问题是”太有创意”——你让它写个接口,它可能给你加了你不需要的功能、用了你不熟悉的库、写了你不需要的注释。明确约束条件,就是给 AI 画好”不能越界”的边界。
4.1 技术约束
1 | 请用 Python 3.11+ 和 FastAPI 0.100+ 实现一个商品查询接口,要求: |
4.2 输出约束
1 | 请分析以下三个 Web 框架的优缺点,用 Markdown 表格输出: |
4.3 约束的反面案例
| 反面 Prompt | 问题 | 改进后 |
|---|---|---|
| “帮我写一个登录接口” | 没指定语言、框架、安全要求 | “用 FastAPI 实现 JWT 登录接口,密码用 bcrypt 加密,限制每分钟 5 次请求” |
| “优化这段代码” | 没说优化什么(速度?内存?可读性?) | “优化这段代码的查询性能,目标是响应时间从 500ms 降到 100ms 以内” |
| “帮我重构” | 没说重构目标、范围 | “将 UserController 中的 5 个方法拆分为 UserService + UserController,遵循单一职责原则” |
五、结构化输出——让 AI 的输出直接用
AI 的输出如果是一坨混乱的文字,你还得花时间整理。要求结构化输出,让结果拿来就能用。
5.1 代码块输出
1 | 请实现一个 Redis 分布式锁工具类,要求: |
5.2 JSON 输出
1 | 请为我们的用户管理系统生成 API 接口定义,用 JSON Schema 格式输出: |
5.3 对比表格输出
1 | 请对比 Redis、Memcached、本地缓存三种方案,用表格输出: |
六、组合实战:5 大方法的黄金搭配
实际使用中,5 大方法很少单独使用,通常是组合搭配。下面给出 3 套经过验证的 Prompt 模板。
6.1 模板一:新功能开发
1 | 【角色设定】请扮演资深 Java 后端工程师,熟悉 Spring Boot 3.0 和 DDD 架构。 |
6.2 模板二:代码审查
1 | 【角色设定】请扮演拥有 10 年经验的安全审计专家,熟悉 OWASP Top 10。 |
6.3 模板三:技术文档生成
1 | 【角色设定】请扮演技术文档工程师,擅长将复杂技术概念用简洁的语言表达。 |
七、踩坑记录:Prompt 写得模糊,AI 给你”创意发挥”
现象:
让 AI “帮我写一个用户管理模块”,结果它生成了一个包含 15 个接口、引入了 3 个你没听说过的第三方库、还加了你不需要的 WebSocket 实时通知功能的”超大模块”。
原因:
Prompt 太模糊,AI 会按照自己的理解”自由发挥”。没有约束条件时,AI 倾向于生成”尽可能多的功能”而非”你真正需要的功能”。
解决方案:
给 Prompt 加三层约束:
- 技术约束:指定语言、框架版本、不允许引入额外依赖
- 范围约束:明确”只需要 XX 功能,不要 YY”
- 输出约束:指定代码结构和文件数量
避坑建议:
写完 Prompt 后,问自己一个问题:”如果把这个 Prompt 给另一个人类开发者,他能准确理解我要什么吗?”如果人都看不懂,AI 更看不懂。
总结与回顾
| 核心方法 | 一句话总结 | 最佳使用时机 |
|---|---|---|
| 角色设定 | 给 AI 专业身份,提升输出质量 | 所有场景(基础中的基础) |
| 少样本示例 | 提供范例让 AI 模仿 | 统一代码风格、文档格式 |
| 思维链 | 要求 AI 一步步思考 | 算法、架构、Bug 排查 |
| 明确约束 | 给 AI 画好边界 | 避免 AI 自由发挥 |
| 结构化输出 | 让输出拿来就能用 | 代码、JSON、表格 |
延伸阅读
本文为「AI 辅助编程实战指南」第3篇,完整系列持续更新中。