河套 IT TALK96:(原创)GPT技术揭秘:解锁提示工程的潜能

河套 IT TALK96:(原创)GPT技术揭秘:解锁提示工程的潜能

1. 什么是Prompt?

自从人工智能生成内容AIGC(Artificial Intelligence Generated Content)火了之后,就各种听得Prompt(提示)这个词儿。那到底什么是Prompt呢?

Prompt(提示)是指在与人工智能模型进行交互时,向模型提供的一段文本或问题,用于引导模型生成相应的回答或输出。提示可以是简短的短语、完整的句子或是更长的段落,具体取决于应用场景和需求。对于ChatGPT这一类的对话类应用,Prompt就是提问者在提问框提出的问题和文字描述。而对于Mijdjourney之类的Text-to-Image图片生成工具,Prompt就是描述图片构图、风格、色彩等要素的关键提示词。

Prompt的形式可以多样化,可以是一个问题、一句话、一个完整的对话片段,甚至可以是一段指令或描述。它们都是用户用来激发模型生成回复的输入。Prompt的内容和形式通常由应用场景和任务要求来确定。

而且,Prompt并不限于单一的文本输入,它也可以包括其他形式的输入,如图像、音频等,取决于模型的应用和能力。在不同的领域和任务中,Prompt的定义和使用方式可能会有所差异,但总的来说,Prompt代表了用户提供的信息,用于引导模型生成相应的输出。

2. 提示工程(Prompt Engineering)

由于受限于意图识别、内容生成算法,导致Prompt的文字输入和结果之间存在着“玄妙莫测”的关联,甚至也不是简单文案功底好那么简单。好的Prompt能解锁AI的潜能。为了充分发挥AIGC的潜能,还滋生出一门技术,叫:提示工程(Prompt Engineering)。提示工程是一种技术和方法,旨在优化和设计提示,以改善人工智能模型的表现和输出结果。通过合理的提示设计,可以引导模型在特定任务上表现出更准确、可靠和可控的行为。当前的提示工程主要是为了弥补机器在自然语言理解和生成方面的能力限制,从而使其更好地适应人类的需求和期望。通过精心设计的提示,我们可以引导机器模型的行为,使其更加接近我们想要的输出。

随着AIGC渗透到各种任务重复性高、标准化程度高、创新和判断能力的需求低、交互复杂性低的工作,并可以预见到它正以肉眼可见的速度渗透到创造性高和情感交互程度高的行业,懂得使用Prompt,已经成为职场工作的一项基本技能。在某些领域,甚至催生出提示师的岗位。提示师,就不是使用简单Prompt,而是通过精准而清晰的语境、话术来引导AI,充分调动AIGC的创作潜能,以达到高质量的输出,以下是一些这些工作岗位的示例:

  • 创意写作:如小说、剧本、诗歌和品牌宣传等非小说创作。
  • 广告与市场营销:创造有创意的广告和市场策略。
  • 产品设计与开发:新产品的创新和改进。   
  • 计算机编程:解决编程问题,编写高效的代码。
  • 教育:教学策略,课程设计。
  • 咨询:为客户提供创新的解决方案。
  • 研发:科学和工程领域的新产品和解决方案。
  • 创业:新的商业模式和创新的解决方案。
  • 新闻和新闻报道:独特的报道角度和深入的调查。
  • 环境科学:研究新的环保技术和解决方案。
  • 城市规划:独特的城市设计和规划。
  • 健康护理:开发新的治疗方法和解决方案。
  • 音乐创作:创新的音乐作品和音乐制作。
  • 公共政策:开发创新的政策和解决方案。
  • 心理咨询:提供创新的治疗方法和策略。
  • 视频制作:创新的剧本和剧情。

以上这些排序我是根据对人工智能模型的依赖程度、领域创造力和创新性、市场需求和潜在影响力等进行的排名。当然,知己知彼百战不殆,真正能充分发挥AIGC潜能的还是开发和优化算法,解决AI问题的工程师。

