OpenAI发布GPT-4.0使用指南

大家好,ChatGPT 自诞生以来,凭借划时代的创新,被无数人一举送上生成式 AI 的神坛。在使用时,总是期望它能准确理解我们的意图,却时常发现其回答或创作并非百分之百贴合期待。这种落差可能源于我们对于模型性能的过高期望,亦或者在使用时未能找到最有效的沟通途径。

正如探险者需要时间适应新的地形,与 ChatGPT 的互动也需要耐心和技巧,此前 OpenAI 官方发布了 GPT-4 使用指南 Prompt engineering,这里面记载了驾驭 GPT-4 的六大策略,本文将对其进行介绍助力与 ChatGPT 的交互沟通。

1.写出清晰指令

描述详细的信息

ChatGPT 无法判断我们隐含的想法,所以应该尽可能明确告知要求,如回复的长短、写作的水平、输出的格式等。越少让 ChatGPT 去猜测和推断意图,输出结果满足要求的可能性越大。例如,当让他写一篇心理学的论文,给出的提示词应该长这样:

请帮助我撰写一篇有关「抑郁症的成因及治疗方法」的心理学论文,要求:需要查询相关文献,不能抄袭或剽窃;需要遵循学术论文格式,包括摘要、引言、正文、结论等部分;字数 2000 字以上。

图片

让模型扮演某个角色

术业有专攻,指定模型扮演专门的角色,它输出的内容会显得更加专业。

例如:请你扮演一名警探小说家,用柯南式推理描述一起离奇命案。要求:需匿名处理,字数 1000 字以上,剧情跌宕起伏。

图片

使用分隔符清楚地划分不同部分

三引号、XML 标签、节标题等分隔符可以帮助划分需要区别对待的文本节,帮助模型更好地消除歧义。

图片

指定完成任务所需的步骤

将部分任务拆成一系列条例清晰的步骤,这样更有利于模型执行这些步骤。

图片

提供示例

提供适用于所有示例的一般性说明通常比通过示例演示更有效,但在某些情况下提供示例可能更容易。

如果告诉模型要学会游泳,只需要踢腿和摆动手臂,这就是一个一般性的说明。而如果给模型展示一个游泳的视频,展示踢腿和摆动手臂的具体动作,那就是通过示例来说明。

指定输出长度

我们可以告诉模型,希望它生成的输出有多长,这个长度可以以单词、句子、段落、要点等方式进行计数。

受限于模型内部机制和语言复杂性的影响,最好还是按照段落、要点来划分,这样效果才会比较好。

2.提供参考文本

让模型使用参考文本回答

假如我们手头上有更多参考信息,可以「喂」给模型,并让模型使用提供的信息来回答。

图片

让模型引用参考文本来回答

如果输入中已经包含了相关的知识文档,用户可以直接要求模型通过引用文档中的段落来为其答案添加引用,尽可能减少模型胡说八道的可能性。

在这种情况下,输出中的引用还可以通过编程方式验证,即通过对所提供文档中的字符串进行匹配来确认引用的准确性。

图片

3.复杂任务拆分简单子任务

使用意图分类来识别与用户查询最相关的指令

处理那些需要很多不同操作的任务时,可以采用一个比较聪明的方法。首先把问题分成不同的类型,看看每一种类型需要什么操作,这就好像在整理东西时,先把相似的东西放到一起。

接着可以给每个类型定义一些标准的操作,就像给每类东西贴上标签一样,这样一来,就可以事先规定好一些常用的步骤,比如查找、比较、了解等。

而这个处理方法可以一层层地递进,如果想提出更具体的问题,就可以根据之前的操作再进一步细化。这么做的好处是,每次回答用户问题时,只需要执行当前步骤需要的操作,而不是一下子把整个任务都做了。这不仅可以减少出错的可能性,还能更省事,因为一次性完成整个任务的代价可能比较大。

图片

处理很长对话应用场景的简化

模型在处理对话时,受制于固定的上下文长度,不能记住所有的对话历史。想要解决这个问题,其中一种方法是对之前的对话进行总结,当输入的对话长度达到一定的限制时,系统可以自动总结之前的聊天内容,将一部分信息作为摘要显示,或者可以在对话进行的同时,在后台悄悄地总结之前的聊天内容。

另一种解决方法是在处理当前问题时,动态地选择与当前问题最相关的部分对话,这个方法涉及到一种叫做「使用基于嵌入的搜索来实现高效的知识检索」的策略。

