LLM 系列 | 05:ChatGPT Prompt的迭代优化

news/2024/12/13 12:32:21

简介

梅子留酸软齿牙,芭蕉分绿与窗纱。日长睡起无情思,闲看儿童捉柳花。小伙伴们好,我是微信公众号 《小窗幽记机器学习》 的小编:卖冰棍的小男孩。

更多、更新文章欢迎关注微信公众号:小窗幽记机器学习。后续会持续整理模型加速、模型部署、模型压缩、LLM、AI艺术等系列专题,敬请关注。

紧接前文LLM 系列 | 04:ChatGPT Prompt编写指南,今天这篇小作文主要介绍ChatGPT Prompt 编写过程中的一些迭代优化细节。
在机器学习里,先完成一个能跑通的模型,才能对它进行改进迭代;提示工程(prompt engineering)也一样,最初版本的 prompt 或许不够完美,需要学会如何一步步细化要求,进行迭代改进。本文会以将一份产品说明书转为产品营销文案为例展开说明如何根据自己的需求优化Prompt。

任务: 生成产品营销说明

这里有一个椅子的产品说明书,描述说它是一个中世纪灵感家族的一部分,讨论了构造、尺寸、椅子选项、材料等等,产地是意大利。现在想要使用这份说明书帮助营销团队为在线零售网站撰写营销说明书。

# 示例:产品说明书
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泡沫原产国意大利
"""

基于上述说明书生成一份产品营销说明:

# 提示:基于说明书创建营销描述
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泡沫,原产国为意大利。我们的产品不仅美观大方,而且质量可靠,是您家庭或商业场所的理想选择。

问题1:太长

从上面的结果看,似乎很好地将技术说明书转为一份产品营销说明,但太长了。我们可以在长度上进行限制,比如最多使用50个字。

因此,通过要求它限制生成文本长度来解决这一问题。优化后的 prompt:

# 优化后的 Prompt,要求生成描述不多于 50 词
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。最多使用50个词。技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

输出结果如下:

中世纪风格办公家具系列,包括文件柜、办公桌、书柜、会议桌等。多种颜色和涂层可选,可带或不带扶手。底座涂层选项为不锈钢、哑光黑色、光泽白色或铬。适用于家庭或商业场所。符合合同使用资格。意大利制造。

尝试看看结果的长度:

# 由于中文需要分词,此处直接计算整体长度
print(len(response))

输出结果是 97

如果限制改为最多使用50个字。
输出结果如下:

中世纪风格办公家具系列,包括文件柜、办公桌、书柜、会议桌等。多种颜色和涂层可选,可带或不带扶手。适用于家庭或商业场所。

print(len(response))这时候是59。还是能够比较精准控制长度!

问题2:如何关注指定方面的细节

如果这个网站并不是直接向消费者销售,而是旨在向家具零售商销售家具,他们会更关心椅子的技术细节和材料。在这种情况下,我们可以修改Prompt,让它更精确地描述椅子的技术细节。即,要求它专注于与目标受众相关的方面。

优化后的 prompt:

# 优化后的 Prompt,说明面向对象,应具有什么性质且侧重于什么方面
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。使用最多50个单词。技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

输出结果如下:

这款中世纪风格办公家具系列包括文件柜、办公桌、书柜和会议桌等,适用于家庭或商业场所。可选多种外壳颜色和底座涂层,底座涂层选项为不锈钢、哑光黑色、光泽白色或铬。椅子可带或不带扶手,可选软地板或硬地板滚轮,两种座椅泡沫密度可选。外壳底座滑动件采用改性尼龙PA6/PA66涂层的铸铝,座椅采用HD36泡沫。原产国为意大利。

如果想要进一步在描述的结尾加上产品ID。可以进一步改进这个提示,要求在描述的结尾,包括在技术说明中的每个7个字符产品ID。

进一步优化 prompt:

# 更进一步
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。在描述末尾,包括技术规格中每个7个字符的产品ID。使用最多50个单词。技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

输出结果如下:

这款中世纪风格的办公家具系列包括文件柜、办公桌、书柜和会议桌等,适用于家庭或商业场所。可选多种外壳颜色和底座涂层,底座涂层选项为不锈钢、哑光黑色、光泽白色或铬。椅子可带或不带扶手,可选塑料前后靠背装饰或10种面料和6种皮革的全面装饰。座椅采用HD36泡沫,可选中等或高密度,座椅高度44厘米,深度41厘米。外壳底座滑动件采用改性尼龙PA6/PA66涂层的铸铝,外壳厚度为10毫米。原产国为意大利。产品ID:SWC-100/SWC-110。

问题3:如何表格形式展示结果

以上是许多开发人员通常会经历的迭代prompt开发的简短示例。像上一章中所演示的那样,prompt的编写应该保持清晰和明确,并在必要时给模型一些思考时间。在这些要求的基础上,通常值得首先尝试编写 prompt ,看看会发生什么,然后从那里开始迭代地完善 prompt,以逐渐接近所需的结果。因此,许多成功的Prompt都是通过这种迭代过程得出的。下面展示一个更复杂的prompt示例,可能会让大家对ChatGPT的能力有更深入的了解。

这里添加了一些额外的说明,要求它抽取信息并组织成表格,并指定表格的列、表名和格式,还要求它将所有内容格式化为可以在网页使用的 HTML。

优化后的Prompt:

# 要求它抽取信息并组织成表格,并指定表格的列、表名和格式
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。在描述末尾,包括技术规格中每个7个字符的产品ID。在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。给表格命名为“产品尺寸”。将所有内容格式化为可用于网站的HTML格式。将描述放在<div>元素中。技术规格:```{fact_sheet_chair}```
"""response = get_completion(prompt)
print(response)

