百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

提示工程学习笔记-Prompt的迭代优化

yuyutoo 2025-02-09 14:50 1 浏览 0 评论

当使用 LLM 构建应用程序时,实践层面上很难*第一次尝试*就成功获得适合最终应用的 Prompt。但这并不重要,只要您有一个好的迭代过程来不断改进您的 Prompt,那么您就能够得到一个适合任务的 Prompt。

本次学习中将以产品说明书中生成营销文案为例,来展示一些Prompt的迭代优化流程框架,并提示您思考如何层层迭代地分析和完善您的 Prompt。

【学习课程来源于吴恩达的Prompt Engineering For Developers】


一、环境配置

先申请千问的API key,并配置系统环境变量,然后再自定义get_completion函数备用。

import os
import openai
from openai import OpenAI

OPENAI_API_KEY = os.environ.get("DASHSCOPE_API_KEY")
openai.api_key = OPENAI_API_KEY

def get_completion(prompt, model="qwen2.5-72b-instruct"):
    """
    prompt: 对应的提示词
    model: 调用的模型
    """
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用百炼 API Key 将本行替换为:api_key="sk-xxx"
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 填写 DashScope SDK 的 base_url
    )
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,  # 模型输出的温度系数,控制输出的随机程度
    )
    return response.choices[0].message.content


# def get_response():
#     completion = get_completion(prompt="你是谁?")
#     print(completion)


# if __name__ == "__main__":
#     get_response()



二、开始Prompt迭代优化实验

给定一份椅子的资料页。描述说它属于*中世纪灵感*系列,产自意大利,并介绍了材料、构造、尺寸、可选配件等参数。假设您想要使用这份说明书帮助营销团队为电商平台撰写营销描述稿。

1.定义产品说明书文本。

# 示例:产品说明书
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泡沫

原产国

    意大利
"""

2.编写Prompt初稿:要求大模型根据产品说明书文本内容给生成一个产品描述信息。

#   Prompt :基于说明书创建营销描述
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的营销描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

技术说明: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

执行结果:

### 中世纪风格办公家具系列 - SWC系列办公椅

**沉浸于古典与现代的完美融合**

将中世纪的魅力融入现代办公空间,我们的SWC系列办公椅不仅是一款家具,更是一件艺术品。每一件作品都精心设计,旨在提供极致的舒适体验,同时增添办公室的独特风格。

**多样化选择,满足个性化需求**

- **外观选择**:提供多种外壳颜色和底座涂层选项,确保您能找到与办公室装修风格相匹配的理想选择。
- **座位装饰**:可选配SWC-100塑料前后靠背装饰,或选择SWC-110系列,享受10种面料和6种皮革的全面装饰,让每一刻都感受到奢华。
- **底座涂层**:不锈钢、哑光黑色、光泽白色或铬,多样的底座涂层选项,为您的办公环境增添一抹亮色。
- **功能性设计**:椅子可配备或不配备扶手,适应不同用户的偏好。气动调节功能允许轻松调整座椅高度,确保最佳坐姿。

**精湛工艺,确保长久耐用**

- **结构稳固**:采用五个轮子的塑料涂层铝底座,确保稳定性与移动便利性。
- **高质量材料**:改性尼龙PA6/PA66涂层的铸铝底座滑动件,外壳厚度达10毫米,坚固耐用。
- **舒适体验**:HD36泡沫座椅,提供两种密度选择——中等(1.8磅/立方英尺)或高(2.8磅/立方英尺),确保长时间坐姿的舒适性。
- **灵活适配**:软地板或硬地板滚轮选项,适应各种地面条件;8个位置PU扶手,可根据个人喜好调整至最舒适的位置。

**适用广泛,品质保证**

无论是家庭办公室还是商业环境,SWC系列办公椅都能完美融入,提供优雅而实用的解决方案。符合合同使用资格,确保在任何专业环境中都能展现出色的性能。

**意大利制造,品质典范**

SWC系列办公椅由意大利制造,每一细节都体现了对品质的不懈追求。选择SWC,就是选择了经典与现代的完美结合,以及无与伦比的舒适体验。

立即体验SWC系列办公椅,开启您的中世纪办公之旅!

千问自由发挥的还不错,给出的描述信息量很大。

3.第一次优化:产品描述信息文本太长了,很难直接用在电商网站上,希望总结的文字能够精炼、短一些。

# 优化后的 Prompt,要求生成描述不多于 50 词
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

使用最多50个词。

技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

执行结果

源自意大利的中世纪风格办公椅,提供多种颜色与材质选择,配备气动调节功能,适合家庭与商务环境。尺寸适中,确保舒适与美观并存。


4.第二次优化:希望这个产品描述的受众是家具零售商,他们会更关心椅子的技术细节和材料,继续修改这个 Prompt ,让它更精确地描述椅子的技术细节。

# 优化后的 Prompt,说明面向对象,应具有什么性质且侧重于什么方面
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

使用最多50个单词。

技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

执行结果:

源自意大利的中世纪风格办公椅,采用改性尼龙PA6/PA66涂层铸铝底座,配备HD36泡沫座椅,提供多种颜色和材质选择,包括不锈钢、哑光黑、光泽白或铬底座涂层,适合家庭和商业环境。


5.第三次优化:想要在描述的结尾展示出产品ID,可以进一步改进这个 Prompt ,要求在描述的结尾,展示出说明书中的7位产品ID。

# 更进一步
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个7个字符的产品ID。

使用最多50个单词。

技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

执行结果:

源自意大利的中世纪风格办公椅,采用改性尼龙PA6/PA66涂层铸铝底座,配备HD36泡沫座椅,提供多种颜色与材质选择,适合各种环境。SWC-100/SWC-110


6.第四次优化:为产品描述信息中添加表格来描述产品尺寸内容,并将所有输出的内容格式化为可以在网页中使用的html格式。

# 要求它抽取信息并组织成表格,并指定表格的列、表名和格式
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个7个字符的产品ID。

在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。

给表格命名为“产品尺寸”。

将所有内容格式化为可用于网站的HTML格式。将描述放在
元素中。 技术规格:```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)
# 表格是以 HTML 格式呈现的,加载出来
from IPython.display import display, HTML

display(HTML(response))

执行结果:



三、总结

作为一名高效的提示词工程师(Prompt Engineer)关键在于掌握有效的开发Prompt的过程,而不是去寻求得到“完美的”Prompt。对于一些更复杂的应用程序,可以对多个样本(如数百张说明书)进行 Prompt 的迭代开发,并在样本集上进行评估。

最后,在更成熟的应用程序中,可以观察多个Prompt在多个样本集上的表现,测试平均或最差性能。但通常,**仅当**应用较成型之后,才推荐您通过这种评估方式,来精益求精。

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: