Prompt Engineering
基本原则
1. 明确指令
清晰描述你希望模型做什么,而不是不希望做什么。
text
❌ 不要写太长
✅ 用 3 句话总结以下文章2. 提供上下文
给模型足够的背景信息来理解任务:
text
你是一位有 10 年经验的 Python 后端工程师。
请审查以下代码的性能问题,重点关注数据库查询优化。3. 指定输出格式
明确告诉模型你期望的输出结构:
text
请以 JSON 格式返回结果,包含以下字段:
- name: 产品名称
- price: 价格(数字)
- description: 一句话描述常用技巧
Few-shot Learning(少样本学习)
提供几个示例,让模型学习你期望的模式:
text
将以下英文翻译为中文,保持技术术语不翻译:
输入:The API returns a JSON response with pagination support.
输出:该 API 返回一个支持 pagination 的 JSON response。
输入:Use middleware to handle authentication.
输出:Chain of Thought(思维链)
引导模型逐步推理,而不是直接给出结论:
text
请一步一步分析这个 bug 的原因:
1. 首先,描述代码的预期行为
2. 然后,指出实际行为与预期的差异
3. 分析可能的原因
4. 给出修复建议Role Playing(角色扮演)
设定特定角色来约束模型的行为风格:
text
你是一位严格的代码审查者。对于每一处问题,请指出:
- 问题类型(bug / 性能 / 可读性 / 安全)
- 严重程度(高 / 中 / 低)
- 具体修改建议分隔符
使用分隔符清晰标记输入的不同部分:
text
请总结以下文章的要点:
---
(文章内容)
---
要求:
- 不超过 5 个要点
- 每个要点一句话System Prompt 设计
System Prompt 用于设定模型的行为边界和人格,在整个对话中持续生效。
结构模板
text
# 角色
你是 [角色描述]
# 能力
- 能力 1
- 能力 2
# 限制
- 不做什么
- 不回答什么
# 输出格式
[格式要求]设计要点
- 角色设定要具体("资深 React 开发者"比"程序员"更好)
- 限制条件要明确(避免模型越界)
- 输出格式要统一(保证下游系统能解析)
常见反模式
| 反模式 | 问题 | 改进 |
|---|---|---|
| 指令模糊 | "帮我改改这段代码" | 明确改什么、改成什么样 |
| 上下文过载 | 一次塞入太多信息 | 分步骤提供,逐步深入 |
| 期望读心 | 不说清楚输出格式 | 明确格式、长度、风格要求 |
| 负面指令 | "不要用 for 循环" | "使用 map/filter 等函数式方法" |
| 忽略迭代 | 一次就要完美结果 | 先生成初稿,再迭代优化 |
高级模式
Self-Consistency(自一致性)
对同一个问题生成多个回答,取最一致的结果。适用于推理类任务。
Tree of Thought(思维树)
让模型探索多个推理路径,评估每条路径的可行性,选择最优方案。适用于复杂规划任务。
ReAct(推理 + 行动)
结合推理和工具调用的框架:
思考:我需要查找用户最近的订单
行动:调用 getOrders(userId) API
观察:返回了 3 条订单记录
思考:最近的订单是 3 月 15 日的
回答:您最近的订单是 3 月 15 日下单的...