跳到主要内容

Prompt Engineering 进阶技巧

资深 Prompt 工程全指南

1. 高质量 Prompt 的完整结构

角色设定(Role):你是谁,有什么能力和经验
任务说明(Task):需要做什么,目标是什么
背景信息(Context):相关上下文和限制
输入数据(Input):具体的内容
输出格式(Format):JSON / Markdown / 列表 / 表格
约束条件(Constraints):哪些要做,哪些不要做
示例(Examples):few-shot 样例

高质量 System Prompt 示例

你是一个资深的 React 代码审查尓,有超过 10 年的上线项目经验。

你的职责:
- 密切关注代码质量、性能和安全性
- 只评论最重要的 2-3 个问题,每个问题用 100 字内阐明
- 对每个问题提供具体的修改建议和代码示例
- 评论用 Markdown 格式输出

严重问题:内存泄漏、XSS、并发风险
中等问题:不必要重渲染、过度设计、缺少错误处理
轻微问题:风格不一致、重复代码

2. Chain-of-Thought 及其变体

Zero-Shot CoT

Q: 23 个員工每人工资 8500 元,每月总工资是多少?让我们一步一步思考。

Few-Shot CoT(提供推理示例)

示例:
Q: 5 个苹果,吃了3个,还剩几个?
A: 初始有 5 个苹果。吃掉了3个,5 - 3 = 2。所以还剩 2 个。

现在解决:
Q: 23 个員工每人工资 8500 元,每月总工资是多少?
A: 总工资 = 23 x 8500 = ...

Tree-of-Thoughts(多路探索)

请展开 3 个不同的解决思路,然后对每个思路进行优劣分析,最后选择最佳方案并详细展开。

考虑维度:可行性、实施成本、预期效果。

3. 达到编垆的输出控制

JSON 输出控制

JSON 格式输出结果,不要添加任何其他文字:

{
"intent": "用户意图",
"entities": ["实体列表"],
"sentiment": "positive|negative|neutral",
"confidence": 0.95
}

结构化输出模板

请按如下格式回复,远局一行也不要输出:

## 分析结果
**核心问题:**[1-2]
**影响范围:**[1-2]

## 解决方案
1. [100字内]
2. [100字内]

## 推荐方案
[50字内,说明选择理由]

4. 上下文管理技巧

对话历史压缩

[历史对话摘要:
- 用户希望完成一个 React 在线商城设计
- 已确定技术栈:React + TypeScript + TailwindCSS
- 已设计完成首页和商品详情页
- 待完成:购物车和结账页面]
请继续帮助设计购物车页面。

分片加载分析

文档总共 50 页,每次只分析第 X-Y 页的内容。
当上一笔分析结束后,输入「继续」就会分析下一笔。

5. 提升模型输出质量的技巧

角色扮演法

模拟一位拥有 20Kubernetes 运维经验的亓家。
以专家的身份回答:直接指出最常见的坑和额外注意事项。

对比法

以对比表格的形式比较 React 18React 17 的差异。
包含:功能点、性能影响、迁移难度、适用场景。

递进式详细

先用 2 句概述核心关键点。
然后递进展开:
- 实现原理
- 代码示例
- 常见坏呓
- 最佳实践

6. 语境干预技巧

限制模型行为

严格要求:
1. 只使用我提供的代码库和文档中的 API,不要化鱼其他 API
2. 如果不确定就说「我不确定」,而不是编造答案
3. 代码示例必须是可运行的完整代码,不要使用占位符

强制指定格式

回答这个问题时务必遵循下列规则,否则回答无效:
- 第一行必须是 TLDR:用一句话概括
- 第二段展开详细解释
- 最后一行是行动建议

7. 测试与优化 Prompt 的方法

系统性评估

构建测试集:
1. 正常案例:10 个标准输入
2. 边界案例:5 个极端情况
3. 对抗性输入:3 个尝试误导的输入

评指标:输出准确性、格式合规性、违禁率

A/B 测试

对比两种 Prompt:
- 版本 A:直接说任务
- 版本 B:加上角色设定和示例
各运行 20 次,对比平均输出质量

8. 高级技巧

综合运用

步骤 1(角色设定):你是一个 SQL 优化专家
步骤 2(任务分解):分析这个查询的性能问题
- 先识别常见问题(全表扫描、缺少索引等)
- 再给出修改建议
- 最后提供优化后的 SQL
步骤 3(示例):提供一个类似的优化案例

自我评估准则

输出之前,对照以下标准自我检查:
1. 是否直接回答了用户的问题?
2. 是否提供了具体的代码示例?
3. 是否提到了可能的常见坏呓?
4. 格式是否符合要求?
如果以上任一项不满足,重新生成。

9. 高频资深面试题

  • Prompt 注入攻击如何防御?
    • 将系统指令和用户输入明确分隔
    • 输入内容进行转义和过滤
    • 配置输出可解释性,异常输出可监测
    • 敏感操作需二次确认机制
  • Few-shot 和 Fine-tuning 怎么选择?
    • 数据量少且任务模式短期内频繁变化 -> Few-shot
    • 需要专业风格、领域抓词、特定输出格式 -> Fine-tuning
    • 两者并不互斥,微调后的模型用 few-shot 进一步提升
  • 如何评估 Prompt 的质量?
    • 准确性:输出是否正确回答了问题
    • 一致性:相同输入输出是否稳定
    • 完整性:输出是否覆盖了关键信息
    • 格式合规性:输出是否符合指定格式
  • 为什么 Temperature 高时输出更润着但可能不准确?
    • Temperature 控制 softmax 后的概率分布晌散程度
    • 高 Temperature:概率分布更平坦,小概率的 token 也有机会被选
    • 低 Temperature:分布更集中,和确定性如 0 时总是选最高概率 token