简单来说,就是根据当前问题的内容,找到之前对话中与之相关的部分。这样可以更有效地利用之前的信息,让对话变得更有针对性。

分段总结长文档并递归构建完整摘要

由于模型只能记住有限的信息,不能直接用来总结很长的文本,为了总结长篇文档,可以采用一种逐步总结的方法。

就像阅读一本书时,可以通过一章又一章地提问来总结每个部分。每个部分的摘要可以串联起来,形成对整个文档的概括。这个过程可以一层一层地递归,一直到总结整个文档为止。

如果需要理解后面的内容,可能会用到前面的信息。在这种情况下,另一个有用的技巧是在阅读到某一点之前,先看一下摘要,并了解这一点的内容。

4.给模型时间思考

指示模型得出结论前提供解决方案

有时直接让模型判断学生的答案,它可能判断不准确,为了让模型更准确,可以先让模型自己做一下这个数学题,先算出模型自己的答案来,然后再让模型对比一下学生的答案和模型自己的答案。

先让模型自己计算,它就更容易判断出答案,让模型从最基本的第一步开始思考,而不是直接判断答案,可以提高模型的判断准确度。

图片

使用内心独白隐藏模型的推理过程

有时候在回答特定问题时,模型详细地推理问题是很重要的。但对于一些应用场景,模型的推理过程可能不适合与用户共享。

为了解决这个问题,有一种策略叫做内心独白。这个策略的思路是告诉模型把原本不想让用户看到的部分输出整理成结构化的形式,然后在呈现给用户时,只显示其中的一部分,而不是全部。

例如,假设我们在教某个学科,要回答学生的问题,如果直接把模型的所有推理思路都告诉学生,学生就不用自己琢磨了,所以我们可以用内心独白这个策略:先让模型完整思考问题,把解决思路都想清楚,然后只选择模型思路中的一小部分,用简单的语言告诉学生。

或者可以设计一系列的问题:先只让模型自己想整个解决方案,不让学生回答,然后根据模型的思路,给学生出一个简单的类似问题,学生回答后,让模型评判学生的答案对不对。最后模型用通俗易懂的语言,给学生解释正确的解决思路,这样就既训练了模型的推理能力,也让学生自己思考,不会把所有答案直接告诉学生。

图片

询问模型是否遗漏内容

假设让模型从一个很大的文件里,找出跟某个问题相关的句子,模型会将句子告诉我们。但有时候模型判断失误,在本来应该继续找相关句子的时候就停下来了,导致后面还有相关的句子被漏掉。

这个时候,就可以询问模型是否还有其他相关的句子,接着它就会继续查询相关句子,模型就能找到更完整的信息。

5.使用外部工具

使用基于嵌入的搜索实现高效的知识检索

如果在模型的输入中添加一些外部信息,模型就能更聪明地回答问题。比如,用户问有关某部电影的问题,可以把电影的一些重要信息(比如演员、导演等)输入到模型里,这样模型就能给出更准确的答案。

文本嵌入是一种能够度量文本之间关系的向量。相似或相关的文本向量更接近,而不相关的文本向量则相对较远,这意味着我们可以利用嵌入来高效地进行知识检索。

具体来说,我们可以把文本语料库切成块,对每个块进行嵌入和存储。然后,我们可以对给定的查询进行嵌入,并通过矢量搜索找到在语料库中最相关的嵌入文本块(即在嵌入空间中最接近查询的文本块)。

使用代码执行准确计算或调用外部 API

语言模型并不总是能够准确地执行复杂的数学运算或需要很长时间的计算,在这种情况下可以告诉模型写一些代码来完成任务,而不是让它自己去做计算。

具体做法是,可以指导模型把需要运行的代码按照一定的格式写下,比如用三重反引号包围起来。当代码生成结果后,提取出来并执行。

最后,可以把代码执行引擎(比如 Python 解释器)的输出当作模型下一个问题的输入,这样就能更有效地完成一些需要计算的任务。

图片

另一个很好的使用代码执行的例子是使用外部 API(应用程序编程接口),如果告诉模型如何正确使用某个 API,它就可以写出能够调用该 API 的代码。

可以给模型提供一些展示如何使用 API 的文档或者代码示例,引导模型学会利用这个 API。简单说,通过给模型提供一些关于 API 的指导,它就能够创建代码,实现更多的功能。

图片

警告:执行由模型生成的代码本质上是不安全的,任何尝试执行此操作的应用程序都应该采取预防措施,需要使用沙盒代码执行环境来限制不受信任的代码可能引起的潜在危害。

