1. 什么是提示词工程? #
提示词工程就是写清楚、写准确地告诉大模型你想要什么,让模型产出更符合预期的结果。它关注两件事:
- 你说什么(内容和结构)
- 你怎么说(格式和约束)
2. 前置知识 #
2.1 角色说明(常见三类) #
- system:设定总体角色和风格(例:你是严谨的律师)
- user:用户问题或任务描述
- assistant:模型的回答
2.2 变量注入(f-string 示例) #
# 定义提示模板
template = "你是{role},请用{style}回答:{question}"
# 使用 format 注入变量
prompt = template.format(role="科普作者", style="通俗易懂", question="什么是黑洞?")
# 打印生成的提示词
print(prompt)3. 核心原则(记住这四点) #
3.1 清晰明确 #
- 说清任务、对象、格式、限制,避免含糊词(如“简单介绍一下”)。
# 不清晰的提示 vague = "介绍一下AI" # 清晰的提示:角色、长度、对象 clear = "你是科普作者,用80字介绍什么是AI,面向中学生" # 打印对比 print("模糊示例:", vague) print("清晰示例:", clear)
3.2 结构化(分点、分步骤) #
# 结构化提示:拆成步骤
prompt = """请分步骤回答:
1) 列出AI在医疗的3个应用
2) 每个应用给出一句好处
3) 最后用1句话总结风险"""
# 打印提示词
print(prompt)3.3 上下文与示例(Few-shot) #
# Few-shot 示例:给参考答案让模型模仿
prompt = """将中文翻译成英文,保持自然语气:
示例1:
输入:今天天气很好
输出:The weather is nice today.
示例2:
输入:人工智能正在改变世界
输出:AI is transforming the world.
现在翻译:
输入:提示词工程很重要
输出:"""
# 打印提示词
print(prompt)3.4 约束与格式(字段/字数/风格) #
# 约束输出为 JSON,限制字段
prompt = """请以 JSON 输出:
{
"title": "字符串",
"summary": "50字内摘要",
"keywords": ["关键词1","关键词2","关键词3"]
}
主题:量子计算科普"""
# 打印提示词
print(prompt)4. 常用提示模板(可运行示例) #
4.1 角色 + 任务 + 格式 + 示例 #
# 角色定义
role = "你是一位数据分析师"
# 任务描述
task = "分析下方销售数据,给出三个趋势、三个发现、两条建议"
# 格式要求
fmt = """请输出 JSON:{
"trends": ["趋势1","趋势2","趋势3"],
"findings": ["发现1","发现2","发现3"],
"advice": ["建议1","建议2"]
}"""
# 示例(可选)
example = """示例:
输入:1月100,2月120,3月140
示例输出:{
"trends": ["销量逐月上升"],
"findings": ["2-3月增速略放缓"],
"advice": ["关注增速变化","评估活动效果"]
}"""
# 组合提示词
data = "1月50,2月80,3月60,4月90"
prompt = f"{role}\n{task}\n{fmt}\n{example}\n请分析:{data}"
# 打印提示词
print(prompt)4.2 思维链(Chain-of-Thought) #
# 思维链:要求分步骤推理
prompt = """请分步骤思考并回答:
1) 列出问题的关键信息
2) 分析可能原因或路径
3) 给出结论
4) 用一句话总结
问题:如何提高电商转化率?"""
# 打印提示词
print(prompt)4.3 Few-shot 翻译(模仿示例) #
# Few-shot 翻译模板
prompt = """翻译成英文,保持礼貌:
示例:输入:谢谢你的帮助。输出:Thank you for your help.
现在翻译:输入:很高兴认识你。输出:"""
# 打印提示词
print(prompt)4.4 格式控制(字段约束) #
# 限定字段与类型
prompt = """请用 JSON 返回:
{
"title": "不超过15字",
"summary": "不超过60字",
"key_points": ["要点1","要点2","要点3"]
}
主题:AI 在教育的应用"""
# 打印提示词
print(prompt)5. 实战示例 #
5.1 内容总结 #
# 准备要总结的文本
text = "人工智能正用于医疗、金融、交通,提升效率并创造新模式。"
# 构造提示词
prompt = f"请用中文总结下面内容,50字以内:{text}"
# 打印提示词(实际使用时传给 LLM)
print(prompt)5.2 数据问答 #
# 准备简单数据
sales = [120, 150, 90, 200]
# 构造提示词
prompt = f"""你是商业分析师,回答问题:
数据:{sales}
问题:哪个月销量最高?给出20字理由。"""
# 打印提示词
print(prompt)5.3 翻译与风格控制 #
# 待翻译文本
cn_text = "请将这句话翻译成英文,并保持礼貌语气:谢谢你的帮助。"
# 构造提示词
prompt = f"翻译任务:要求英语,礼貌,简洁。文本:{cn_text}"
# 打印提示词
print(prompt)6. 迭代优化流程(四步走) #
1) 写出第一版提示词; 2) 加角色和格式; 3) 加示例和约束; 4) 调整语气和细节。
# 不同版本的提示词
versions = [
"写一段关于AI的介绍。",
"你是科普作者,用100字介绍AI是什么。",
"你是科普作者,用100字介绍AI是什么,举1个生活例子。",
"你是科普作者,用100字介绍AI是什么,举1个生活例子,最后给1条学习建议。"
]
# 打印各版本,模拟迭代
for i, v in enumerate(versions, 1):
print(f"版本{i}: {v}\n")7. 常见错误与修正 #
7.1 过于模糊 #
# 错误示例:太模糊
bad = "介绍一下AI"
# 修正示例:角色+对象+长度
good = "你是科普作者,用80字介绍什么是AI,面向中学生"
# 打印对比
print("错误:", bad)
print("修正:", good)7.2 多重提问与矛盾要求 #
# 错误示例:多个要求且矛盾
bad = "写一篇500字文章,既简短又详细,还要幽默严肃"
# 修正示例:拆分任务,明确语气
good = "写一篇500字科普,语气轻松,解释AI的定义和2个应用场景"
# 打印对比
print("错误:", bad)
# 打印修正示例
print("修正:", good)8. 快速检查清单 #
- 是否说明角色(你是…)
- 是否拆成步骤/要点
- 是否给出格式和长度限制
- 是否提供示例或背景
- 是否删除矛盾或多余要求
9. 总结 #
- 核心公式:角色 + 任务 + 格式 + 示例 + 约束
- 原则:清晰、结构化、给上下文、加约束
- 方法:多版迭代,记录效果最好的提示词
- 练习:多写、多试、多对比,才能写出高质量提示词