我列的这些都是一些行业场景,但具体而言,提示工程(Prompt Engineering)到底解决了什么问题呢?我理解至少要包含以下几个方面:

  • 格式化提示:选择合适的提示格式和结构,以便清晰地传达任务要求和期望的回答格式。
  • 信息注入:通过在提示中添加关键信息、上下文或领域知识,来指导模型生成更准确和相关的回答。
  • 逻辑与约束:使用提示来引导模型按照特定的逻辑进行推理和回答,或者通过限制输出的范围和格式来确保结果的合理性。
  • 消除歧义:有时候问题本身可能存在歧义,导致模型生成的回答不准确或不完整。通过精心设计的Prompt,可以提供更多的上下文信息或明确的指导,帮助模型理解问题并生成更准确的回答。
  • 控制偏见:在提示工程中可以采取措施来减少模型输出中的偏见或不当行为,通过设计合适的提示来鼓励公正、中立和包容性。
  • 提供任务导向性:通过适当的提示设置,可以引导模型在特定任务上产生期望的输出,提高模型的任务导向性和结果的一致性。
  • 领域特定性:对于特定的领域或任务,模型可能需要更多的领域知识和专业术语才能生成准确的回答。通过设计合适的Prompt,可以引导模型关注特定领域的信息,提高生成结果的相关性和准确性。
  • 控制生成结果:Prompt技术可以用于限制模型的生成范围,使其生成符合特定条件、风格、语气或主题的内容,提供更大的控制力和可定制性。
  • 解决数据稀缺问题:在某些情况下,数据可能稀缺或昂贵,Prompt技术可以通过少量样本提示或零样本提示的方式,使模型在缺乏大量标注数据的情况下仍能进行有效的学习和生成。
  • 提高生成效率:通过自动提示生成和优化,可以减少人工设计和手动调整提示的工作量,提高生成效率和结果的准确性。

总而言之,提示工程的目的是使计算机模型更好地理解人类语言,并生成与人类期望相符的输出。虽然对于人类来说,说话是自然而流畅的,但对计算机模型来说,提示工程可以提供额外的指导和优化,以确保生成结果更符合我们的预期和要求。

3. 思维链(Chain-of-thoughts)

AIGC理解人类意图的里程碑,是在去年发生的,那就是思维链(Chain-of-thoughts)技术。

这就是原谷歌大脑工作的Jason Wei在2022年1月份发表的文章《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》,这也被称为思维链的开山之作。OpenAI一看到这篇文章眼睛就亮了,赶紧把他挖了过去。不负众望,思维链在 ChatGPT确实发扬光大。思维链直接把大模型的常规推理能力迅速拔到了一个高度。以前的语言模型,在很多挑战性任务上都达不到人类水平,而采用思维链提示的大语言模型,在 Bench Hard(BBH) 评测基准的 23 个任务中,有 17 个任务的表现都优于人类基线。比如常识推理中会包括对身体和互动的理解,而在运动理解 sports understanding 方面,思维链的表现就超过了运动爱好者(95% vs 84%)。

思维链技术思维链是指在提示工程中使用一系列相关的提示来构建连贯的思维或逻辑链条,以引导模型生成更加一致和连贯的输出。思维链可以被视为提示工程的一部分,它是一种更高级的提示设计和调优技术。通过构建连贯的提示序列,可以引导模型在生成文本时保持一致的主题、逻辑或上下文,并产生更连贯的输出。

思维链的构建可以包括多个Prompt,每个Prompt都为模型提供了一部分信息或上下文。每个Prompt的生成都依赖于前一个Prompt的输出,从而形成一个有序的思维链。这种方法可以在生成文本时保持一致性,使得输出更加连贯和可理解。

这么说这个概念你可能不太理解,我可以举个例子:

假设我们有一个问题:“约翰买了3本书,每本书的价格是10美元。他支付了多少钱?”在没有思维链提示的情况下,一个大型语言模型可能会生成如下的回答:“约翰支付了30美元。”这个回答是直接根据问题的文字信息得出的,模型没有展示任何推理或计算的过程。然而,如果我们应用思维链提示,模型将得到一系列中间推理步骤的引导,例如:

  • 确定书的数量是3本。
  • 确定每本书的价格是10美元。
  • 计算约翰支付的总金额,即3(本书的数量)* 10(每本书的价格)= 30美元。