输出结果如下:

<div>
<h2>中世纪风格办公家具系列 - 椅子</h2>
<p>这款椅子是中世纪风格办公家具系列的一部分,适用于家庭或商业场所。它有多种外壳颜色和底座涂层可选,可选塑料前后靠背装饰或10种面料和6种皮革的全面装饰。椅子可带或不带扶手,底座涂层选项为不锈钢、哑光黑色、光泽白色或铬。它符合合同使用资格,是一款高品质的办公家具。</p>
<p>该椅子的结构是五个轮子的塑料涂层铝底座,气动椅子调节,方便升降。座椅采用HD36泡沫,可选两种座椅泡沫密度:中等(1.8磅/立方英尺)或高(2.8磅/立方英尺)。外壳底座滑动件采用改性尼龙PA6/PA66涂层的铸铝,外壳厚度为10毫米。该椅子的原产国是意大利。</p>
<p>产品ID:SWC-100</p>
</div><table><caption>产品尺寸</caption><tr><th>宽度</th><td>20.87英寸</td></tr><tr><th>深度</th><td>20.08英寸</td></tr><tr><th>高度</th><td>31.50英寸</td></tr><tr><th>座椅高度</th><td>17.32英寸</td></tr><tr><th>座椅深度</th><td>16.14英寸</td></tr>
</table>

将内容以html方式存储和打开。如果是 notebook,可以如下直接IPython Notebook直接展示:

# 表格是以 HTML 格式呈现的,加载出来
from IPython.display import display, HTMLdisplay(HTML(response))

结果如下:

在这里插入图片描述

小结

总之,编写 prompt 的思路就是先有一个简单的版本,然后在迭代中优化!后续会以文本摘要、文本推断、文本转换、文本拓写和聊天机器人为例具体说明如何编写对应的 prompt,敬请关注!


https://dhexx.cn/news/show-4626234.html

相关文章

Android使用Kotlin代理实现Bundle数据传递封装

Android使用Kotlin代理实现Bundle数据传递封装 前言一、封装思路二、实现步骤1.创建数据传递类&#xff0c;此类作为核心2.fragment拓展&#xff0c;这里只讲fragment毕竟activity的跳转就涉及到路由框架了3.代理3.1. activity代理&#xff0c;这个部分是独立的&#xff0c;只要…

【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要)

【Python】猎聘网招聘数据爬虫&#xff08;Python网络爬虫课设简要&#xff09; 注&#xff1a; 本文仅供学习交流使用&#xff01; 合肥学院-20信管-20302211009 项目文件可自行前往博客主页下载或联系作者qq&#xff08;3416252112&#xff09;。 爬取数据耗时约50分钟&am…

KEYSIGHT是德DSOX4034A 示波器 350 MHz

KEYSIGHT是德DSOX4034A 示波器 350 MHz&#xff0c;是德4000 X 系列拥有一系列引以为傲的配置&#xff0c;包括采用了电容触摸屏技术的 12.1 英寸显示屏、InfiniiScan 区域触摸触发、100 万波形/秒捕获率、MegaZoom IV 智能存储器技术和标配分段存储器。 是德DSO-X4034A 主要特…

Wscript sleep.vbs

举个例子&#xff0c;我们要延时5秒打开gdh.txt这个文件&#xff0c;可以用以下几个方法 方法一&#xff1a;ping 缺点:时间精度为1秒,不够精确 echo off ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二&#xff1a;vbs start /wait 缺点&#xff1a;生成临时文件 有点&a…

MySQL数据库从入门到精通学习第8天(数据表的查询)

数据表的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大&#xff0c;是最常用的查询语句。他具有一个固定的格式&#xff0c;如下&#xff1a; SELECT 查询的内容 FROM 数据…

礼物的最大价值 JZ47

目录 链接 描述 示例 代码 演示结果 链接 礼物的最大价值_牛客题霸_牛客网 描述 示例 代码 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param grid int整型vector<vect…

分享通过复旦微魔方来找到FM33LG048串口3无法发送和接收原因的例子

今天来分享一个关于开发国产芯片(复旦微FM33LG048)串口3时候遇到一个无法发送和接收原因&#xff0c;通过使用官网的图形配置工具来成功解决问题的案例。 具体情况是这样的&#xff0c;该芯片官网有提供相应的keil参考例子&#xff0c;因为我要用到这个芯片上面的五个串口&…

多传感器融合SLAM --- 7.LIO-SAM论文解读(紧耦合的激光雷达惯性SLAM)

目录 1 论文解读 1.1 摘要部分 1.2 Introduction 1.3 LIDAR INERTIAL ODOMETRY VIAS MOOTHING AND MAPPING 1.3.1 System Overview

【复变函数笔记】解析函数的定义和性质

文章目录 解析函数的等价定义解析函数的性质 解析函数的等价定义 解析函数的定义&#xff1a; f ( z ) f(z) f(z)在区域内可导则在区域内解析&#xff0c;在一点解析就是在某一邻域内可导。解析函数不可能只在一点解析。柯西-黎曼方程&#xff1a;函数 f ( z ) u ( x , y ) …

python基于DeeplabV3Plus开发构建裂缝分割识别系统,并实现裂缝宽度计算测量

在我之前的文章中已经有不少基于裂缝场景的数据开发构建的模型了&#xff0c;感兴趣的话可以自行移步阅读&#xff0c;如下&#xff1a; 《基于yolov5sbifpn实践隧道裂缝裂痕检测》 《基于YOLOV7的桥梁基建裂缝检测》 《水泥路面、桥梁基建、隧道裂痕裂缝检测数据集》 《基…