主题
Prompt Engineering(提示词工程)
Prompt Engineering 是研究如何设计高质量提示词,让 LLM 给出更准确、更有用回答的学科。
为什么 Prompt 很重要
同样的模型,不同的 Prompt,效果天差地别:
差 Prompt:
"写一个登录功能"
好 Prompt:
"用 Spring Boot 3 + Spring Security + JWT 实现登录功能。
要求:
1. 密码使用 BCrypt 加密
2. Token 有效期 24 小时
3. 包含刷新 Token 机制
4. 添加参数校验和错误处理
5. 给出完整的 Controller、Service、DTO 代码"核心原则
1. 具体胜过模糊
❌ "写一篇技术文章"
✅ "写一篇关于 Redis 缓存的技术文章,
面向有 1-2 年经验的 Java 后端工程师,
包含原理、使用场景、代码示例(Java),
字数约 1500 字"2. 提供上下文
告诉 LLM 你的背景、目标、约束:
我是前端新手,正在学习 Vue 3。
请解释什么是响应式,用简单的比喻,
并给出一个 Counter 的例子。3. 指定输出格式
请以 JSON 格式返回结果,包含以下字段:
- title: 文章标题
- summary: 摘要(50 字以内)
- tags: 标签数组4. 分步思考(Chain of Thought)
让 LLM 先思考,再给答案,可以大幅提升复杂任务的效果:
请一步一步思考,然后回答:
问题:一个 10 人的团队,需要多少个会议室?也可以直接在 Prompt 里加:
Let's think step by step.常用技巧
1. Few-Shot Prompting
给几个例子,让 LLM 照着做:
请将以下句子分类为"正面"或"负面":
例子 1:这个产品太好用了!→ 正面
例子 2:质量很差,不推荐 → 负面
现在分类:
这个性价比不错,值得购买2. 角色扮演
让 LLM 扮演某个角色,回答会更专业:
你是一位有 10 年经验的后端架构师。
请从性能、可维护性、扩展性三个维度,
评审以下代码,并给出改进建议。3. 输出约束
回答要求:
- 使用 Markdown 格式
- 代码用 Java 17 语法
- 每个函数不超过 30 行
- 不包含个人信息4. 让 LLM 提问
当你提供的需求不够清晰时,让 LLM 先提问:
以下是我的需求:[描述需求]
如果你需要更多信息才能给出最佳方案,
请先向我提问,不要急于回答。Prompt 模板
代码生成模板
你是一位专业的 {语言} 开发者。
任务:{具体任务描述}
要求:
- 使用 {框架/库}
- 包含完整的错误处理
- 添加必要的注释
- 遵循 {规范/风格}
输出格式:先解释设计思路,再给出代码。代码审查模板
请审查以下代码,从以下几个维度:
1. 正确性(有无 Bug)
2. 安全性(有无漏洞)
3. 性能(有无优化空间)
4. 可读性(命名、结构)
代码:
```{语言}
{代码内容}请按严重程度排序问题,并给出修改建议。
### 技术学习模板我想学习 {技术名称}。
我的背景:{已有技能} 学习目标:{学会后能做什么} 时间预算:
请给我制定一个学习计划, 包含:核心概念、实践项目、推荐资源。
## 常见错误
| 错误 | 说明 |
|------|------|
| 提示词太短 | LLM 不知道你想要什么 |
| 一次问太多问题 | 容易遗漏,分步问效果更好 |
| 没有指定格式 | 返回格式不符合预期 |
| 没有给例子 | Few-Shot 可以大幅提升效果 |
| 直接相信输出 | 务必人工验证 |
## Prompt 测试与迭代
写 Prompt 是一个迭代过程:第 1 版:写出基础 Prompt → 测试结果 第 2 版:加入格式约束 → 测试结果 第 3 版:加入 Few-Shot 例子 → 测试结果 第 4 版:优化角色和上下文 → 最终结果
建议用电子表格记录不同 Prompt 的效果,找到最优版本。
## 相关资源
- [OpenAI Prompt Engineering Guide](https://platform.openai.com/docs/guides/prompt-engineering)
- [LangChain Prompt Templates](https://python.langchain.com/docs/modules/model_io/prompts/)
- [Awesome Prompt Engineering](https://github.com/f/awesome-chatgpt-prompts)