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 官方的使用指南总归提供了宝贵的入门指引。

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

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

相关文章

区块链技术下的DApp与电商:融合创新,开启商业新纪元

区块链技术的蓬勃发展正引领着一种新型应用程序的崛起——去中心化应用程序(DApp)。DApp并非传统的中心化应用,它构建于去中心化网络之上,融合了智能合约与前端用户界面,为用户提供了全新的交互体验。智能合约&#xf…

webpack 常用插件

clean-webpack-plugin 这个插件的主要作用是清除构建目录中的旧文件,以确保每次构建时都能得到一个干净的环境。 var { CleanWebpackPlugin } require("clean-webpack-plugin") const path require("path");module.exports {mode: "de…

MATLAB 2024a软件下载安装教程

1-首先下载Matlab,以下迅雷云链接,里面有全版本的matlab,根据自己的需要下载即可,建议下载最新版的,功能会更多,当然内存也会更大。 迅雷云盘迅雷云盘https://pan.xunlei.com/s/VNgH_6VFav8Kas-tRfxAb3XOA…

大数据面试题 —— Spark数据倾斜及其解决方案

目录 1 调优概述2 数据倾斜发生时的现象3 数据倾斜发生的原理4 如何定位导致数据倾斜的代码4.1 某个 task 执行特别慢的情况4.2 某个 task 莫名其妙内存溢出的情况5 查看导致数据倾斜的 key 的数据分布情况6 数据倾斜的解决方案6.1 使用 Hive ETL 预处理数据6.2 过滤少数导致倾…

神之浩劫2下载教程 MOBA新游神之浩劫2在哪下载/怎么下载

《神之浩劫2Smite 2》重新定义了MOBA游戏的征服模式,为玩家带来更多的互动和进展。最近的开发者深度挖掘展示了游戏地图的全新设计,既简化了基本操作,又丰富了游戏选择。游戏中的敌人也有了新的进展方式。例如,击败火巨人和金之怒…

vue 脚手架 创建vue3项目

创建项目 命令:vue create vue-element-plus 选择配置模式:手动选择模式 (上下键回车) 选择配置(上下键空格回车) 选择代码规范、规则检查和格式化方式: 选择语法检查方式 lint on save (保存就检查) 代码文件中有代码不符合 l…

如何运用结构化思维来规划个人发展

结构化思维不仅在工作中非常有用,在日常生活中同样可以发挥巨大作用。无论是解决家庭琐事、规划个人发展,还是做出重要决策,结构化思维都能帮助我们更有条理地思考和行动。 一、解决生活中的问题 生活中总会遇到各种各样的问题&#xff0…

力扣HOT100 - 131. 分割回文串

解题思路&#xff1a; class Solution {List<List<String>> res new ArrayList<>();List<String> pathnew ArrayList<>();public List<List<String>> partition(String s) {backtrack(s,0);return res;}public void backtrack(Str…

vue知识

一、初始vue Vue核心 Vue简介 初识 (yuque.com) 1.想让Vue工作&#xff0c;就必须创建一个Vue实例&#xff0c;且要传入一个配置对象 2.root容器里的代码依然符合html规范&#xff0c;只不过混入了一些特殊的Vue语法 3.root容器里的代码被称为【Vue模板】 4.Vue实例和容器…

Web-SpringBootWeb

创建项目 后面因为报错&#xff0c;所以我把jdk修改成22&#xff0c;仅供参考。 定义类&#xff0c;创建方法 package com.start.springbootstart.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotati…

手机运营商二要素验证接口:确保业务操作安全可靠

手机运营商二要素验证接口是一种通过与电信运营商合作的方式&#xff0c;检验手机用户的手机号码与姓名是否一致的服务。这个接口可以广泛应用于各种需要用户实名认证的场景&#xff0c;例如电商、游戏、直播以及金融等行业。 这个接口的作用非常重要&#xff0c;它可以帮助企…

简要说说软分叉和硬分叉。

前言 一、软分叉 二、硬分叉 三、用途 总结 前言 软分叉和硬分叉是区块链技术中的两个重要概念&#xff0c;它们通常与加密货币的网络升级有关。下面我将分别解释这两个概念&#xff0c;并提供一些例子来帮助理解。下面是方便理解软分叉和硬分叉的图 一、软分叉 软分叉是一…

QT程序通过GPIB-USB-HS转接线控制数字万用表

1、硬件准备 1.1、数字万用表 型号 &#xff1a;Agilent 34401A 前面图示&#xff1a; 后面图示&#xff1a;有GPIB接口 1.2、GPIB-USB-HS转接线 2、GPIB协议基础了解 2.1、引脚 8条数据线&#xff1a;DIO1 ~ DIO8 5条管理线&#xff1a;IFC、ATN、REN、EOI、SRQ 3条交握线…

C# Web控件与数据感应之 ListControl 类

目录 关于数据感应 ListControl 类类型控件 范例运行环境 数据感应通用方法 设计 实现 调用示例 数据源 调用 小结 关于数据感应 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;诸如 System.Web.UI.WebControls 里…

基于FPGA的数字信号处理(2)--什么是定点数?

在实际的工程应用中&#xff0c;往往会进行大量的数学运算。运算时除了会用到整数&#xff0c;很多时候也会用到小数。而我们知道在数字电路底层&#xff0c;只有「高电平1」和「低电平0」的存在&#xff0c;那么仅凭 0和1 该如何表示小数呢&#xff1f; 数字电路中&#xff0…

鸿蒙原生应用元服务开发-Web加载本地页面

将本地页面文件放在应用的rawfile目录下&#xff0c;开发者可以在Web组件创建的时候指定默认加载的本地页面 &#xff0c;并且加载完成后可通过调用loadUrl()接口变更当前Web组件的页面。 在下面的示例中展示加载本地页面文件的方法&#xff1a; 将资源文件放置在应用的resou…

Arcpy入门学习笔记(三):数据属性的读取

Arcpy入门学习笔记&#xff08;三&#xff09;&#xff1a;数据属性的获取 文章目录 Arcpy入门学习笔记&#xff08;三&#xff09;&#xff1a;数据属性的获取常用的属性Describe对象属性&#xff08;部分&#xff09;数据集属性&#xff08;部分&#xff09;表属性&#xff0…

锂电池SOH预测 | 基于LSTM的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

[docker] 多容器项目 - PHP+MySQL+Nginx+utility containers

[docker] 多容器项目 - PHPMySQLNginxutility containers 这个项目总共会配置 6 个容器&#xff0c;主要还是学习一下 docker 的使用和配置&#xff0c;目标是&#xff1a; 本机不安装 PHP、Nginx 安装部分全都交给 docker 容器实现 可以运行一个 Laravel 网页项目 修改本机…

基于遗传算法的TSP算法(matlab实现)

一、理论基础 TSP(traveling salesman problem,旅行商问题)是典型的NP完全问题&#xff0c;即其最坏情况下的时间复杂度随着问题规模的增大按指数方式增长&#xff0c;到目前为止还未找到一个多项式时间的有效算法。TSP问题可描述为&#xff1a;已知n个城市相互之间的距离&…