让模型提供特定功能

通过 API 请求,向模型传递一个描述功能的清单,进而能够根据提供的模式生成函数参数。生成的函数参数将以 JSON 格式返回,再利用它来执行函数调用。

把函数调用的输出反馈到下一个请求中的模型里,就可以实现一个循环,这就是使用 OpenAI 模型调用外部函数的推荐方式。

6.系统测试变更

对一个系统做修改时,很难判断这些修改是好是坏,有时候修改在某些情况下是好的,在其他情况下是坏的。

为了评价系统输出的质量,若问题只有一个标准答案,计算机可以自动判断对错,没有标准答案可以用其他模型来判断质量。

此外可以让人工来评价主观的质量,又或者计算机和人工结合评价当问题的答案很长时,不同的答案质量差别不大,这时就可以让模型来评价质量。

随着模型变得更先进,可以自动评价的内容会越来越多,需要人工评价的越来越少,评价系统的改进非常难,结合计算机和人工是最好的方法。

图片

在和 ChatGPT 人机交流的过程中,提示词看似简单,却又是最为关键的存在。在数字时代,提示词是拆分需求的起点,通过设计巧妙的提示词,我们可以将整个任务拆分成一系列简明的步骤。

这样的分解不仅有助于模型更好地理解用户的意图,同时也为用户提供了更为清晰的操作路径,就好像给定了一个线索,引导一步步揭开问题的谜底。

你我的需求如同涌动的江河,而提示词就像是调节水流方向的水闸,它扮演着枢纽的角色,连接着用户的思维与机器的理解。毫不夸张地说,一个好的提示词既是对用户深度理解的洞察,也是一种人机沟通的默契。

当然,要想真正掌握提示词的使用技巧,仅依靠 Prompt engineering 还远远不够,但 OpenAI 官方的使用指南总归提供了宝贵的入门指引。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百万人都在求的网络安全学习路线,渗透漏洞防御总结(附图)

前言 不折腾的网络安全,和咸鱼有什么区别 目录 二、 前言三 、同源策略 3.1 什么是同源策略 3.2 为什么需要同源策略四 、XSS 4.1 概览 4.2 介绍 4.3 防御五 、CSRF 5.1 概览 5.2 介绍 5.3 防御六、 SQL 注入七 、流量劫持 7.1 DNS 劫持 7.2 HTTP 劫持…

企业微信hook接口协议,ipad协议http,发送小程序

