🎯 什么是提示词工程?
提示词工程是指通过精心设计和优化输入给大模型的文本指令(Prompt),以激发模型的最佳性能,使其能够准确、可靠地完成特定任务。
💡 核心理念:不要试图重新训练模型,而是学会如何"沟通"------用模型能理解的方式告诉它你想做什么。
🚀 Zero-shot 思想:零样本学习
定义
Zero-shot Learning(零样本学习) 是指在模型训练阶段从未见过某个特定类别或任务的情况下,仅凭语言描述就能让模型完成该任务的能力。
核心特点
- ✅ 无需示例:不提供任何具体例子
- ✅ 依赖预训练知识:完全依靠模型已有的世界知识和推理能力
- ✅ 语言定义任务:通过自然语言清晰描述任务要求、目标和约束
工作原理图示

实际应用场景
1. 情感分析
python
prompt = """
请判断以下用户评论的情感倾向,只输出"正面"或"负面":
"这款代餐鸡胸肉饱腹感很强,吃起来也不柴,很推荐!"
"""
2. 文本分类
python
prompt = """
请将以下新闻归类到合适的类别中(科技/体育/娱乐/财经):
"特斯拉发布新款自动驾驶系统,支持城市道路自动导航"
"""
3. 简单问答
python
prompt = """
回答下列问题:
Q: 中国的首都是哪里?
A:
"""
Python 实现示例
python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def zero_shot_sentiment_analysis(text):
prompt = f"""
请判断以下用户评论的情感倾向,只输出"正面"或"负面":
"{text}"
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}],
temperature=0.0 # 降低随机性,使输出更稳定
)
return response.choices[0].message.content.strip()
# 测试
review = "这款代餐鸡胸肉饱腹感很强,吃起来也不柴,很推荐!"
result = zero_shot_sentiment_analysis(review)
print(f"情感分析结果:{result}") # 输出:正面
Few-shot 思想:少样本学习
定义
Few-shot Learning(少样本学习) 是指通过提供少量示例(通常1-5个),让模型快速学习并模仿示例的模式来完成新任务的方法。
核心特点
- ✅ 提供示例:给出几个输入-输出对作为参考
- ✅ 模式匹配:模型通过观察示例学习任务的格式、风格和逻辑
- ✅ 提升精度:特别适用于需要严格格式或复杂逻辑的任务
工作原理图示

实际应用场景
1. 结构化数据抽取
python
prompt = """
请抽取产品名称和核心卖点2个字段,格式为Json,我提供2个示例:
示例1: MacBookPro高效节能,性能强大,适合牛马工作使用
输出: {"产品名称": "MacBookPro", "产品卖点": "高效节能,性能强大"}
示例2: 联想笔记本拥有RTX4060独立显卡,畅玩游戏,丝滑流畅
输出: {"产品名称": "联想笔记本", "产品卖点": "畅玩游戏,丝滑流畅"}
请处理: 华为MatepadPro,高清大屏,长效续航,你的好帮手。
"""
2. 风格迁移
python
prompt = """
将以下句子改写成莎士比亚风格:
示例1: 我爱你 -> 吾心之所向,唯汝一人耳
示例2: 今天天气很好 -> 今日天朗气清,惠风和畅
请改写:我想吃火锅
"""
3. 复杂推理
python
prompt = """
解答下列数学题:
示例1: 如果3个苹果重600克,那么5个苹果重多少克?
解:每个苹果重600÷3=200克,5个苹果重200×5=1000克
答:1000克
示例2: 一辆车每小时行驶80公里,3.5小时行驶多少公里?
解:距离=速度×时间=80×3.5=280公里
答:280公里
请解答:一个水池有进水管和出水管,单独开进水管6小时可注满,单独开出水管9小时可排空。两管同时打开,几小时可注满?
"""
Python 实现示例
python
import json
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def few_shot_product_extraction(product_description):
prompt = f"""
请抽取产品名称和核心卖点2个字段,格式为Json,我提供2个示例:
示例1: MacBookPro高效节能,性能强大,适合牛马工作使用
输出: {{"产品名称": "MacBookPro", "产品卖点": "高效节能,性能强大"}}
示例2: 联想笔记本拥有RTX4060独立显卡,畅玩游戏,丝滑流畅
输出: {{"产品名称": "联想笔记本", "产品卖点": "畅玩游戏,丝滑流畅"}}
请处理: {product_description}
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}],
temperature=0.1 # 稍微增加一点创造性,但保持稳定性
)
result_text = response.choices[0].message.content.strip()
# 清理可能的Markdown标记
if result_text.startswith("```json"):
result_text = result_text[7:-3]
elif result_text.startswith("```"):
result_text = result_text[3:-3]
try:
return json.loads(result_text)
except json.JSONDecodeError:
return {"error": "解析失败", "raw_output": result_text}
# 测试
description = "华为MatepadPro,高清大屏,长效续航,你的好帮手。"
result = few_shot_product_extraction(description)
print(f"抽取结果:{json.dumps(result, ensure_ascii=False, indent=2)}")
⚖️ Zero-shot vs Few-shot 对比选择
| 特性 | Zero-shot | Few-shot |
|---|---|---|
| 所需示例 | 无 | 1-5个 |
| 适用场景 | 简单任务、通用知识 | 复杂格式、特殊领域、高精度要求 |
| 开发成本 | 低 | 中(需准备示例) |
| 效果稳定性 | 较不稳定 | 更稳定可控 |
| Token消耗 | 较少 | 较多(包含示例) |
选择建议:
- ✅ 优先尝试 Zero-shot:对于简单任务,先用零样本测试,往往能达到不错效果
- ✅ 遇到格式问题时用 Few-shot:当需要严格JSON、XML等格式时,少样本几乎必选
- ✅ 领域专业知识不足时用 Few-shot:当模型缺乏特定领域知识时,示例能提供重要线索
🛠️ 高级技巧与实践建议
1. Chain-of-Thought (CoT) 思维链
对于复杂推理任务,可以要求模型展示思考过程:
python
prompt = """
请逐步推理并解答:
问题:小明有5个苹果,他给了小红2个,又买了3个,现在有多少个?
解题步骤:
1. 初始数量:5个
2. 给出后剩余:5 - 2 = 3个
3. 购买后总数:3 + 3 = 6个
答案:6个
请用同样方式解答:
问题:一个班级有30名学生,其中男生占60%,女生有多少人?
"""
2. Role-playing 角色扮演
通过设定角色提升回答质量:
python
messages = [
{"role": "system", "content": "你是一位资深Python架构师,擅长编写高性能、可维护的代码。"},
{"role": "user", "content": "请帮我优化这段数据库查询代码..."}
]
3. Output Formatting 输出格式化
明确指定输出格式减少后期处理:
python
prompt = """
请按以下JSON格式返回结果:
{
"summary": "简短摘要",
"keywords": ["关键词1", "关键词2"],
"sentiment": "positive/negative/neutral"
}
文章内容:...
"""
🚀 总结
提示词工程是大模型应用开发的基石技能:
✅ Zero-shot :用语言定义任务,解放模型预训练知识
✅ Few-shot :用示例定义任务,提升回答对齐精度
✅ 灵活组合 :根据任务复杂度选择合适的策略
✅ 持续迭代:通过实验不断优化提示词设计
🌟 记住:最好的提示词工程师不是写得最多的人,而是最懂得如何与模型"对话"的人!