通过这些中间推理步骤的引导,模型能够逐步理解问题的要求,并生成类似下面的答案:“约翰支付了30美元,因为他买了3本书,每本书的价格是10美元。”

这个例子中,思维链提示的引导使模型能够展示它是如何得出答案的,它的推理过程变得透明可解释。这对于复杂问题和需要多步骤推理的任务尤为重要。

思维链除了把一个问题分解为多个Prompt,也可以将上下文多个问题,整合起来,一起连贯性分析用户的意图。我们可以将其理解为一个由连贯的问题和回答组成的序列,每个问题和回答都建立在前一个问题和回答的基础上,形成一个逻辑上连贯的思维过程。以下是一个示例:

  • 问题 1: 请问明天的天气怎么样?
  • 回答 1: 明天将有阵雨和多云,气温约为20摄氏度。
  • 问题 2: 这样的天气适合户外活动吗?
  • 回答 2: 阵雨可能会影响户外活动的舒适度,建议备好雨具或考虑室内活动。
  • 问题 3: 有没有室内活动的好建议?
  • 回答 3: 您可以考虑去电影院观看新上映的电影,或者在家里看书、听音乐或者做一些室内运动。

在这个例子中,问题和回答之间形成了一个连贯的思维链。每个问题都是基于前一个问题的回答,而每个回答又为下一个问题提供了信息和上下文。这种连贯性使得对话更加流畅和有逻辑。种交互的方式有助于进一步探索和深入讨论特定主题或问题。思维链的技术,其实是一种基本的推理逻辑,也是人工智能迈向通用人工智能关键的一步。通过思维链,人工智能可以分析复杂问题中的逻辑连接词和短语,并将其分解为一个一个相互关联有推理节奏的小问题逐一回答,最终得到答案;也可以理解上下文,进行语境推理和信息扩展,进一步确认用户意图,并修正对之前不完整的意图理解,进而更趋近于提问者的期望。

不过,需要注意的是,目前的对话式AI系统仍然具有一定的限制和挑战,尤其是在复杂的语义理解和推理方面。随着技术的发展,我们可以期待思维链技术会更加智能和流畅的对话体验。

除了思维链技术,我们可能还听到过以下两个技术:零样本提示(Zero-shot Prompting)和 少量样本提示(Few-shot Prompting)。这两个也是在大模型训练后,在达到通用人工智能的必经之路。

4. 零样本提示(Zero-shot Prompting)

零样本提示旨在通过给模型提供一些关键信息来解决在没有事先见过相关样本的情况下进行推理和回答问题的挑战。它允许模型在没有直接训练样本的情况下,通过理解提示中的信息和推理来生成答案。

为了方便大家理解,我举个例子,假设我们有一个基于语言模型的问答系统,我们想要使用零样本提示来回答一个关于巴黎塔的问题。这个问题是:“巴黎塔有多高?”

首先,如果没有训练过巴黎塔,人工智能可能无从回答。但如果基于零样本提示的分析,模型可以推断出相关的知识,例如能以巴黎城市命名的塔,巴黎塔就是巴黎的一座标志性建筑,很可能就是艾菲尔铁塔,而艾菲尔铁塔的高度是被训练过的一个确切信息,所以即使模型在训练数据中没有直接提到”巴黎塔的高度”的样本,它仍然可以使用这些推断来生成一个合理的回答,比如”巴黎塔的高度是324米”。

这里的关键是,零样本提示为模型提供了一些背景信息和线索,帮助模型进行推理和解答问题。尽管模型没有直接训练样本来回答特定的问题,但它可以通过理解提示中的信息和进行推理来生成答案。不过零样本提示,也存在人工智能误判的情况,着就会出现我们经常见到的所谓的ChatGPT一本正经地说瞎话,很可能就是这种零样本提示技术下展示出来的“自信”。

