大模型提示词工程实践:提示工程实践之优化提示词以生成优质营销文案

迭代式完善提示词

学习目标

在本课程中,你将通过迭代优化的方式,对提示词进行深入分析与逐步完善。每一次迭代都是对提示词的精细化调整,最终实现从产品情况说明书中精准提炼关键信息,生成贴合需求、优质高效的营销文案。

相关知识点

迭代式完善提示词

学习内容

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))
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值