迭代式提示词开发
吴恩达《ChatGPT Prompt Engineering for Developers》课程笔记 - 第3讲
核心理念
💡 关键洞察:没有完美的提示词只有不断优化的过程
提示词开发是一个迭代过程,需要:
- 尝试初版提示词
- 分析结果
- 明确问题
- 优化提示词
- 重复以上步骤
想法
实现提示词
实验结果
错误分析
改进方向
迭代开发流程
标准流程
python
# 1. 明确任务
# 2. 编写初版提示词
# 3. 运行并评估
# 4. 根据结果改进
# 5. 重复步骤3-4
关键原则
- ✅ 快速迭代:不要追求第一次就完美
- ✅ 具体场景:针对特定应用场景优化
- ✅ 数据驱动:基于实际输出进行改进
- ✅ 批量测试:用多个案例验证
实战案例:产品描述生成
场景设定
为电商网站生成产品营销文案。
原始产品信息
python
fact_sheet_chair = """
概述
- 属于美丽的中世纪灵感办公家具系列,包括文件柜、办公桌、书柜、会议桌等。
- 多种外壳颜色和底座饰面可选。
- 提供塑料前后靠背装饰(SWC-100)或10种面料和6种皮革的全面软包(SWC-110)。
- 底座饰面选项包括:不锈钢、哑光黑色、光泽白色或镀铬。
- 椅子可配备或不配备扶手。
- 适合家庭或商业环境。
- 符合合同使用资格。
结构
- 五轮塑料涂层铝底座。
- 气动椅子调节,方便升降。
尺寸
- 宽度 53厘米 | 20.87英寸
- 深度 51厘米 | 20.08英寸
- 高度 80厘米 | 31.50英寸
- 座椅高度 44厘米 | 17.32英寸
- 座椅深度 41厘米 | 16.14英寸
选项
- 软地板或硬地板脚轮选项。
- 两种座椅泡沫密度可选:中等(1.8磅/立方英尺)或高(2.8磅/立方英尺)
- 无扶手或8位置PU扶手
材料
外壳底座滑动件
- 铸铝涂层改性尼龙PA6/PA66。
- 外壳厚度:10毫米。
座椅
- HD36泡沫
原产国
- 意大利
"""
迭代1:初版提示词
代码
python
prompt = f"""
你的任务是帮助营销团队基于技术说明书创建产品的营销描述。
根据三个反引号中提供的技术规格信息,编写产品描述。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
输出
介绍我们精美的中世纪风格办公椅,这是一款集功能性与优雅设计于一体的家具杰作。
该椅子属于我们广受欢迎的办公家具系列,该系列还包括文件柜、办公桌、书柜和会议桌。
这款办公椅提供多种定制选项,让您可以打造完美契合您空间的座椅。您可以选择多种
外壳颜色和底座饰面,包括不锈钢、哑光黑色、光泽白色或镀铬。椅子可配备塑料前后
靠背装饰,或选择10种面料和6种皮革的全面软包,以满足您的舒适度和风格偏好。
结构方面,这款椅子采用五轮塑料涂层铝底座,确保稳定性和移动便利性。气动调节功能
让您能够轻松调整座椅高度。椅子尺寸宽度53厘米,深度51厘米,高度80厘米,座椅高度
44厘米,座椅深度41厘米,为各种体型的用户提供舒适的支撑。
[... 更多内容 ...]
这款椅子在意大利制造,体现了卓越的工艺和对细节的关注。无论您是为家庭办公室还是
商业环境寻找座椅解决方案,这款中世纪风格办公椅都是完美的选择。
问题分析
- ❌ 太长:营销人员希望简洁的描述
- ❌ 细节过多:包含了所有技术规格
- ❌ 缺少重点:没有突出卖点
迭代2:限制字数
改进策略
添加字数限制指令。
代码
python
prompt = f"""
你的任务是帮助营销团队基于技术说明书创建产品的营销描述。
根据三个反引号中提供的技术规格信息,编写产品描述。
使用最多50个词。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
print(f"\n字数: {len(response.split())}")
输出
这款中世纪风格办公椅集优雅与功能于一体,提供多种颜色和饰面选择。
采用五轮铝底座和气动高度调节,适合家庭或办公使用。可选配扶手,
符合商业合同标准。意大利制造,品质保证。
字数: 47
改进效果
- ✅ 长度合适:约50词
- ✅ 更简洁:突出关键特点
- ⚠️ 仍可优化:技术细节可以更聚焦
迭代3:调整关注点
改进策略
引导模型关注目标受众关心的信息。
代码
python
prompt = f"""
你的任务是帮助营销团队基于技术说明书创建产品的营销描述。
根据三个反引号中提供的技术规格信息,编写产品描述。
该描述面向家具零售商,因此应侧重于技术性质,聚焦产品的材料构成。
使用最多50个词。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
输出
中世纪风格办公椅,采用铸铝涂层改性尼龙PA6/PA66外壳,壁厚10毫米。
五轮塑料涂层铝底座,HD36泡沫座椅。提供多种外壳颜色和底座饰面,
可选软包或塑料靠背。气动高度调节,意大利制造。
改进效果
- ✅ 聚焦材料:突出技术规格
- ✅ 专业性强:适合B2B受众
- ✅ 简洁明确:关键信息清晰
迭代4:添加产品ID
改进策略
在描述末尾添加产品ID表格,方便查询。
代码
python
prompt = f"""
你的任务是帮助营销团队基于技术说明书创建产品的营销描述。
根据三个反引号中提供的技术规格信息,编写产品描述。
该描述面向家具零售商,因此应侧重于技术性质,聚焦产品的材料构成。
在描述末尾,包含技术规格中提到的每个7位产品ID。
在描述后,添加一个表格,表格标题为"产品ID",包含产品ID。
表格应有两列,第一列包含产品ID的名称,第二列包含产品ID。
使用最多50个词。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
输出
中世纪风格办公椅,采用铸铝涂层改性尼龙PA6/PA66外壳(壁厚10毫米)和
HD36泡沫座椅。五轮塑料涂层铝底座,气动高度调节。提供多种颜色和饰面选择。
意大利制造,适合家庭或商业环境。
产品ID:
| 产品ID名称 | 产品ID |
|-----------|--------|
| 塑料靠背版本 | SWC-100 |
| 软包版本 | SWC-110 |
迭代5:优化为HTML格式
改进策略
输出HTML格式,便于网页展示。
代码
python
prompt = f"""
你的任务是帮助营销团队基于技术说明书创建产品的营销描述。
根据三个反引号中提供的技术规格信息,编写产品描述。
该描述面向家具零售商,因此应侧重于技术性质,聚焦产品的材料构成。
在描述末尾,包含技术规格中提到的每个7位产品ID。
在描述后,添加一个表格,表格标题为"产品尺寸",包含产品的尺寸信息。
表格应有两列,第一列包含尺寸名称,第二列包含尺寸的厘米值。
将所有内容格式化为可在网页中使用的HTML。
将描述放在<div>元素中。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
输出
html
<div>
<h2>中世纪风格办公椅 - 技术描述</h2>
<p>
这款精致的办公椅采用高品质材料制造,外壳使用铸铝涂层改性尼龙PA6/PA66,
壁厚10毫米,确保耐用性。座椅采用HD36泡沫,提供出色的舒适度和支撑。
五轮塑料涂层铝底座设计,配备气动调节功能,方便高度调整。
</p>
<p>
<strong>产品ID:</strong>SWC-100(塑料靠背版本)、SWC-110(软包版本)
</p>
<h3>产品尺寸</h3>
<table border="1">
<tr>
<th>尺寸名称</th>
<th>厘米</th>
</tr>
<tr>
<td>宽度</td>
<td>53</td>
</tr>
<tr>
<td>深度</td>
<td>51</td>
</tr>
<tr>
<td>高度</td>
<td>80</td>
</tr>
<tr>
<td>座椅高度</td>
<td>44</td>
</tr>
<tr>
<td>座椅深度</td>
<td>41</td>
</tr>
</table>
</div>
可视化展示
python
from IPython.display import display, HTML
display(HTML(response))
迭代优化的关键技巧
1. 明确约束条件
python
# ❌ 模糊
"写一个简短的描述"
# ✅ 具体
"使用最多50个词"
"包含3-5个要点"
"长度在100-150字之间"
2. 指定目标受众
python
# ❌ 通用
"写产品描述"
# ✅ 针对性
"面向家具零售商,侧重技术规格"
"面向终端消费者,强调使用体验"
"面向采购经理,突出性价比"
3. 定义输出格式
python
# ❌ 未指定
"提供产品信息"
# ✅ 结构化
"以JSON格式输出"
"生成HTML表格"
"使用Markdown列表"
4. 提供具体指令
python
# ❌ 抽象
"描述产品特点"
# ✅ 具体
"列出3个关键卖点"
"描述材料构成"
"包含产品尺寸表格"
批量测试与评估
测试多个案例
python
# 产品列表
products = [
fact_sheet_chair,
fact_sheet_desk,
fact_sheet_lamp
]
# 批量生成
def generate_descriptions(products, prompt_template):
results = []
for product in products:
prompt = prompt_template.format(product=product)
description = get_completion(prompt)
results.append({
'product': product[:50] + '...',
'description': description
})
return results
# 评估结果
descriptions = generate_descriptions(products, prompt_template)
for i, result in enumerate(descriptions):
print(f"\n产品 {i+1}:")
print(result['description'])
print("-" * 50)
评估维度
| 维度 | 评估标准 | 权重 |
|---|---|---|
| 准确性 | 信息是否正确 | 30% |
| 相关性 | 是否符合需求 | 25% |
| 完整性 | 关键信息是否齐全 | 20% |
| 格式 | 是否符合要求 | 15% |
| 可读性 | 是否易于理解 | 10% |
自动化评估示例
python
def evaluate_description(description, expected_keywords, max_words=50):
"""
评估生成的描述质量
"""
evaluation = {
'word_count': len(description.split()),
'length_ok': len(description.split()) <= max_words,
'contains_keywords': sum(kw in description for kw in expected_keywords),
'keyword_coverage': sum(kw in description for kw in expected_keywords) / len(expected_keywords)
}
return evaluation
# 测试
expected_keywords = ['中世纪', '办公椅', '铝底座', 'HD36泡沫', '意大利']
eval_result = evaluate_description(response, expected_keywords, max_words=50)
print(eval_result)
实战练习
练习1:电子产品描述
为以下手机生成营销文案:
python
phone_specs = """
型号: TechPhone X1
处理器: 8核2.8GHz
内存: 8GB RAM
存储: 256GB
屏幕: 6.5英寸OLED,120Hz刷新率
相机: 后置三摄(50MP主摄+12MP超广角+5MP微距)
电池: 5000mAh,支持65W快充
操作系统: Android 13
颜色: 星空黑、极光蓝、月光银
重量: 198克
价格: ¥2999
"""
# 要求:
# 1. 面向年轻消费者
# 2. 强调拍照和游戏性能
# 3. 最多80词
# 4. 突出性价比
练习2:迭代优化流程
选择任意产品,完成完整的迭代优化流程:
- V1: 基础描述
- V2: 添加字数限制
- V3: 调整目标受众
- V4: 优化格式
- V5: 添加结构化信息
记录每次迭代的改进点和效果。
练习3:A/B测试
为同一产品生成两个不同风格的描述:
- 版本A: 专业技术风格
- 版本B: 情感故事风格
比较并分析哪个版本更适合你的目标受众。
最佳实践总结
✅ DO(推荐做法)
- 快速开始 - 不要追求完美的初版
- 小步迭代 - 每次只改进一个方面
- 数据驱动 - 基于实际输出优化
- 批量测试 - 用多个案例验证
- 记录过程 - 保存每次迭代的提示词和结果
- 具体约束 - 使用明确的数字和要求
- 格式规范 - 清晰定义输出格式
❌ DON'T(避免做法)
- 过度优化 - 过分追求完美
- 忽略测试 - 只测试单个案例
- 模糊指令 - 使用含糊不清的要求
- 频繁大改 - 一次修改多个方面
- 缺少记录 - 不记录迭代历史
- 忽视受众 - 不考虑目标用户
迭代检查清单
使用以下清单评估你的提示词:
- 任务描述是否清晰?
- 是否指定了目标受众?
- 是否有明确的长度限制?
- 是否定义了输出格式?
- 是否包含具体示例(如需要)?
- 是否测试了多个案例?
- 结果是否满足业务需求?
核心要点
- 迭代是常态 - 很少有提示词第一次就完美
- 过程优于结果 - 建立系统化的优化流程
- 测试很重要 - 多案例验证确保通用性
- 记录是关键 - 保存迭代历史便于回溯
- 具体胜于模糊 - 明确的约束产生更好的结果
下一步学习
在下一讲中,我们将学习文本摘要技术,探索如何高效提取关键信息。
上一讲 : 提示词编写指南-两大核心原则
下一讲 : 文本摘要-高效提取信息