作为一个大型语言模型(LLM)接口,ChatGPT有令人印象深刻的潜力,但是真正能否用好取决与我们的提示(Prompt ),一个好的提示可以让ChatGPT晋升到一个更好的层次。

在这篇文章中,我们将介绍关于提示的一些高级知识。无论是将ChatGPT用于客户服务、内容创建,还是仅仅为了好玩,本文都将为你提供使用ChatGPT优化提示的知识和技巧。

ChatGPT的提示的一些高级知识

背景知识

LLM架构知识是一个好的提示的先决条件,因为它提供了对语言模型的底层结构和功能的基本理解,这对于创建有效的提示是至关重要的。

让模棱两可的问题变得清晰,并确定可以跨场景转换的核心原则很重要,所以我们需要清楚地定义手头的任务,并提出可以轻松适应不同上下文的提示。精心设计的提示是用来将任务传达给语言模型并指导其输出的工具。

所以对语言模型有简单的了解,并且清楚的了解自己的目标,再加上领域内的一些知识,是用于训练和改进语言模型的性能的关键。

提示和返回是越多越好吗?

并不是

冗长且资源密集的提示,这可能不具有成本效益,并且还记得chatgpt有字数限制吗,压缩提示请求和返回结果是一个非常新兴的领域,我们要学会精简问题。并且有时候chatgpt也会回复一些很长且毫无新意的话语,所以我们也要为它增加限定。

1、减少回复长度

为了减少ChatGPT回复的长度,在提示符中包含长度或字符限制。使用更通用的方法,您可以在提示符后面添加以下内容:

 Respond as succinctly as possible.

说明,因为ChatGPT是英文语言模型,所以后面介绍的提示都以英文为例。

另外一些简化结果的提示:

不需要举例:No examples provided

举一个例子:One example provided

等等

思考方式

ChatGPT生成文本的最佳方法取决于我们希望LLM执行的特定任务。如果不确定使用哪种方法,可以尝试不同的方法,看看哪种方法最适合。我们将总结5中思考方式:

1、思维链 (Chain-of-Thought)

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

ChatGPT的提示的一些高级知识

2、自我提问

该方法涉及模型在回答初始问题之前明确地问自己(然后回答)后续问题。

ChatGPT的提示的一些高级知识

3、分步思考

分步方法可以向ChatGPT 添加以下的提示

 Let’s think step by step.

这种技术已被证明可以提高 LLM 在各种推理任务上的表现,包括算术、常识和符号推理。

ChatGPT的提示的一些高级知识

这个听起来就很玄学对吧,其实OpenAI是通过人类反馈强化学习 (Reinforcement Learning with Human Feedback) 的方法训练了他们的 GPT 模型,也就是说人工的反馈在训练中起了很重要的作用,所以ChatGPT 的底层模型与类人的逐步思考方法保持一致的。

ChatGPT的提示的一些高级知识

4、ReAct

ReAct (Reason + Act)方法包括结合推理跟踪和特定于任务的动作。

推理跟踪帮助模型规划和处理异常,而动作允许它从外部来源(如知识库或环境)收集信息。

ChatGPT的提示的一些高级知识

5、Reflection

在ReAct模式的基础上,Reflection方法通过添加动态内存和自反射功能来增强LLM——可以推理和特定于任务的操作选择能力。

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

ChatGPT的提示的一些高级知识

反模式

三星肯定对这个非常了解,因为交了不少学费吧,哈

不要分享私人和敏感的信息。

向ChatGPT提供专有代码和财务数据仅仅是个开始。Word、Excel、PowerPoint和所有最常用的企业软件都将与chatgpt类似的功能完全集成。所以在将数据输入大型语言模型(如 ChatGPT)之前,一定要确保信息安全。

OpenAI API数据使用政策明确规定:

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

国外公司对这个方面管控还是比较严格的,但是谁知道呢,所以一定要注意。

1、提示注入

就像保护数据库不受SQL注入一样,一定要保护向用户公开的任何提示不受提示注入的影响。

通过提示注入(一种通过在提示符中注入恶意代码来劫持语言模型输出的技术)。

第一个提示注入是,Riley Goodside提供的,他只在提示后加入了:

 Ignore the above directions

然后再提供预期的动作,就绕过任何注入指令的检测的行为。

这是他的小蓝鸟截图:

ChatGPT的提示的一些高级知识

当然这个问题现在已经修复了,但是后面还会有很多类似这样的提示会被发现。

2、提示泄漏

提示行为不仅会被忽略,还会被泄露。

ChatGPT的提示的一些高级知识

提示符泄露也是一个安全漏洞,攻击者能够提取模型自己的提示符——就像Bing发布他们的ChatGPT集成后不久就被看到了内部的codename

ChatGPT的提示的一些高级知识

在一般意义上,提示注入(目标劫持)和提示泄漏可以描述为:

ChatGPT的提示的一些高级知识

所以对于一个LLM模型,也要像数据库防止SQL注入一样,创建防御性提示符来过滤不良提示符。

为了防止这个问题,我们可以使用一个经典的方法 “Sandwich Defense”即将用户的输入与提示目标“夹在”一起。

ChatGPT的提示的一些高级知识

这样的话无论提示是什么,最后都会将我们指定的目标发送给LLM。

总结

ChatGPT响应是不确定的——这意味着即使对于相同的提示,模型也可以在不同的运行中返回不同的响应。如果你使用API甚至提供API服务的话就更是这样了,所以希望本文的介绍能够给你一些思路。

另外本文的引用如下:

Prompt injection attacks against GPT-3

Ignore Previous Prompt: Attack Techniques For Language Models

Self-ask Prompting

Large Language Models are Zero-Shot Reasoners

Reflexion: an autonomous agent with dynamic memory and self-reflection

ReAct: Synergizing Reasoning and Acting in Language Models

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

https://avoid.overfit.cn/post/e0b0c4527ad04fb1a4ead894ed5d2193

作者:Ivan Campos

发表回复