5. 少量样本提示(Few-shot Prompting)

少量样本提示旨在通过在训练过程中提供少量的样本示例来增强模型的能力。这些示例通常来自于与特定任务或主题相关的数据集,而不是全面覆盖所有可能情况的大型数据集。通过引入这些示例,模型可以利用它们所包含的模式和特征来进行泛化,并在遇到类似问题时进行推理和回答。

举个例子,假设我们有一个基于语言模型的任务,要求模型完成英语翻译成法语的任务。在少量样本提示的情况下,我们可能提供了一些针对特定短语或句子的翻译示例,如:

    英文:”Hello”,法文:”Bonjour”

    英文:”Thank you”,法文:”Merci”

    英文:”Goodbye”,法文:”Au revoir”

通过这些少量的样本提示,模型可以学习到一些常见的翻译模式和规则,比如将英文中的”Hello”翻译成法文的”Bonjour”。当遇到新的输入时,模型可以利用这些学到的模式和规则进行翻译,并生成合理的回答。

少量样本提示的关键在于提供了一些具体的示例来指导模型的学习和推理过程。尽管训练样本有限,但模型可以通过观察和泛化这些示例中的模式和特征来进行有效的推理和回答。其实少量样本提示的过程,很类似人类举一反三的能力,也就是归纳提炼和演绎的推理能力。

所以,从上面的解释大家能看出来,零样本提示在让模型在没有任务特定样本的情况下进行推理和生成。通过合理设计的Prompt,可以从未见过的数据中产生有意义的输出。少量样本提示使得模型能够通过很少的样本进行学习和适应,通过在Prompt中提供有限的示例或示例的变体,可以从中学习并推广到类似的情况。这两种都是AIGC提示工程泛化的关键能力。

以上都是提示工程好的技术,其实提示工程,还需要解决一类非常棘手的问题,那就是恶意提示(Malicious Prompts)。

6. 恶意提示(Malicious Prompts)

恶意提示(Malicious Prompts)指的是有意设计的、具有潜在危害或不良影响的输入提示,旨在误导或欺骗语言模型产生不准确、有害或不当的回复。这些恶意提示可能会导致模型生成虚假信息、歧视性内容、攻击性语言或其他不良行为。以下是三种常见的恶意提示的情况:

  • 越狱(Prompt Hacking):越狱是指尝试绕过提示系统的限制,以获得意外或不受控制的答案。这种恶意提示的目的是欺骗模型,使其生成不准确、误导性或恶意的输出。
  • 提示泄漏(Prompt Leakage):提示泄漏是指在模型训练过程中,模型学习到了提示中的敏感信息,导致在生成输出时泄露这些信息。恶意用户可以利用这些泄漏来获取模型训练数据或获取其他敏感信息。
  • 令牌走私(Token Smuggling):令牌走私是指通过将额外的信息嵌入提示或文本中,来绕过模型对输入长度或格式的限制。这种恶意提示可以被用于滥用模型,例如在无权限的情况下执行高危操作或窃取敏感数据。

