迭代式完善提示词
学习目标
在本课程中,你将通过迭代优化的方式,对提示词进行深入分析与逐步完善。每一次迭代都是对提示词的精细化调整,最终实现从产品情况说明书中精准提炼关键信息,生成贴合需求、优质高效的营销文案。
相关知识点
迭代式完善提示词
学习内容
1 迭代式完善提示词
什么是迭代式完善提示词?
迭代式完善提示词 是一种通过 反复测试、分析结果、调整策略 来优化大语言模型(LLM)输出质量的方法。
- 核心逻辑:提示词(Prompt)是与LLM交互的“语言”,但初始提示往往存在模糊性、信息缺失或指令不明确等问题,需通过多轮迭代逐步逼近理想效果。
- 适用场景:
- 生成内容(如文案、说明、报告)时追求更高专业性或创意;
- 问答系统中需要精准调用工具或整合外部知识;
- 多轮对话中维持上下文一致性(如角色扮演、复杂逻辑推理)。
常见问题与解决方案
| 问题类型 | 可能原因 | 解决方案 |
|---|---|---|
| 输出内容冗长/啰嗦 | 提示未限制字数或未明确重点 | 添加“字数≤XX字”“核心突出XX点”等约束 |
| 回答偏离主题 | 关键词模糊或指令逻辑混乱 | 用具体术语替换抽象词,拆分复杂任务为子问题 |
| 创意同质化 | temperature过低或缺乏示例引导 | 提高temperature值,或提供竞品创意案例 |
| 格式混乱 | 未指定格式要求 | 明确“分点回答”“用表格呈现”等指令 |
1.1 准备工作
安装依赖
- httpx 是一个用于进行 HTTP 请求的库,我们可以使用它来向大模型发送请求并获取响应。
- openai 库提供了统一的接口来调用大模型。
%pip install httpx
%pip install openai
- 初始化参数
import os
import httpx
from openai import OpenAI
# 此课程基于DeepSeek-R1运行,学员可自行前往官网进行api申请
client = OpenAI(
base_url=<BASE_URL>,
api_key=<API_KEY>,
http_client=httpx.Client(verify=False),
)
- 定义 get_completion 函数,用于调用大模型生成文本。
- 这个函数通过 OpenAI 客户端调用指定模型,根据输入的提示词生成回复,并处理可能存在的思维标记,返回最终的回复内容。
get_completion函数用于向模型发送单个用户提示,并获取模型的响应。它将提示封装在messages列表中,然后调用client.chat.completions.create方法与模型进行交互,最后调用extract_after_think函数处理响应。
| 参数 | 说明 |
|---|---|
| model | 指定使用的大语言模型,决定生成文本的能力和风格 |
| messages | 对话历史列表,仅包含用户提示词,引导模型生成回复 |
| stream | 是否以流式方式返回结果。为 False 时,模型生成完整内容后一次性返回;为 True 时逐字返回 |
| temperature | 控制输出的随机性和创造性。值接近 0 时输出更具确定性,结果更保守、准确;值接近 1 时输出更随机,可能增加创意但也可能有胡言乱语风险 |
| max_tokens | 限制生成内容的最大 token 数量(含输入和输出)。超过此限制模型输出会被截断,token 约4个字符或1个汉字,设置过小可能回复不完整 |
| top_p | 核采样参数,控制词汇选择的概率分布范围。值为 0.95 时模型只考虑累积概率达 95% 的词汇,过滤低概率词汇,减少随机性 |
#请根据实际替换model_name
def get_completion(prompt, model=<model_name>):
mess = [{"role": "user", "content": prompt}]
response = client.chat.completions.create(
model=model,
messages=mess,
stream=False,
temperature=0.6, # 这就是该模型输出结果的随机程度。
max_tokens=2048,
top_p=0.95
)
return response.choices[0].message.content.split("</think>\n\n")[-1]
1.2 调用大模型
定义一个产品说明书文本,一款来自意大利的中世纪风格办公椅,属于系列家具,提供多种外壳颜色、底座饰面、款式、扶手及材料选择。具备气动升降功能,尺寸规格清晰,可选软/硬质地面脚轮、不同密度座椅泡沫,且符合合同使用标准,适用于家庭或办公场景。
fact_sheet_chair = """
概述
- 作为极具美感的中世纪风格办公家具系列的一部分,该系列还包括文件柜、书桌、书柜、会议桌等多种家具。
- 外壳颜色和底座饰面有多种选择。
- 提供两种款式:带塑料前后衬垫的款式(SWC-100),或全衬垫款式(SWC-110),有10种织物和6种皮革可供选择。
- 底座饰面的选择有:不锈钢、哑光黑、亮白或镀铬。
- 这款椅子可选择带扶手或不带扶手。
- 适用于家庭或办公场所。
- 符合合同使用标准。
构造
- 配有五个轮子的包塑铝制底座。
- 气动调节座椅,方便实现升降操作。
尺寸
- 宽度:53厘米(20.87英寸)
- 深度:51厘米(20.08英寸)
- 高度:80厘米(31.50英寸)
- 座椅高度:44厘米(17.32英寸)
- 座椅深度:41厘米(16.14英寸)
可选配置
- 有适用于软质地面或硬质地面的脚轮可供选择。
- 座椅泡沫密度有两种选择:中等密度(每立方英尺1.8磅)或高密度(每立方英尺2.8磅)。
- 可选择无扶手或八档调节的聚氨酯扶手。
材料
外壳、底座、滑座
- 铸铝材质,表面经过改性尼龙PA6/PA66涂层处理。
- 外壳厚度:10毫米。
座椅
- HD36泡沫材质
原产国
- 意大利
"""
根据描述信息生成的宣传图片:

- 根据产品说明书生成一份营销产品描述。
- 包括设计亮点、风格、精工细节以及技术参数等内容
prompt = f"""
你的任务是帮助一个营销团队根据产品技术说明书,为零售网站撰写产品描述。
请基于由三个反引号分隔的技术规格中所提供的信息,撰写一份产品描述。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
- 文本太长,进一步限制单词、句子或字符的数量。
prompt = f"""
你的任务是协助一个营销团队,依据产品技术说明书,为一款产品的零售网站撰写描述。
根据由三个反引号分隔开的技术规格中所提供的信息来写产品描述,最多使用 150 个字。
技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
len(response)
- 文本聚焦于错误细节,要求它聚焦于与目标受众相关的方面。
prompt = f"""
你的任务是帮助营销团队依据产品技术说明书,为一款产品的零售网站撰写描述。
鉴于描述面向家具零售商,应侧重产品构造材料,兼具技术性,最多 150 字。
技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
prompt = f"""
你的任务是帮助一个营销团队,基于产品技术规格说明书,为一款产品的零售网站创作描述。
根据由三个反引号分隔的技术规格中所提供的信息来撰写产品描述。
该描述面向家具零售商,所以应具备技术性,并聚焦于产品的构造材料。
在描述结尾处,要包含技术规格中的每个 7 字符的产品 ID。
最多使用 150 个字。
技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
- 描述需要一个尺寸表,要求它提取信息并整理成表格形式。
prompt = f"""
你的任务是帮助一个营销团队,基于产品技术说明书,为某产品的零售网站撰写描述。
需依据被三重反引号分隔开的技术规格里提供的信息来写。
鉴于此描述面向家具零售商,要具备技术性,聚焦产品的构造材料。
在描述结尾,纳入技术规格里每个 7 字符的产品 ID。
描述之后,附上一张呈现产品尺寸的表格,该表含两列:第一列写尺寸名称,第二列仅填英寸为单位的测量值。
给表取名“Product Dimensions”。
将全部内容格式化为适用于网站的 HTML 格式,把描述放进 <div> 元素中。
中文回答。
技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
加载 Python 库以便查看 HTML 内容。
from IPython.display import display, HTML
- 将大语言模型生成的 HTML 格式内容渲染为可视化的网页元素。具体来说:
- response:调用 OpenAI 模型后返回的字符串,内容为完整的 HTML 代码。
- HTML(response):使用 IPython 库的 HTML 类将字符串解析为 HTML 对象。
- display(…):在 Jupyter Notebook 或类似环境中,将 HTML 对象渲染为可视化的网页元素,直接展示在输出区域。
display(HTML(response))
11万+

被折叠的 条评论
为什么被折叠?



