与 ChatGPT 进行有效交互的几种策略
在这篇文章中,您将了解即时工程。尤其,
- 如何在提示中提供对响应影响最大的信息
- 什么是角色、正面和负面提示、零样本提示等
- 如何迭代使用提示来利用 ChatGPT 的对话性质
- 废话不多说直接开始吧!!!
提示原则
快速工程是有效利用 LLM 的最重要方面,也是定制与 ChatGPT 交互的强大工具。它涉及制定清晰且具体的指令或查询,以从语言模型中得出所需的响应。通过仔细构建提示,用户可以引导 ChatGPT 的输出实现其预期目标,并确保更准确和有用的响应。
在 ChatGPT 的即时优化过程中需要记住一些基本技术。
首先,在提示开头提供明确的指令有助于设置上下文并定义模型的任务。指定预期答案的格式或类型也是有益的。此外,您可以通过在提示中加入系统消息或角色扮演技术来增强交互。
下面是使用上述技术的示例提示:
我希望您为食谱博客生成 10 个快速准备晚餐的想法,每个想法都包含一个标题和对这顿饭的一句话描述。这些博客是为寻找易于准备的家庭膳食的父母受众编写的。将结果输出为项目符号列表。
将该提示与以下内容进行比较:
写 10 篇食谱博客。
直观上,前者会获得更有用的结果。
请记住,您可以通过迭代地改进和试验提示来提高模型响应的质量和相关性,从而创建更富有成效的对话。不要害怕直接在 ChatGPT 上测试潜在的提示。
基本即时工程
现在您已经知道基本提示应该是什么样子了,让我们更详细地探讨一些基本的提示工程注意事项。
提示措辞
提示的措辞至关重要,因为它指导法学硕士生成所需的输出。以 ChatGPT 能够理解并准确回应的方式表达问题或陈述非常重要。
例如,如果用户不是某个领域的专家并且不知道表达问题的正确术语,ChatGPT 可能会遇到他们提供的答案受到限制。这类似于在不知道正确关键字的情况下在网络上搜索。
虽然很明显可以使用附加信息来创建更好的提示,但一般来说过于冗长不一定是最佳策略,这一点可能不太明显。最好不要将提示措辞视为一种单独的技术,而是将其视为连接所有其他技术的线索。
简洁
提示的简洁对于清晰度和精确性非常重要。精心设计的提示应该简洁明了,为 ChatGPT 提供足够的信息来理解用户的意图,但又不会过于冗长。然而,确保提示不要太简短至关重要,否则可能会导致歧义或误解。不够和太多之间的平衡可能很难实现。练习可能是掌握这项技能的最好方法。
提示中的措辞和简洁性很重要,因为它是为了具体化。
角色和目标
在即时工程中,角色是为法学硕士和目标受众分配的角色。例如,如果有人有兴趣让 ChatGPT 为一篇关于机器学习分类指标的博客文章撰写大纲,明确说明法学硕士将充当专家机器学习实践者,并且其目标受众是数据科学新手,这肯定会有助于提供富有成效的回应。是否应该用对话语言(“你将担任在凤凰城地区有 10 年经验的房地产经纪人”)或以更正式的方式(“作者:凤凰城房地产经纪人专家;受众:缺乏经验的家庭”)来表述买家“)可以在给定的场景中进行实验。
目标与角色密切相关。明确说明提示引导交互的目标不仅是一个好主意,而且是必要的。如果没有它,ChatGPT 如何知道要生成什么输出?
以下是考虑了角色和目标的有效提示:
您将担任一名在凤凰城地区拥有 10 年经验的房地产经纪人。您的目标是用一段文字总结菲尼克斯都市区排名前 5 的家庭社区。目标受众是没有经验的购房者。
除了明确陈述的角色和目标之外,请注意上面示例提示的相对特殊性。
积极和消极的提示
正负提示是指导模型输出的另一套框架方法。积极的提示(“执行此操作”)鼓励模型包含特定类型的输出并生成特定类型的响应。另一方面,负面提示(“不要这样做”)会阻止模型包含特定类型的输出并生成特定类型的响应。使用正面和负面提示可以极大地影响模型输出的方向和质量。
考虑以下示例提示:
您将担任一名在凤凰城地区拥有 10 年经验的房地产经纪人。您的目标是用一段文字总结菲尼克斯都市区排名前 5 的家庭社区。目标受众是没有经验的购房者。
上述提示的框架本质上是积极的,为 ChatGPT 应生成的内容提供了指导。让我们添加一些措辞来阻止某些输出,无论是内容还是格式。针对内容指导的负面提示的一个示例可以是在上面的示例中添加以下内容:
请勿包括距市中心 5 英里以内或机场附近的任何社区。
这个额外的约束应该有助于 ChatGPT 理解它应该生成什么输出。
先进的即时工程策略
让我们看看一些更高级的即时工程策略。虽然上一节提供了与 LLM 交互的一些一般准则,但您可以转向提示工程师工具包中常见的各种当代策略,以便能够以更复杂的方式与 ChatGPT 交互。
输入/输出提示
输入/输出提示策略涉及定义用户向 LLM 提供的输入以及 LLM 作为响应生成的输出。该策略对于促进工程至关重要,因为它直接影响 ChatGPT 响应的质量和相关性。
例如,用户可能会提供输入提示,要求 ChatGPT 为特定任务生成 Python 脚本,所需的输出将是生成的脚本。
下面是最基本策略的示例:提供单个输入并期望单个输出。
生成一个 Python 脚本,该脚本采用单个强制命令行参数 ([project]) 并执行以下任务:
– 创建一个名为 [project] 的新文件夹
– 在名为 [project].py 的新文件夹中创建一个文件
– 编写一个简单的文件Python脚本文件头到[project].py文件
零样本提示
零样本策略涉及法学硕士在没有任何示例或上下文的情况下生成答案。当用户想要快速回答而不提供额外细节时,或者当主题过于笼统以至于示例会人为地限制响应时,此策略可能很有用。例如:
为我的新狗生成 10 个可能的名字。
一键提示
一次性策略涉及法学硕士根据用户提供的单个示例或上下文生成答案。该策略可以指导 ChatGPT 的响应并确保其符合用户的意图。这里的想法是,一个例子将为模型提供比没有更多的指导。例如:
为我的新狗生成 10 个可能的名字。
我喜欢的狗名字是香蕉。
少发提示
少样本策略涉及法学硕士根据用户提供的一些示例或上下文片段生成答案。该策略可以指导 ChatGPT 的响应并确保其符合用户的意图。这里的想法是,多个示例将为模型提供比单个示例更多的指导。例如:
为我的新狗生成 10 个可能的名字。
我喜欢的狗名字包括:
– 香蕉
– 猕猴桃
– 菠萝
– 椰子
正如您所猜测的,提示中包含的示例越多,生成的输出就越接近所需的结果。对于零样本,可能不会建议任何水果名称;如果是一次,则可能有多个;在很少的情况下,建议可能完全由水果主题的名称组成。
思维链提示
思路链策略包括为法学硕士提供一些示例,帮助完善原始问题并确保得到更准确和全面的答案。所谓思路提示,是因为提示中包含了一些思路示例。它与 X-shot 提示技术不同,因为思维链提示的结构是为了鼓励批判性思维,并且旨在帮助发现 ChatGPT 可能没有考虑到的新见解或方法。
该技术还鼓励法学硕士输出其批判性推理。思维链提示的名片是“让我们一步一步思考”这句话,它通常附加在提示的末尾,研究表明这足以改善生成的结果。
考虑以下一次性提示示例:
问:乔有 20 个鸡蛋。他又买了两盒鸡蛋。每箱装有 12 个鸡蛋。乔现在有多少个鸡蛋?
答:答案是44。问:农夫约翰有 93 只鸡。如果他把 20 只卖给农夫比尔,然后又买了两倍数量的鸡,那么农夫约翰现在有多少只鸡?
并考虑 ChatGPT 的错误输出响应:
答案是73。
现在让我们看一下下面的思维提示链,它是为鼓励法学硕士的批判性思维而编写的:
问:乔有 20 个鸡蛋。他又买了两盒鸡蛋。每箱装有 12 个鸡蛋。乔现在有多少个鸡蛋?让我们一步步思考。
A:乔一开始有 20 个鸡蛋。2盒12个鸡蛋就是24个鸡蛋。20 + 24 = 44。因此,乔有 44 个鸡蛋,答案是 44。问:农夫约翰有 93 只鸡。如果他把 20 只卖给农夫比尔,然后又买了两倍数量的鸡,那么农夫约翰现在有多少只鸡?让我们一步步思考。
这次 ChatGPT 的回应有所不同:
答:农夫约翰向农夫比尔卖了 20 只鸡,所以他剩下 93 – 20 = 73 只鸡。然后他买了两倍于他卖掉的鸡的数量,所以他买了 2 * 20 = 40 只鸡。将这些新买的鸡添加到他剩余的棍子上,农夫约翰现在有 73 + 40 = 113 只鸡。
通过提供解决此问题所需的批判性思维过程的示例,并指导其逐步思考,ChatGPT 可以将相同的推理应用于我们的问题,并得出正确的答案。
自我批评
自我批评策略包括促使法学硕士评估其输出是否存在潜在的不准确之处或需要改进的地方。该策略可以确保 ChatGPT 提供的信息尽可能准确。它可以帮助用户调试提示并确定为什么他们没有得到符合预期的结果。
此类提示的示例如下:
请重新阅读您的上述回复。您发现您的回复有任何问题或错误吗?如果是这样,请找出这些问题或错误并进行必要的编辑。
此示例涉及指导 ChatGPT 使用自我批评来调试其错误代码:
查看您刚刚生成的代码。目前它没有运行。您是否能够看到任何可以纠正的语法错误或流程控制错误?如果是这样,请找出有问题的代码部分并重新生成它。
利用 ChatGPT 的自我修复能力是一项不容忽视的快速工程技术。
迭代
迭代或扩展策略涉及根据初始提示的输出向 LLM 提供后续提示。这涉及通过提出进一步的问题或根据每个连续的响应提出额外的请求来迭代结果。
例如,考虑让 ChatGPT 协助您为正在撰写的一本书创建大纲。第一个提示可能是这样的:
我正在写一本关于时间旅行理论的书。我还没有确定一个具体的主题。为这样一本书生成 5 个具体主题建议。对于每项建议,请提供标题和一段关于本书将涵盖的内容的描述。这本书将针对休闲读者。
现在,假设建议的主题之一如下:
标题:“时间悖论:探索时间旅行的复杂性”
简介:《时间悖论》深入探讨了时间旅行悖论中令人费解的错综复杂之处,探索它们所呈现的迷人难题。本书探讨了各种悖论,例如引导悖论、预定悖论和信息悖论等。……
然后,您可以使用后续提示对此进行迭代:
我会写你建议的书,《时间悖论:探索时间旅行的复杂性》。生成本书的章节大纲,包括章节和小节。
可能的输出摘录如下:
简介
– 定义时间悖论
– 时间旅行叙事中时间悖论的意义
– 章节结构概述第 1 章:Bootstrap 悖论
1.1 Bootstrap 悖论的本质
– 解释概念及其起源
– 来自文学、电影和现实生活轶事的关键例子
……
然后这个迭代可以继续。进一步的提示可能是:
让我们充实一下介绍。生成本章每个部分将涵盖的内容的两段摘要。介绍的章节大纲如下。
– – –
引言
– 定义时间悖论
– 时间旅行叙事中时间悖论的意义
– 章节结构概述
您可以看到在此示例中如何继续进一步迭代。可以使用类似的迭代来让 ChatGPT 生成代码:从概述开始,迭代概述以生成模块,在模块上生成以生成函数,最后在函数内生成代码。正如将大问题分解为更小、更易于管理的问题通常是人类成功的处方一样,ChatGPT 擅长以更容易处理的方式完成更大的任务。
协作电源技巧
看待 ChatGPT 的最佳方式是作为初级助理,无论是研究助理、编码助理、问题解决助理,还是您需要的任何助理。认识并培养这种协作氛围可以带来进一步的成功。以下是促进这种合作的一些快速提示。
提示提示
改进提示制作的一种方法是让 ChatGPT 参与其中。像这样的提示可能会带来有益的结果:
我现在可以使用什么提示来进一步帮助您完成此任务?
然后,ChatGPT 应该生成有用提示的建议,您可以使用它来加强其进一步的响应。
模型引导提示
模型引导提示涉及指示法学硕士提示您完成所请求的任务所需的信息。这类似于告诉某人“问我你需要知道什么”。
我希望你编写一个 Python 程序来管理我的客户信息,这些信息存储在 Google Sheet 中。为了完成这项任务,请询问我您需要回答的任何问题。
让 ChatGPT 来决定执行任务所需的信息是有益的,因为它可以消除一些猜测并阻止幻觉。当然,模型引导提示的精心设计的提示可能会让您从 ChatGPT 中回答许多不相关的问题,因此最初的提示仍然需要经过深思熟虑地编写。
相关文章:

与 ChatGPT 进行有效交互的几种策略
在这篇文章中,您将了解即时工程。尤其, 如何在提示中提供对响应影响最大的信息什么是角色、正面和负面提示、零样本提示等如何迭代使用提示来利用 ChatGPT 的对话性质 废话不多说直接开始吧!!! 提示原则 快速工程是有…...

华为云安装MySQL后,本地工具连接MySQL失败
华为云安装MySQL后,本地连接失败 排查问题步骤: 在此之前需要在MySQL创建用户,并赋予权限。 1、能否ping通。 在本地命令行(Windows:winR)通过ping命令,ping服务器地址,看能否ping通。不能则需要检查本地…...

Flink On Yarn模式部署与验证
session运行模式 该模式下分为2步,即使用yarn-session.sh申请资源,然后 flink run提交任务。 1、申请资源yarn-session.sh #在server1执行命令 /usr/local/flink-1.13.5/bin/yarn-session.sh -tm 1024 -n 2 -s 1 -d #申请2个CPU、2g内存 # -tm 表示每个…...

[数据库]对数据库事务进行总结
文章目录 1、什么是事务2、事务的特性(ACID)3、并发事务带来的问题4、四个隔离级别: 1、什么是事务 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红…...

【Lua学习笔记】Lua进阶——Table(2)
文章目录 Table的一万种用法二维数组类和结构体Table操作insert & removesortconcat 接上文【Lua学习笔记】Lua进阶——Table,迭代器 Table的一万种用法 二维数组 a {{ 1, 2, 3 },{ 4, 5, 6 }, } print(#a) -->2 for i1,#a dob a[i]for j1,#b doprint(b[…...

如何进行软件回归测试
什么是软件回归测试,如何进行回归测试,进行回归测试时有哪些常用的方法? 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的一种测试方法。回归测试是指重复以前的全部或部分的相同功能…...

php://filter绕过死亡exit
文章目录 php://filter绕过死亡exit前言[EIS 2019]EzPOP绕过exit 参考 php://filter绕过死亡exit 前言 最近写了一道反序列化的题,其中有一个需要通过php://filter去绕过死亡exit()的小trick,这里通过一道题目来讲解 [EIS 2019]EzPOP 题目源码&#…...

RS485/RS232自由转ETHERNET/IP网关profinet和ethernet区别
你是否曾经遇到过这样的问题:如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢?捷米的JM-EIP-RS485/232通讯网关,自主研发的ETHERNET/IP从站功能,完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线连接起…...

Hadoop_HDFS_常见的文件组织格式与压缩格式
参考资料 1. HDFS中的常用压缩算法及区别_大数据_王知无_InfoQ写作社区 2. orc格式和parquet格式对比-阿里云开发者社区 3.Hadoop 压缩格式 gzip/snappy/lzo/bzip2 比较与总结 | 海牛部落 高品质的 大数据技术社区 4. Hive中的文件存储格式TEXTFILE、SEQUENCEFILE、RCFILE…...
算法与数据结构(四)--排序算法
一.冒泡排序 原理图: 实现代码: /* 冒泡排序或者是沉底排序 *//* int arr[]: 排序目标数组,这里元素类型以整型为例; int len: 元素个数 */ void bubbleSort (elemType arr[], int len) {//为什么外循环小于len-1次?//考虑临界情况…...

【C/C++】C++11 在各编译器版本支持详情
C11 是在 2011 年发布的 C 标准,各编译器对 C11 的支持情况如下: GCC:GCC 4.8 及以上版本支持 C11。Clang:Clang 3.3 及以上版本支持 C11。Visual Studio:Visual Studio 2010 及以上版本支持部分 C11 特性,…...

flutter开发实战-图片保存到相册
flutter开发实战-图片保存到相册。保存相册使用的是image_gallery_saver插件 一、引入image_gallery_saver插件 在pubspec.yaml中引入插件 # 保存图片到相册image_gallery_saver: ^1.7.1# 权限permission_handler: ^10.0.0二、保存到相册的代码 使用image_gallery_saver将图…...

数据结构---栈
(一)栈之基础补充 C语言内存分配 对于一个C语言程序而言,内存空间主要由五个部分组成 代码段(text)、数据段(data)、未初始化数据段(bss),堆(heap) 和 栈(stack) 组成,其中代码段,数据段和BSS段是编译的时候由编译器分配的,而堆和栈是程序运行的时候由系统分配的。布局如…...

【RabbitMQ】golang客户端教程1——HelloWorld
一、介绍 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。如果你未安装RabbitMQ,可以浏览我上一篇文章Linux系统服务器安装RabbitMQ RabbitMQ是一个消息代理&…...

计算机图形学笔记2-Viewing 观测
观测主要解决的问题是如何把物体的三维“模型”变成我们在屏幕所看到的二维“图片”,我们在计算机看到实体模型可以分成这样几步: 相机变换(camera transformation)或眼变换(eye transformation):想象把相机放在任意一个位置来观测物体&#…...

Redis - 三大缓存问题(穿透、击穿、雪崩)
缓存穿透 概念: 查询一个数据库中也不存在的数据,数据库查询不到数据也就不会写入缓存,就会导致一直查询数据库 解决方法: 1. 缓存空数据 如果数据库也查询不到,就把空结果进行缓存 缺点是 - 消耗内存 2. 使用布…...

web自动化测试-PageObject 设计模式
为 UI 页面写测试用例时(比如 web 页面,移动端页面),测试用例会存在大量元素和操作细节。当 UI 变化时,测试用例也要跟着变化, PageObject 很好的解决了这个问题。 使用 UI 自动化测试工具时(包…...

golang json.Marshal() 结构体、map 携带 符号 转成 “\u0026“
问题:数据结构中的值 带有 & > < 等符号,当我们要将 struct map 转成json时,使用 json.Marshal() 函数,此函数会将 值中的 & < > 符号转义 为 类似 "\u0026" 像我们某个结构体中…...

【设计模式|行为型】备忘录模式(Memento Pattern)
说明 备忘录模式是一种行为型设计模式,通过捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在需要时恢复对象到原先的状态。备忘录模式包含三个核心角色:。 发起人(Originator):负责…...

Redis与其他缓存解决方案(如Memcached)的区别是什么?
Redis和其他缓存解决方案(如Memcached)在设计理念、功能和特点上有一些区别,以下是它们的主要区别: 数据类型支持:Redis支持多种数据类型(如字符串、哈希表、列表、集合、有序集合等)࿰…...

《面试1v1》Kafka的ack机制
🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结…...

基于双 STM32+FPGA 的桌面数控车床控制系统设计
桌 面数控 设 备 对 小 尺寸零件加工在成 本 、 功 耗 和 占 地 面 积等方 面有 着 巨 大 优 势 。 桌 面数控 设 备 大致 有 3 种 实 现 方 案 : 第 一种 为 微 型 机 床搭 配 传统 数控系 统 , 但 是 桌 面数控 设 备 对 成 本 敏感 ; 第二 种 为 基 于 PC…...

ES-5-进阶
单机 & 集群 单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器 性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中 配置服务器集群时,集…...

Java面试准备篇:全面了解面试流程与常见问题
文章目录 1.1 Java面试概述1.2 面试流程和注意事项1.3 自我介绍及项目介绍1.4 常见面试问题 在现代职场中,面试是求职过程中至关重要的一环,特别是对于Java开发者而言。为了帮助广大Java开发者更好地应对面试,本文将提供一份全面的Java面试准…...

Go语言进阶语法八万字详解,通俗易懂
文章目录 File文件操作FileInfo接口权限打开模式File操作文件读取 I/O操作io包 文件复制io包下的Read()和Write()io包下的Copy()ioutil包总结 断点续传Seeker接口断点续传 bufio包bufio包原理Reader对象Writer对象 bufio包bufio.Readerbufio.Writer ioutil包ioutil包的方法示例…...

Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)
漏洞简介 Apache RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。CVE-2023-37582 中,由于对 CVE-2023-33246 修复不完善,导致在Apache RocketMQ NameServer 存在未授权访问的情况下,攻击者可构造恶意请求以RocketMQ运…...

Kotlin Multiplatform 使用 CocoaPods 创建多平台分发库
Kotlin Multiplatform 支持直接创建Framework 方式和使用CocoaPods 方式创建Framework。 1、不同之处在于创建的时候需要选择不同的方式。 2、使用CocoaPods 方式还需要在 build.gradle(.kts) 文件中添加内容 在build.gradle(.kts) 文件中添加完成后,执行一下文件。…...

前端食堂技术周刊第 92 期:VueConf 2023、TypeChat、向量数据库、Nuxt 服务器组件指南
美味值:🌟🌟🌟🌟🌟 口味:整颗牛油果酸奶 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先…...

用C语言构建一个手写数字识别神经网络
(原理和程序基本框架请参见前一篇 "用C语言构建了一个简单的神经网路") 1.准备训练和测试数据集 从http://yann.lecun.com/exdb/mnist/下载手写数字训练数据集, 包括图像数据train-images-idx3-ubyte.gz 和标签数据 train-labels-idx1-ubyte.…...

vue关闭ESlint
在 vue.config.js里边写上这一句代码 lintOnsave:false写完后重启一下项目...