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

news2024/11/16 5:41:20

简介

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

更多、更新文章欢迎关注微信公众号:小窗幽记机器学习。后续会持续整理模型加速、模型部署、模型压缩、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, HTML

display(HTML(response))

结果如下:

在这里插入图片描述

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu的安装教程

文章目录 一、Ubuntu 的安装教程1、Ubuntu的镜像下载2、服务器版的安装教程2.1.1、允许 root 远程登录 3、桌面版的安装教程3.1.1、允许 root 远程登录 一、Ubuntu 的安装教程 1、Ubuntu的镜像下载 ​ 这里我选择阿里云的镜像下载你也可以选择Ubuntu的官网下载 Ubuntu官网 如…

【Set集合案例】成绩排序和不重复的随机数

Set集合案例&#xff1a;成绩排序和不重复的随机数 1.成绩排序 需求&#xff1a;用TreeSet集合存储多个学生信息&#xff08;姓名&#xff0c;语文成绩&#xff0c;数学成绩&#xff09;&#xff0c;并遍历该集合 ​ 要求&#xff1a;按照总分从高到底出现 思路&#xff1a;…

都2023年了,Python 和Java 哪个更适合做自动化测试?

大家好。从事软件测试很多年了&#xff0c;从各个大厂一路摸爬滚打&#xff0c;现在我有幸供职于字节跳动。个人也是从功能测试慢慢爬到了自动化测试这条路上。所以针对这个问题&#xff0c;我还有点发言权。 记得我一开始从功能准备转型到自动化测试&#xff0c;和很多“涉事…

Qt QPushButton背景图片

一、问题 使用控件显示图片缩略图&#xff0c;当点击控件时&#xff0c;弹出窗口显示完整的图片 二、分析 应该用按钮控件&#xff0c;用信号槽连接。按钮控件是有参数icon&#xff0c;但是只能显示控件中&#xff0c;不能覆盖在整个控件上。 三、方法一&#xff1a;使用st…

线段树算法(C++/C)

目录​​​​​​​ 一、线段树算法的概念 二、为什么需要线段树 三、线段树算法的实现 &#xff08;1&#xff09;建树 &#xff08;2&#xff09;查询 &#xff08;3&#xff09;修改 &#xff08;4&#xff09;综合代码&#xff0c;求区间和 &#xff08;5&#xff…

从“互联网+”到“互联网医疗+”,免费互联网医院开创新格局

随着互联网的发展&#xff0c;各行各业都在积极探索“互联网”时代下的创新模式。其中&#xff0c;医疗领域也开始了自己的变革之路&#xff0c;从传统的医疗模式转向了“互联网医疗”的新型格局。免费互联网医院的出现&#xff0c;则更是为这一变革注入了新的活力。 所谓“互联…

【嵌入式系统应用开发】FPGA——基于HC-SR04超声波测距

文章目录 前言环境目标结果 1 实验原理1.1 超声波原理1.2 硬件模块时序图1.3 模块说明 2 设计文件2.1 时钟分频2.2 超声波测距2.3 超声波驱动 3 实验验证3.1 编译3.3 硬件测试 总结 前言 环境 硬件 DE2-115 HC-SR04超声波传感器软件 Quartus 18.1 目标结果 使用DE2-115开发…

【Linux驱动】认识驱动(驱动的概念、驱动分类)

目录 1、什么是驱动&#xff1f; 2、应用程序调用驱动基本流程 3、file_operations 结构体 4、驱动的分类 1、什么是驱动&#xff1f; 驱动就是一段程序&#xff0c;能够获取外设或者传感器数据、控制外设。驱动获取到的数据会提交给应用程序。 在 Linux 中一切皆为文件&…

【实用篇】Elasticsearch02

