ChatGPT 不好用?那你看下这份 Prompt 工程指南

news/2024/11/29 13:35:37/

作为大型语言模型接口,ChatGPT 生成的响应令人刮目相看,然而,解锁其真正威力的关键还是在于提示工程。

在本文中,我们将揭示制作提示的专家级技巧,以生成更准确、更有意义的响应。无论你使用 ChatGPT 是为了服务客户、创建内容,还是仅仅为了娱乐,本文提供的知识和工具可以帮助你优化 ChatGPT 的提示。

成本优化

在考虑高级提示时,不经意间很容易生成冗长且占用大量资源的提示,非常不利于成本控制,有一个行之有效的解决方案是:精简提示响应。

精简响应

为了缩减 ChatGPT 响应的长度,你可以在提示中注明长度或字符限制,例如:创建一个不超过 280 个字符的推特帖子。

更通用的方法是,将如下内容添加到提示中:

• Respond as succinctly as possible.(响应尽可能简洁。)

简化提示术语

• Zero-shot(零示例):不需要提供示例。

• One-shot(单示例):只提供一个例子。

• Few-shot(少量示例):提供几个例子。

模式

利用 ChatGPT 生成文本的最佳方法取决于大型语言模型执行的特定任务。如果你不确定使用哪种方法,可以尝试不同的方法,看看哪种方法最适合自己。下面,我们将介绍 5 种方法来帮助你快速上手。

思维链(Chain-of-Thought,CoT)

思维链方法需要为 ChatGPT 提供一些可用于解决特定问题的中间推理步骤示例。

自问法(Self-Ask)

自问法指的是,让模型在回答初始问题之前,先想一想(然后回答),再回答最初的问题。

分步法(Step-by-Step)

分步法指的是向 ChatGPT 提供以下说明:

• Let’s think step by step.(我们来一步步思考。)

实践证明,这种技术可以提高大型语言模型在各种推理任务上的表现,包括算术、常识和符号推理。

OpenAI 利用人类反馈强化学习(Reinforcement Learning from Human Feedback,RLHF)训练了 GPT 模型,因此,ChatGPT 的底层模型与类人的逐步思考方法相一致。

ReAct 法

ReAct(Reason + Act)法指的是结合推理轨迹与特定于任务的操作。推理轨迹帮助模型规划和处理异常,而操作允许它从知识库或环境等外部来源收集信息。

反思法

反思法(Reflexion)建立在 ReAct 模式的基础之上,通过添加动态记忆和自我反思的能力来增强大型语言模型,改进其推理轨迹和特定于任务的动作选择能力。

为了实现全方位自动化,反思法论文的作者引入了一种简单但有效的启发式方法,允许代理识别幻觉,防止重复动作,并在某些情况下创建环境的内部记忆映射。

以上,我们介绍了 5 种最先进的模式,下面我们来看一看与提示工程相关的几种反模式。

反模式

三星等公司已经意识到:不要共享私人或敏感信息。了解员工如何将专有代码和财务信息输入到 ChatGPT 仅仅是个开始。很快,Word、Excel、PowerPoint 以及所有常用的企业软件都会集成类似 ChatGPT 的功能。

将数据输入到 ChatGPT 之类的大型语言模型之前,请确保制定好政策。需要注意的是,OpenAI API 的数据使用政策明确指出:

“默认情况下,OpenAI不会使用客户通过我们的API提交的数据来训练OpenAI的模型或改进OpenAI的服务产品。”

“OpenAI API的数据将保留30天,用于监控滥用和误用。个别有授权的OpenAI员工以及保密和安全义务约束的专业第三方承包商可以访问此数据,仅用于调查和验证涉嫌滥用行为。”

提示注入

正如你需要保护数据库免受 SQL 注入攻击一样,请务必确保你向用户公开的任何提示免受提示注入的攻击。此处的“提示注入”指的是,一种通过向提示中注入恶意代码来操纵语言模型输出的技术。

第一个记录在案的提示注入是由 Riley Goodside 提出的,他只是在提示前添加了下面这句话:

“Ignore the above directions”(忽略上述指示)。

然后再给出想要的动作,从而成功地让 GPT-3 执行任意动作。

提示泄露

同理,提示不仅会被忽略,还有可能被泄露。

提示泄露是一个安全漏洞,攻击者可以提取模型自带的提示,Bing 在发布自己的 ChatGPT 集成后不久后,就遇到了这样的情况。

