使用大模型构建应用时,极少能一次写出完美的提示词(Prompt)。因此,不必苛求首次尝试就成功,关键在于建立一套持续迭代优化的过程,从而找到最适合任务的提示词。
编写 Prompt 应遵循“清晰明确”和“给予思考时间”的原则。若首次效果不佳,需通过分析失败原因不断迭代优化,循环往复,直到找到最适合应用的 Prompt。
1. 核心流程
迭代式提示开发并不是指在第一次尝试中就写出完美的提示词,而是一个“尝试 -> 评估 -> 优化”的循环过程。
在实际开发中,大模型很少能一次性完美执行复杂任务。迭代式开发的核心在于:
- 接受不完美:先写出一个清晰、明确的初始提示词(Prompt),跑通流程。
- 分析差距:观察模型的输出,找出它哪里做得不够好(例如:太长、关注点错误、格式不对)。
- 逐步修正:针对具体的问题,在提示词中增加限制条件、补充背景信息或调整指令,直到输出满足需求。
2. 实战案例
从产品说明书生成营销描述
以下是基于文档中“椅子产品说明书”任务的完整迭代过程演示。
背景:你有一份详细的技术说明书(包含尺寸、材料、产地等),需要将其转化为电商网站的营销文案。
🟢 初始尝试 (Iteration 1)
- Prompt: "你的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。"
# 提示:基于说明书创建营销描述 prompt = f""" 你的任务是帮助营销团队基于技术说明书创建一个产品的营销描述。 根据```标记的技术说明书中提供的信息,编写一个产品描述。 技术说明: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)结果:
产品描述: 我们自豪地推出美丽的中世纪风格办公家具系列,其中包括文件柜、办公桌、书柜、会议桌等。我们的产品采用多种外壳颜色和底座涂层,以满足您的个性化需求。您可以选择塑料前后靠背装饰(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泡沫,为您提供更加舒适的使用体验。我们的产品原产国为意大利,为您提供更加优质的品质保证。
- 结果分析: 模型生成了描述,但篇幅太长,包含了过多琐碎的细节,不适合网页快速阅读。
🟡 第一次优化:限制长度 (Iteration 2)
- 问题: 文本太长。
- 优化动作: 增加字数限制指令。
- Prompt 新增: "使用最多50个词。"
# 优化后的 Prompt,要求生成描述不多于 50 词 prompt = f""" 您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。 根据```标记的技术说明书中提供的信息,编写一个产品描述。 使用最多50个词。 技术规格:```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)- 结果分析: 长度符合要求了,但模型可能为了缩减字数而忽略了重要的技术参数,或者关注点仍然比较泛。
🟠 第二次优化:调整受众与关注点 (Iteration 3)
- 问题: 网站是面向家具零售商而非普通消费者,他们需要更专业的技术细节,而非情感化的营销词藻。
- 优化动作: 指定目标受众和侧重点。
- Prompt 新增: "该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。"
# 优化后的 Prompt,说明面向对象,应具有什么性质且侧重于什么方面 prompt = f""" 您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。 根据```标记的技术说明书中提供的信息,编写一个产品描述。 该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。 使用最多50个单词。 技术规格: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)- 结果分析: 内容变得专业了,但可能还缺少关键的结构化信息(如产品ID)。
🔴 第三次优化:补充关键信息 (Iteration 4)
- 问题: 缺少具体的库存管理信息。
- 优化动作: 强制要求包含特定字段。
- Prompt 新增: "在描述末尾,包括技术规格中每个7个字符的产品ID。"
# 更进一步 prompt = f""" 您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。 根据```标记的技术说明书中提供的信息,编写一个产品描述。 该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。 在描述末尾,包括技术规格中每个7个字符的产品ID。 使用最多50个单词。 技术规格: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)- 结果分析: 信息完整了,但作为网页内容,纯文本不够美观,需要结构化展示。
🔵 第四次优化:格式化输出 (Iteration 5 - 最终版)
- 问题: 需要直接嵌入网页,且尺寸数据需要清晰展示。
- 优化动作: 要求输出 HTML 格式,并提取表格。
- Prompt 新增:
- "将所有内容格式化为可用于网站的HTML格式。将描述放在
<div>元素中。" - "在描述之后,包括一个表格,提供产品的尺寸...给表格命名为‘产品尺寸’。"
- "将所有内容格式化为可用于网站的HTML格式。将描述放在
# 要求它抽取信息并组织成表格,并指定表格的列、表名和格式 prompt = f""" 您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。 根据```标记的技术说明书中提供的信息,编写一个产品描述。 该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。 在描述末尾,包括技术规格中每个7个字符的产品ID。 在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。 给表格命名为“产品尺寸”。 将所有内容格式化为可用于网站的HTML格式。将描述放在<div>元素中。 技术规格:```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)3. 总结
通过上述案例可以看出,迭代式提示开发就是,从一个简单考虑不周的初始想法开始,通过不断发现缺陷(太长、太泛、格式不对)并进行微调(加限制、改指令),最终得到完美的 Prompt。