文章目录 分布式搜索引擎021.DSL查询文档1.1.DSL查询分类1.2.全文检索查询1.2.1.使用场景1.2.2.基本语法1.2.3.示例1.2.4.总结 1.3.精准查询1.3.1.term查询1.3.2.range查询1.3.3.总结 1.4.地理坐标查询1.4.1.矩形范围查询1.4.2.附近查询 1.5.复合查询1.5.1.相关性算分1.5.2.算分…

Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决

Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决 问题 Linux系统中&#xff0c;在rc.local里面配置的启动命令等不能能够在开机的时候进行自启动 问题解决 解决问题排查中最大的麻烦&#xff0c;需要进行reboot重启 查看rc-local的运行状态 systemctl status r…

clickhouse简介与实战

文章目录 1&#xff1a;简介1.1&#xff1a;CH是什么&#xff1f;1.2&#xff1a;CH优缺点1.2.1&#xff1a;优势1.2.2&#xff1a;缺点 1.3&#xff1a;架构设计 2&#xff1a;CH接口3&#xff1a;CH引擎1&#xff1a;数据库引擎3.1.1:mysql引擎 2&#xff1a;表引擎3.2.1&…

路径规划算法:基于模拟退火优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于模拟退火优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于模拟退火优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

基于flask的web应用开发——访问漂亮的html页面以及页面跳转

目录 0. 前言1. html基本知识2. 编写html文本3. 在Flask中设置访问html4. 实现点击跳转 0. 前言 本节学习如何在flask应用程序下让用户访问你提前制作好的html页面 操作系统&#xff1a;Windows10 专业版 开发环境&#xff1a;Pycahrm Comunity 2022.3 Python解释器版本&am…

(学习日记)2023.04.27

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

防火墙之IPSec VPN实验

防火墙IPSec VPN实验 原理概述: 指采用IPSec协议来实现远程接入的一种VPN技术&#xff0c;IPSec全称为Internet Protocol Security&#xff0c;是由Internet Engineering Task Force (IETF) 定义的安全标准框架&#xff0c;在公网上为两个私有网络提供安全通信通道,通过加密通道…

【数据结构】单调栈

目录 1.概述2.代码框架2.1.单调递增栈2.2.单调递减栈 3.应用3.1.应用一3.2.应用二 1.概述 &#xff08;1&#xff09;单调栈是一种特殊的栈&#xff0c;它在普通栈的基础上要求从栈顶到栈底的元素是单调的&#xff0c;如果栈中的元素从栈顶到栈底是单调递增的&#xff0c;那么…

Linux CGroup 原理

Linux CGroup 原理 1、CGroup简介 cgroups是Linux下控制一个&#xff08;或一组&#xff09;进程的资源限制机制&#xff0c;全称是control groups&#xff0c;可以对cpu、内存等资源做精细化控制。 开发者可以直接基于cgroups来进行进程资源控制&#xff0c;比如8核的机器上…

JAVA用tess4j识别复杂的验证码,自定义字库,计算题验证码,jTessBoxEditor,tess4j,验证码识别

JAVA用tess4j识别复杂的验证码&#xff0c;自定义字库&#xff0c;计算题验证码 场景JAVA用tess4j识别文本MAVEN依赖traineddata文件下载识别英文识别中文 JAVA用tess4j识别验证码常见验证码的类型识别 自定义字库&#xff0c;提高识别率下载jTessBoxEditor解压运行准备素材合并…

微信小程序入门笔记

常用技术&#xff1a;开源库 图表&#xff1a;wxcharts-min.js 网络通信&#xff1a;类似 ajax ui: WeUi JSON 配置文件 小程序中&#xff0c;包含唯一的全局配置文件 app.json&#xff0c;以及每个页面的配置文件 page.json。每单页页面相应的 JSON 文件会覆盖与 app.json相同…

门控时钟检查(clock gating check)的理解和设计应用(上)

在笔者的一篇老文Clock Gating之浅见 中&#xff0c;一起探讨过工具处理门控时钟的方法和门控时钟所带来的相关收益和面积代价。除此之外&#xff0c;门控时钟的检查&#xff08;clock-gating check&#xff09;在STA中也有相应的处理方式&#xff0c;通过这篇文章&#xff0c;…