吴恩达 Prompt 工程课精讲③:三次迭代,解决 Prompt 的三大致命问题(JupyterLab 实战)

吴恩达 Prompt 工程课精讲③:三次迭代,解决 Prompt 的三大致命问题(JupyterLab 实战)

"好提示词不是写出来的,是通过识别失败、精准修正迭代出来的。"

------ 吴恩达《ChatGPT Prompt Engineering for Developers》

在课程第3章,吴恩达通过一个电商产品描述生成任务,展示了如何通过三轮迭代,解决三个典型问题:

  1. 输出过长 → 超出商品卡片展示空间
  2. 关注错误细节 → 混入用户主观情绪,而非产品事实
  3. 忽略规模表 → 未使用"小/中/大"等标准化描述

本文将在 JupyterLab 中复现这一过程,带你体验问题驱动的 prompt 优化

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="sk-7a0c8ef9e5********b9d0a0d4",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

def get_completion(prompt, model="qwen3-max"):
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        stream=False
    )
    return response.choices[0].message.content

📝 任务背景:从用户评论生成产品描述

python 复制代码
customer_review = """
我上周买了这个儿童书包,整体还不错,但有几个问题:
首先,它比我想象中小很多,我儿子一年级,书本放进去拉链都拉不上;
其次,肩带有点硬,孩子说背一天肩膀疼;
不过颜色确实很鲜艳,蓝色很正,孩子很喜欢。
总的来说,性价比一般吧。
"""

🎯 业务目标 :生成一条简洁、客观、标准化的产品描述,用于商品详情页。

🔁 第1轮:初始 Prompt(问题爆发)

python 复制代码
prompt_v1 = f"""
根据以下用户评论,生成一段产品描述。
评论:
{customer_review}
"""

response_v1 = get_completion(prompt_v1)
print(response_v1)

这款儿童书包以鲜艳正蓝色设计,外观亮眼,深受孩子喜爱。轻巧造型适合日常上学使用,但在实际容量和舒适度方面仍有提升空间:书包内部空间相对紧凑,对于一年级学生较多课本的收纳可能略显不足;肩带材质偏硬,长时间背负可能造成肩部不适。如果您注重外观与价格的平衡,这款书包可作为基础选择,但建议根据孩子的具体需求评估其收纳与背负舒适性。

❌ 三大问题暴露:

  1. 文本过长:输出约 150 字,而商品卡片通常只容 40--60 字
  2. 关注错误细节 :提到"肩部不适""收纳不足"等负面主观体验
  3. 未用规模表:描述为"空间相对紧凑",而非"尺寸:小号"

🔴 v1 完全不可用:既不专业,也不符合电商规范。

🔁 第2轮:解决"长度"与"细节"问题

python 复制代码
prompt_v2 = f"""
你是一名电商文案编辑。请根据以下用户评论,生成一段**客观、简洁**的产品描述。

要求:
- 仅描述产品**客观特性**(如颜色、尺寸、材质)
- **不要包含**用户主观感受、问题或评价(如"背起来疼""性价比低")
- 描述长度**不超过50字**
- 用中文

评论:
{customer_review}
"""

response_v2 = get_completion(prompt_v2)
print(response_v2)

儿童书包,蓝色,尺寸较小,肩带较硬,材质未说明。

✅ 改进:

  • 长度控制在 50 字内 ✅
  • 去掉"肩膀疼""性价比"等主观内容 ✅

❌ 仍存在问题:

  • 尺寸描述为:"尺寸较小" → 未使用标准规模表(应为"小号")

🔁 第3轮:引入"规模表"约束(课程关键!)

python 复制代码
prompt_v3 = f"""
你是一名电商文案编辑。请根据以下用户评论,生成一段产品描述。

要求:
- 仅描述**客观特性**:颜色、尺寸、材质
- **尺寸必须使用以下规模表**:小号 / 中号 / 大号(根据评论推断)
- **不要包含**任何用户主观评价、问题或情绪
- 总长度**不超过40字**
- 用中文

评论:
{customer_review}
"""

response_v3 = get_completion(prompt_v3)
print(response_v3)

蓝色儿童书包,小号,材质未说明

✅ 自动化验证三大问题是否解决

python 复制代码
def validate_product_description(desc: str) -> dict:
    checks = {
        "length_ok": len(desc) <= 40,
        "no_subjective": not any(word in desc for word in ["疼", "喜欢", "性价比", "问题", "失望"]),
        "has_standard_size": any(size in desc for size in ["小号", "中号", "大号"])
    }
    return checks

result = validate_product_description(response_v3)
print(result)

✅ 全部通过!v3 可直接使用

吴恩达的迭代方法论总结

迭代 识别的问题 引入的约束
v1 → v2 过长 + 主观 限制长度 + 禁止主观内容
v2 → v3 非标准化描述 强制使用"规模表"

核心思想
每一次迭代,都是对业务规则的一次显式编码。

📌 行动清单

  • 在你的任务中,列出输出可能存在的 3 个典型问题
  • 为每个问题设计一条 明确约束(如"不超过X字""必须使用Y术语")
  • 在 JupyterLab 中用 validate 函数自动检查
  • 将最终 prompt 保存为 `product_desc_prompt.txt

👋 作者:Imnobody | 专注 LLM 应用开发
💬 欢迎在评论区分享你的 prompt 踩坑经历!

相关推荐
千桐科技3 小时前
qKnow 知识平台【开源版】安装与部署全指南
人工智能·后端
qq_12498707533 小时前
基于Spring Boot的高校实习实践管理系统(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
作伴3 小时前
结合Apollo手动实现一个动态线程池jar包
后端·架构
该用户已不存在3 小时前
7个没听过但绝对好用的工具
前端·后端
Java水解3 小时前
KingbaseES SQL性能调优方案分享
后端·sql
用户4099322502123 小时前
PostgreSQL连接的那些弯弯绕:笛卡尔积、外连接和LATERAL你都理明白没?
后端·ai编程·trae
oak隔壁找我3 小时前
SpringBoot + MyBatis 配置详解
java·数据库·后端
爱分享的鱼鱼3 小时前
技术方案文档案例——电商直播平台
后端
oak隔壁找我3 小时前
SpringBoot + Redis 配置详解
java·数据库·后端