共计 2377 个字符,预计需要花费 6 分钟才能阅读完成。
三个典型错误案例
在开始学习 Prompt Engineering 之前,我们先来看看几个常见的低效 Prompt 设计案例,这些案例代表了新手在设计提示词时容易犯的错误。

- 歧义性问题 :” 写一篇关于健康的文章 ” – 过于笼统,没有明确主题、长度或风格要求,导致模型输出不可控
- 缺乏约束 :” 告诉我关于历史的事情 ” – 未指定具体历史时期、地域或事件类型,可能产生无关信息
- 忽略上下文 :在对话中突然提问 ” 它是什么颜色?” – 没有提供足够的上下文参考,模型无法理解 ” 它 ” 的指代对象
结构化 Prompt 设计模板
一个高效的 Prompt 通常包含以下几个关键组成部分:
- 角色定义 (Role Definition):明确模型应该扮演的角色
- 任务描述 (Task Description):具体说明需要完成的工作
- 输出格式 (Output Format):规定回答的结构和形式
- 示例 (Examples):提供输入输出的示范案例
示例模板
你是一位经验丰富的营养学家 (角色定义)。请根据以下食物清单,为糖尿病患者设计一周的餐食计划 (任务描述)。要求:1. 每天三餐加两次零食
2. 每餐标注热量和碳水化合物含量
3. 使用表格形式呈现 (输出格式)
示例输入:食物清单:鸡胸肉、糙米、西兰花...
示例输出:| 时间 | 餐食 | 热量 (kcal) | 碳水化合物 (g) |
|------|------|------------|----------------|
...(示例)
参数调优技巧
在使用大语言模型 API 时,有几个关键参数会影响输出质量:
- temperature(温度):控制输出的随机性
- 较低值 (0.2-0.5):更确定性和保守的回答
-
较高值 (0.7-1.0):更有创意但可能偏离主题
-
top_p(核采样):控制词汇选择的多样性
- 较低值 (0.1-0.5):更集中在前几个可能的词
-
较高值 (0.7-0.9):考虑更广泛的词汇选择
-
max_tokens(最大令牌数):限制生成长度
效果评估方法论
评估 Prompt 效果常用的指标包括:
- BLEU(Bilingual Evaluation Understudy):比较机器输出与人工参考的 n -gram 重叠
- ROUGE(Recall-Oriented Understudy for Gisting Evaluation):特别关注召回率,适用于摘要任务
- 人工评估 :仍然是黄金标准,可设计评分卡评估相关性、流畅度等
Python 代码示例
多轮对话 Prompt 优化
import openai
conversation_history = []
def chat_with_gpt(prompt):
conversation_history.append({"role": "user", "content": prompt})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=conversation_history,
temperature=0.7,
max_tokens=500
)
assistant_reply = response.choices[0].message.content
conversation_history.append({"role": "assistant", "content": assistant_reply})
return assistant_reply
# 使用示例
response = chat_with_gpt("如何学习 Python 编程?")
print(response)
基于 few-shot learning 的示例注入
def few_shot_prompting():
examples = [{"input": "这家餐厅的服务很棒", "output": "正面"},
{"input": "产品质量很差", "output": "负面"},
{"input": "体验一般", "output": "中性"}
]
prompt = """请根据以下示例判断情感倾向:"""
for ex in examples:
prompt += f"输入:{ex['input']}\n 输出:{ex['output']}\n\n"
prompt += """
现在请判断这个新输入的情感倾向:输入:物流速度很快,但包装破损
输出:"""
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=10,
temperature=0
)
return response.choices[0].text.strip()
# 使用示例
result = few_shot_prompting()
print(result) # 应该输出 "中性"
生产环境避坑指南
敏感内容过滤方案
- 在 Prompt 中明确添加内容限制,如:” 请确保回答不包含暴力、歧视或违法内容 ”
- 使用 API 的内容过滤功能 (如 OpenAI 的 moderation endpoint)
- 后处理阶段进行关键词过滤
输出稳定性保障措施
- 设置合理的 temperature 和 top_p 值
- 对关键任务实施多次采样并选择最佳结果
- 使用固定随机种子 (reproducibility)
成本控制策略
- 限制 max_tokens 防止过度消耗
- 缓存常见问题的回答
- 监控 API 使用情况和费用
动手实验
尝试改进以下低效 Prompt:
原始 Prompt:” 写一首诗 ”
改进方向:
1. 指定诗歌类型 (如十四行诗、俳句等)
2. 明确主题 (如季节、情感等)
3. 规定长度或格式要求
4. 提供风格参考 (如浪漫主义、现代派等)
改进示例:
“ 请以春天的主题创作一首俳句 (5-7- 5 音节结构),体现新生和希望的意境,风格类似于松尾芭蕉 ”
通过这样的练习,你将更深入地理解如何设计高效的 Prompt。记住,好的 Prompt 就像给 AI 的清晰指令,越具体明确,得到的结果就越符合预期。
正文完
发表至: 人工智能
近一天内