发送小程序 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信send_userid是long要发送的人或群idisRoom是bool是否是群消息 请求示例 {"uuid":"543ed7f3-6ec1-4db8339a140f7","send_userid":788130255…

「生存即赚」链接现实与游戏,打造3T平台生态

当前,在线角色扮演游戏(RPG)在区块链游戏市场中正迅速崛起,成为新宠。随着区块链技术的不断进步,众多游戏开发者纷纷将其游戏项目引入区块链领域,以利用这一新兴技术实现商业价值的最大化。在这一趋势中&am…

Android如何使用XML自定义属性

1、定义 在res/values文件下定义一个attrs.xml文件,代码如下: 2、使用 在布局中使用, 示例代码如下: 3、获取 最终来到这里:

异常处理Exception(二)

文章目录 1、自定义异常类1、定义消息类2、自定义异常类 2、调用3、测试总结 ABAP预定义的异常类在某些时候并不能精确地描述异常,此时就需要自定义异常类。 1、自定义异常类 1、定义消息类 2、自定义异常类 在Local Types中自定义异常类,当异常触发时…

开箱即用的使用体验!Alibaba Cloud Linux 的演进之旅

随着云计算的发展,越来越多的云上用户对操作系统提出了新的诉求。在 2023 龙蜥操作系统大会阿里云分论坛上,阿里云操作系统团队贾正华分享了 Alibaba Cloud Linux(以下简称“Alinux”)的发展历程及未来展望,介绍了 Ali…

unittest_parameterized批量测试测试用例

import unittest from parameterized import parameterizeddef add(x, y):return xy"""问题:如果有三组数据需要测试?[(1,1,2), (1,2,3), (0,3,3)] """def get_data():return [(1, 2, 3), (3, 0, 3), (2, 1, 3)]# 定义测试…

第3篇:创建Nios II工程之Hello_World<二>

Q:上一期介绍完基本设计流程和实验原理,接着我们完成系统硬件设计部分,包括Platform Designer系统及Quartus工程。 A:依次搜索并添加Nios II Processor、JTAG UART、On-Chip Memory和System ID IP组件,连接各组件并As…

C#窗体控件ColorDialog

介绍 可以获取颜色,然后对其他控件的颜色属性进行设置。 构造方式 直接把ColorDialog控件拖动到Form窗口。 常用属性 AllowFullOpen 可以控制是否使用自定义颜色,true表示可使用,否,表示不可使用。 AnyColor 如果为tr…

Leetcode—682. 棒球比赛【简单】(stoi函数、accumulate函数)

2024每日刷题&#xff08;120&#xff09; Leetcode—682. 棒球比赛 实现代码 class Solution { public:int calPoints(vector<string>& operations) {vector<int> v;for(const string& oper: operations) {if(oper "") {v.push_back(v.back(…

渗透新思路 | 仿真环境下内存转储分析和模糊测试的全记录

本文由安全研究人员hugsy于2024年03月26日更新并发表于blahcat博客上&#xff0c;本文主要记录了其在进行内存安全和模糊测试任务时发现的一些技术实现方式&#xff0c;主要讨论的是仿真环境下内存转储分析和模糊测试方法。本文旨在为红队和蓝队研究人员提供新的思路&#xff0…

数字化技术可以促进中国企业创新吗?

数字化技术可以显著促进中国企业的创新。数字化技术&#xff0c;包括人工智能&#xff08;AI&#xff09;、区块链&#xff08;Blockchain&#xff09;、云计算&#xff08;Cloud computing&#xff09;、大数据&#xff08;big Data&#xff09;等&#xff0c;被称为ABCD技术&…

TruLens

文章目录 一、关于 TruLensHow it works 二、安装三、快速使用Get DataInCreate Vector StoreBuild RAG from scratchSet up feedback functions.Construct the appRun the app 一、关于 TruLens Evaluate and Track LLM Applications 官网&#xff1a;https://www.trulens.o…

【Redis 开发】详细搭建Redis主从,并了解数据同步原理

Redis主从搭建 Redis主从搭建Redis的主从架构数据全同步原理数据的增量同步优化Redis主从集群 Redis主从 搭建Redis的主从架构 主从节点可以实现读写分离&#xff0c;将都大量的读操作分担与诸多从节点当中去 从节点可以叫做slave或者replica 如何搭建&#xff1a; 在一台…

node 项目启动报 ERROR Failed to compile with 1 errors 错误

问题 node项目通过npm run dev启动时出现ERROR Failed to compile with 1 errors 错误&#xff0c;具体信息如下&#xff1a; ✖ WebpackCompiled with some errors in 366.81msERROR Failed to compile with 1 errors …

如何买到“30元以下”的免备案服务器?

对于预算有限的个人和小型企业来说&#xff0c;30 元以下免备案服务器的价格非常亲民。用户可以以极低的成本获得所需的服务器资源&#xff0c;这对创业者、个人开发者、学生和站长来说简直不要太划算&#xff0c;毕竟配置可以升级真不够后面再付费升级也行。 何为“免备案”&…

xLua背包实践

准备工作 环境&#xff0c;代码 在C#代码方面我们需要准备单例模式基类&#xff0c;AB包管理器&#xff0c;lua解析器管理器 详情请见AB包管理器 xlua详解 然后是Xlua包和AB包&#xff0c;具体导入方法也在上面的链接中 然后是lua的三个文件 具体代码&#xff1a; JsonUtil…

主观赋权法、客观赋权法、组合赋权法、评价指标体系构建

在科研领域&#xff0c;为了对某个研究主题进行深入的探讨和评估&#xff0c;我们往往需要构建一套科学合理的评价体系&#xff0c;并为其中的各项评价指标赋予相应的权重。比如&#xff0c;在评价一项新技术的性能时&#xff0c;我们可能会考虑其创新性、实用性、成本效益等多…

git的学习笔记

git的学习使用 参考了书和好多网上搜到的连接&#xff0c;忘了记录参考的了&#xff0c;太多了&#xff08;&#xff09;捋出来一个大致的较为全面的git个人使用流程。 &#xff08;一&#xff09;基本操作&#xff1a; 安装配置好git 创建目录 init 初始化一个仓库&#xff0…

Golang | Leetcode Golang题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; // 贪心算法 func canJump(nums []int) bool {cover : 0n : len(nums)-1for i : 0; i < cover; i { // 每次与覆盖值比较cover max(inums[i], cover) //每走一步都将 cover 更新为最大值if cover > n {return true}}return false } …