防止恶意提示是一个复杂的挑战,没有一种单一的解决方案可以完全消除恶意行为。综合采取多种措施,并与用户和研究社区紧密合作,才能更好地应对恶意提示的风险并提高模型的安全性。如何识别恶意,以及如何实施修正,是应对恶意提示的关键。坏人如果一本心思想绕过规则,他会各种尝试,肯定会防不胜防。当然,要设置一些底线,不管坏人如何诱导,都不能执行。这些底线可以是对特定主题、内容或行为的严格限制,无论恶意提示如何,都不能越过这些底线。例如,在生成回复时,可以设置一些预定义的规则,禁止模型生成针对个人攻击、仇恨言论、歧视性观点等不当内容。除了设置底线,还需要考虑以下的措施:

  • 数据过滤和审查:对训练和测试数据进行仔细筛查,移除包含恶意或不适当内容的样本。这有助于减少模型学习到恶意提示的可能性。
  • 强化模型的伦理准则:在训练和开发语言模型时,加入伦理准则和价值观的指导,使模型具有尊重和负责任的行为。这可以通过在训练数据中注入伦理原则,或通过约束生成的回复内容来实现。
  •  引入对抗训练:使用对抗训练的技术可以增强模型的鲁棒性,使其更难受到恶意提示的影响。对抗训练的目标是通过模型与恶意输入的交互来提高模型的抗干扰能力和泛化能力。
  • 模型监控和反馈机制:建立强大的监控系统,实时检测模型生成的回复。如果发现恶意提示或不当回复,及时采取行动,例如移除不当内容、禁止用户等。同时,鼓励用户提供反馈,以帮助改进系统和快速修正问题。
  • 持续学习和改进:定期更新模型,纳入最新的恶意提示样本,以不断增强模型对恶意行为的识别和处理能力。同时,借鉴研究和实践中的经验,改进模型的安全性和鲁棒性。
  • 集体智慧和合作:积极与研究者、安全专家、社区用户等合作,共同研究和解决恶意提示的问题。通过开放对话、分享经验和合作研究,可以形成更加有效的防范策略和修正机制。邀请社区参与,鼓励广大用户和研究者参与到模型的评估和改进中来。开放对话和合作有助于共同识别和解决恶意提示的问题,提高模型的安全性和可靠性。

防治恶意提示也是一个长效工作。正所谓魔高一尺道高一丈,只有持续改进,才能保证各种Prompt的漏洞得到及时修补和更正。

以上聊了很多提示工程的技术,那么这个技术的未来会发展成什么样呢?

7. 提示工程技术的未来发展

可以预见,随着意图识别技术的进步,后面会越来越弱化对人对Prompt的约束,而人工智能的算法会进一步地提升。未来的人工智能经过与用户的互动,系统可以更好地理解用户意图、获取更多的上下文信息,并提供更准确、个性化的回复。未来的发展方向包括更智能的对话管理、更精细的用户意图理解以及更自然的语言生成,以实现更流畅、真实的对话体验。

目前的Prompt还是以文字为主,后面必然会扩展到多模态交互。除了文字,Prompt还可以支持其他形式的输入和输出,如图像、语音、视频等。将多模态交互与Prompt结合,可以更好地满足用户的需求,提供更丰富、多样化的体验。例如,通过图像输入与文字输出的Prompt,可以实现基于图像的问题回答和指导。

当然,目前人工智能回答问题的推理过程还是黑盒,我们看不到,所以还是存在对大模型系统问题回答的不信任和猜忌,这都在情理之中。未来一定会在透明度和可解释性上做得更好。通过透明度和可解释性,提问者就会更了解Prompt生成回复的依据和推理过程,以增加对结果的信任和理解。因此,未来的Prompt发展方向包括提供更详细的解释和理由,使用户能够理解系统的决策和推理过程。

可能大家会说,如果将来的人工智能能够达到通用人工智能水平,在自然语言理解方面没有明显的障碍,那么提示工程可能会减少其重要性。通用人工智能应该能够更好地理解和处理人类语言,不需要额外的提示或约束来产生符合人类预期的结果。不过这种理想的认知也未必成为现实。人心隔肚皮,即便是人工智能达到通用人工智能的水平,要达到良好的沟通,依然需要大量的技巧,因为即便是个优秀的通用人工智能,也无法与不可理喻的人类直接沟通不是。所以,未来也许提示工程,就会演化为社会心理学的人际沟通学。每个人类个体都有人格、价值观、知识结构、社会关系、文化背景、情绪状态等极为特殊化的状况。未来的通用人工智能,要理解人类的语言、非语言信号、肢体语言、情绪表达、文化禁忌、社会关系网络和角色定位,仍然是极为挑战的工作。所以我认为提示工程的生命力远不会我们想象的那么短命,而是长时间人类和机器之间沟通磨合的长效工作。这就意味着Prompt技术的发展是一个不断演化的具有长生命力的技术,绝对不是昙花一现。