ChatGPT Prompt工程浅谈

ChatGPT Prompt工程浅谈ChatGPT 火爆出圈了 有些人惊叹于它的能力 当然也有部分人觉得也就那样 这就不得不提 Prompt 了 据说 相关文献 1 ChatGPT 效果好不好完全取决于你的 Prompt 看来 Propmt 也成一个技术活儿了 当我这么想的时候 没想到国外居然已经有了成熟的售卖 Prompt

大家好,我是讯享网,很高兴认识大家。

ChatGPT 火爆出圈了,有些人惊叹于它的能力,当然也有部分人觉得也就那样。这就不得不提 Prompt 了,据说【相关文献1】,ChatGPT 效果好不好完全取决于你的 Prompt,“看来 Propmt 也成一个技术活儿了”。

当我这么想的时候,没想到国外居然已经有了成熟的售卖 Prompt 的网站[1],这玩意儿居然成了 NFT(Non-Fungible Token)。

在DataWhale团队群里一次讨论 ChatGPT 时,有原话如下:

NLP真的考虑要转行了ChatGPT已经抹平了任务、行业、语言以后也不用分那么多task榜单了,不用管行业强大的一批,LM as SAAS 将统治一切

讯享网
LM as SAAS,其实应该是 LMAS——Language Model as Service。

业内大家也是差不多的想法,尤其是张俊林博士的观点个人比较认同——NLP 工程师的确不容乐观。这里不是说这个职业的职责不容乐观,而是说整个行业可能会受到冲击。

有点跑偏了,说回 Prompt,春节时就想用 ChatGPT 生成一些祝福语,突然发现自己掌握的 Prompt 出来的效果不太好了。Google 了一下结果就发现了 The Art of ChatGPT Prompting: A Guide to Crafting Clear and Effective Prompts[2] 这本电子书,再一搜,发现这个领域居然已经发展到如斯境地。本着学习的心态,阅读整理了一些 Prompt 工程的资料(见《文献和参考——核心文献》),是有此文。本文主要介绍关于 ChatGPT Prompt 的方法,我会结合这些资料加上自己的理解写出来,同时会在中文环境下做相关试验。

背景简介

首先,我们不妨自己先想一想,会怎么写 Prompt。随便一想就一大堆:

  • 简单日常对话。比如询问对方姓名,是否开心等等。
  • 常识问答。比如问今天是周几,冬天如何取暖等等。
  • 知识问答。比如热力学第二定律是什么,设计模式中的策略模式适用于哪些场景等等。
  • 文本改写。比如给出一段话,让它改简单一些,或换个风格,同时给出要的风格是什么样子的。
  • 所有的 NLP 任务,包括:文本分类、实体标注、信息抽取、翻译、生成、摘要、阅读理解、推理、问答、纠错、关键词提取、相似度计算等等。具体做法就是给出文本,然后告诉你要做什么任务就行,甚至可以指定输出格式。

这里面大部分内容 ChatGPT 都可以完成的相当不错,至少读起来非常通顺流畅,具有逻辑性。当然,我们不排除其中有一些问题,尤其是知识类的(有时候真的是一本正经的在乱说),关于这方面可以阅读【相关文献2】和【3】。

Prompt 其实在 NLP 领域是一个比较成熟的东西,比如那篇 2021 年的综述[3],再比如 Google 的 FLAN[4] 里面也提到了 T5、GPT3 和 FLAN Prompt 的区别,还有这篇多任务 Prompt[5] 提供了大量的 Prompt 示例(这篇 Paper 161 页,Prompt 就有 133 页)。那怎么到了 ChatGPT 这里 Prompt 一下就有如此地位呢?我觉得主要有两个原因:

  • ChatGPT 强大的 In-Context 学习能力。在 GPT3[6] 中提到,上下文长度为 2048,也就是说,Prompt 也可以这么长。而且 GPT3 本来就是生成模型,生成的内容和前面给出的提示是直接关联的。
  • ChatGPT 在训练时用了 Prompt(InstructGPT【相关文献4】和【5】),也就是说相比其他模型,它本身就在 Prompt 上下了不少功夫。他用的这个 Prompt 其实是 Instruct,用来引导和激发模型的 In-Context 能力。

因此,从设计的角度来看,要想发挥 ChatGPT 的最大能力,不仅仅要靠它的 In-Context 能力,Prompt 也应该仔细设计,或者说尽量贴近训练时的样子。换句话说,它是遇强则强,遇弱则弱,遇傻逼则傻逼。。。

Prompt设计

ChatGPT 有不少特点,比如:跨语言、同时服务多人(伸缩性)、个性化(利用历史记录)等。但最值得一提的是定制化,也就是可以定制语气、风格、类型等,这个也可以包含在你的 Prompt 里。

