前置知识
阅读本文前,建议先了解:
- 01-Prompt 的定义与工作原理 - 理解Prompt原理
- 02-有效 Prompt 的构建方法 - 掌握构建方法
一、概述
本章介绍Prompt engineering的进阶技巧,包括OpenAI官方建议和一些高级技术。
二、OpenAI官方六大建议
来自OpenAI的Prompt最佳实践:
2.1 使用清晰具体的指令
❌ "关于太阳你知道什么?"
✅ "请解释太阳的构成成分,以及它产生能量的原理"
2.2 让模型扮演特定角色
"你是一位经验丰富的律师,请审查以下合同条款"
"作为物理学家,请解释这个现象"
2.3 使用分隔符清晰区分不同部分
请总结以下文章:
===
文章内容:{article}
===
要求:用3句话概括要点
2.4 指定完成任务所需的步骤
请按照以下步骤分析这段文本:
1. 识别文章的主题
2. 提取关键论点
3. 总结作者的观点
4. 评价文章的说服力
2.5 提供示例(Few-shot)
判断以下文本的情感:
文本:我今天升职了!太开心了! → 正面
文本:这个产品太差了,浪费钱 → 负面
文本:还行,中规中矩 → 中性
文本:终于完成了这个项目 →
2.6 控制输出的长度
"用100字以内解释..."
"用3个要点总结..."
"不超过5句话..."
三、进阶技巧
3.1 思维链(Chain of Thought, CoT)
让LLM”思考”后再给出答案,可以显著提升推理能力。
❌ 直接问:
"小明有5个苹果,小红给了他3个,小明吃掉了2个,小明还剩多少个苹果?"
✅ 引导思考:
"小明有5个苹果,小红给了他3个,小明吃掉了2个,小明还剩多少个苹果?
请一步步思考,先算什么,再算什么,最后答案是多少?"
原理
通过让LLM”展示思考过程”,它会更仔细地推理,减少计算错误。
3.2 零样本思维链(Zero-shot CoT)
只需加一句话,就能激发LLM的推理能力:
问题:小明有5个苹果...
答案:请一步步思考这个问题,然后给出答案。
3.3 少样本提示(Few-shot prompting)
给几个示例,让LLM学习模式:
请判断文本是否为垃圾邮件:
示例:
"恭喜您中奖了!" → 垃圾邮件
"请问明天会议几点?" → 正常邮件
"点击此处领取现金大奖" → 垃圾邮件
判断以下内容:
"您的订单已发货,预计明天送达" → ?
3.4 角色扮演技巧
你是一个{角色},请用{风格}回答{问题}
例如:
"你是一位毒舌的美食评论家,用讽刺幽默的风格点评以下餐厅..."
"你是一位温柔的初中老师,用通俗易懂的语言解释这个概念..."
3.5 限制输出格式
用JSON格式返回:
{
"姓名": "...",
"年龄": "...",
"职业": "..."
}
用Markdown表格返回:
| 项目 | 内容 |
|------|------|
| 名称 | ... |
| 价格 | ... |
四、温度参数(Temperature)
温度参数控制输出的随机性:
| 温度 | 效果 | 适用场景 |
|---|---|---|
| 0.0-0.2 | 确定性强,稳定 | 代码生成、事实问答 |
| 0.5-0.7 | 平衡 | 一般对话 |
| 0.8-1.0 | 创意性强,多样 | 头脑风暴、写故事 |
【低温度示例】
Prompt: "解释量子计算"
结果:准确但保守的回答
【高温度示例】
Prompt: "解释量子计算"
结果:可能包含更多创意解释,但可能不够准确
使用建议
- 事实性任务:temperature = 0 或 0.1
- 创意任务:temperature = 0.7-0.9
- 一般对话:temperature = 0.3-0.5
五、Top-p 参数
与Temperature类似,控制输出的多样性:
- Top-p = 1.0:考虑所有可能的词
- Top-p = 0.9:只考虑概率最高的90%的词
- Top-p = 0.1:只考虑概率最高的10%的词
一般只调一个
Temperature和Top-p通常只调一个,建议使用Top-p。
六、常见问题和应对
6.1 LLM总是”跑题”
✅ 解决方案:强调任务范围
"只回答以下问题,不要扩展讨论其他内容"
6.2 回答太长/太短
✅ 解决方案:明确字数限制
"用不超过100字回答"
"至少用3个段落详细说明"
6.3 回答格式不对
✅ 解决方案:给格式模板
"用以下JSON格式返回,不要有其他内容:
{
"result": true/false,
"reason": "原因"
}"
七、总结
- OpenAI六大建议:清晰指令、角色扮演、分隔符、步骤、示例、长度控制
- 思维链CoT:让LLM展示推理过程
- Few-shot:通过示例学习模式
- 温度参数:控制随机性vs确定性
- 限制输出:明确格式和字数
八、延伸阅读
- 01-Prompt 的定义与工作原理 - 基础原理
- 02-有效 Prompt 的构建方法 - 构建方法
- Function Call - 让LLM调用外部工具