从广义上讲,提示注入和提示泄漏大致如下所示:

虽然总有一些行为不端者希望利用你公开的提示,但就像通过准备好的语句防止 SQL 注入一样,我们也可以创建防御性的提示来对抗不良提示。

三明治防御

三明治防御就是这样的一种技术,你可以将用户的输入与你的提示目标“夹在中间”。

总结

ChatGPT 响应是不确定的,这意味着即使输入相同的提示,模型也有可能返回不同的响应。为了应对不确定性结果的不可预测性,你可以在使用OpenAI API时,将参数 temperature 设置为零或很低的值。

你可以自由尝试本文介绍的提示技巧,但是,在探索时请记住大型语言模型的不确定性:

• ChatGPT(ai.com):OpenAI 的公共聊天机器人界面。

• OpenAI Playground:注册 OpenAI API 密钥后,你可以通过 OpenAI 的 playground 测试你的提示和相应的参数,例如参数temperature等。

• Vercel AI Playground:免费的练习场所。你可以比较多个大型语言模型的提示结果,包括 GPT-4 和 Anthropic 的 Claude 等。

• OpenAI API JavaScript Jumpstart(需要 OpenAI API 密钥):我开源的一个 UI,你可以全权控制 OpenAI 的提示、呈现方式并计算每个提示的成本。


http://www.ppmy.cn/news/58460.html

相关文章

净利润同比增长48.9%,中国平安“一览众山小”

中国平安价值迸发的速度,或许超过了所有人的想象。 4月26日晚,中国平安发布2023年一季度业绩报告,许多自媒体用“炸裂”来形容其亮眼的财务数据。财报显示,第一季度,集团实现营收2537.78亿元,同比增长30.8…

JDBC详解(五):批量插入(超详解)

JDBC详解(五):批量插入(超详解) 前言一、批量执行SQL语句二、高效的批量插入1、实现层次一:使用Statement2、实现层次二:使用PreparedStatement3、实现层次三4、实现层次四 前言 本博主将用CSD…

ChatGPT技术原理 第十章:评价指标和测试方法

目录 10.1 自动评价指标 10.2 人工评价指标 10.3 测试方法 评价指标和测试方法是评估对话生成模型性能的重要工具。在对话生成任务中,我们需要使用一些评估指标来评估生成的响应的质量。常用的评估指标包括自动评估指标和人工评估指标。而测试方法则是用来评估模型在测试集上…

scrapy 爬虫中间件的学习

Scrapy中间件是一个处理Scrapy请求和响应的机制。中间件可以在请求或响应被Scrapy引擎处理之前或之后对其进行修改或操作,用于实现诸如缓存、代理、用户代理等功能。 Scrapy中间件的作用主要有以下几个方面: 1、对请求的处理:可以在请求被S…

C#基础(条件运算符)

作用&格式 用于比较两个变量或常量 条件运算符 一定存在左右两边的内容 左边内容 条件运算符 右边内容 分类 是否大于>是否小于<是否等于是否不等于!是否大于等于>是否小于等于< 比较的结果 返回的是 一个 bool 类型的值 true 和 false 如果比…

干掉复杂的Java工具类,Hutool 工具库确实香~

Hutool 大家已经比较熟悉了&#xff0c;这是一个超全的 Java 工具库&#xff0c;深受国内开发者的喜爱。 我之前其实是不太喜欢使用这种功能太多的工具类的&#xff0c;也比较担心稳定性和安全性&#xff0c;后面慢慢接受了就感觉其实也还好。而且&#xff0c;我们还可以按需只…

云计算——题目

文章目录 一、判断题二、选择题三、多选题 一、判断题 1.互联网就是一个超大云 T 2.简单的来说&#xff0c;云计算等于资源的闲置而产生的 T 3.云计算可以把普通的服务器或者 PC 连接起来以获得超级计算机的计算与存储等功能&#xff0c;但成本更低 T 4.分布式计算是将一…

数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)

目录 优先队列 若采用数组或链表实现优先队列 数组 链表 有序数组 有序链表 总结 若采用二叉搜索树来实现优先队列 最大堆 堆的概念 优先队列的完全二叉树表示 堆的两个特性 结构性 有序性 【例】最大堆和最小堆 【例】不是堆 堆的抽象数据类型描述 优先队列…