Prompt原则

首先要说的是设计原则,主要包含以下几个:

  • 清晰,切忌复杂或歧义,如果有术语,应定义清楚。
  • 具体,描述语言应尽量具体,不要抽象活模棱两可。
  • 聚焦,问题避免太泛或开放。
  • 简洁,避免不必要的描述。
  • 相关,主要指主题相关,而且是整个对话期间,不要东一瓢西一瓤。

举几个【核心文献1】中的例子(换成了中文):

讯享网# 有效 Prompt 你能总结一下《锻炼的好处》一文的要点吗? # 聚焦、相关 巴黎最好的素食餐厅有哪些? # 具体、相关 # 无效 Prompt 你能告诉我关于这个世界的什么? # 宽泛、开放 你能帮我做作业吗? # 开放 你好 # 无目的、不聚焦

当然,这几个例子是站在「你要获得有效信息」的基础上说的。也就是说,这些原则是针对你想要通过 ChatGPT 获取到有用信息或完成特定任务。抛开这个前提,一些开放、宽泛的问题也无可厚非。一方面,可以了解模型在这类问题上的能力;另一方面,ChatGPT 本身并没有规定你必须问什么不问什么,这种问题也是一种信息。

事实上,ChatGPT(或者说,一个有追求的机器人)也是希望我们把它当做合作伙伴(助理)、导师(教育)、朋友(聊天、情感)、百科全书(信息获取)。我们甚至可以想象,以后一定会出现类似科幻电影《人工智能》中那个万事通博士(电影 1 分 26 秒),或者科幻小说《The IWM 1000》中的那个 IWM 1000 仪器(虽然这个,额,有点悲观色彩,但那是另一个话题了)。噢,我还问了 ChatGPT 大卫的问题,我认为他回答的不错,感兴趣的可以看后面《附录一》。

Prompt步骤


讯享网

一般包括以下步骤【核心文献1】。

对话前:

  • 明确目的并始终聚焦目的。
  • 使用清晰、具体、相关的语言简洁地描述你的目的。
  • 避免使用开放式或过于宽泛的 Prompt。
  • 查看和修改 Prompt。

对话中:

  • 鼓励 ChatGPT 扩展内容。
  • 注意对话中的语气和语言。
  • 注意对话的方向,适时做出调整。
  • 必要时可以使用「角色扮演」(如「假设你是XXX」)帮助 ChatGPT 理解它的角色。

对话后:

  • 回顾整通对话,检查是否有违反原则或失误的地方。
  • 注意不同 Prompt 下 ChatGPT 的反馈,了解其能力和局限。
  • 梳理 Prompt 并在必要时重新测试。
  • 如果问题没有得到解决,尝试使用更多不同种类的 Prompt 进行测试。

再举个【核心文献1】中的例子,依然换成中文:

我希望你充当 JavaScript console。 我将键入命令,您将回复 JavaScript console 应显示的内容。 我希望你只回复一个唯一代码块中的终端输出,没有别的。 不要写注释。除非我指示你这样做,否则不要键入命令。 当我需要用英语告诉你一些事情时,我会通过将文本放在大括号内{像这样}来做到这一点。 我的第一个命令是 console.log(“Hello World”);

来看看这个例子:

  • “我希望你充当 JavaScript console。”这句话使用了「充当XX」这样的 Prompt 告诉 ChatGPT 的角色。
  • “我将键入命令,您将回复 JavaScript console 应显示的内容。”这句话解释了用户的角色,以及 ChatGPT 响应用户命令时的角色。
  • “我希望你只回复一个唯一代码块中的终端输出,没有别的。”这句话为 ChatGPT 提供了进一步的说明,指定它应该只在一个唯一的代码块内使用终端输出进行回复,并且在其回复中不包含任何其他内容或解释。
  • “不要写注释。”这句话是对上一句指令的重复,强调 ChatGPT 不应在其响应中写任何注释。
  • “除非我指示你这样做,否则不要输入命令。”这句话为 ChatGPT 提供了进一步的说明,指定它不应键入任何命令,除非用户指示这样做。
  • “当我需要用英语告诉你一些事情时,我会通过将文本放在大括号内{像这样}来做到这一点。”这句话通过将文本括在大括号中,为用户提供了如何用英语与 ChatGPT 进行交流的说明。
  • “我的第一个命令是 console.log("Hello World");”这句话提供了提示符的第一个命令,因此 ChatGPT 将首先运行。

简单的执行效果如下:

小讯
上一篇 2025-04-07 22:33
下一篇 2025-03-17 20:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28268.html