博客园  :: 首页  :: 联系 :: 管理

大模型_2:Prompt Engineering

Posted on 2024-05-04 08:25  天戈朱  阅读(348)  评论(0编辑  收藏  举报

目录:

  • 1、提示工程简介
  • 2、如何写好提示词
    • 2.1 描述清晰
    • 2.2 角色扮演
    • 2.3 提供示例
    • 2.4 复杂任务分解
    • 2.5 使用格式符区分语义
    • 2.6 情感和物质激励
    • 2.7 使用英语
    • 2.8 结构化提示词

1、提示工程简介


1.1 什么是Prompt 提示词?

  • 不论是文生图应用,还是 GPT文生文的应用,都是 prompt 输入模型,模型给出结果。所以我们今天谈的所谓 prompt,就是指模型的输入
  • Prompt:为模型提供输入,用以引导AI模型其生成特定的输出

1.2 什么是Prompt Engineering提示工程?

  • Prompt Engineering:是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。
  • Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。
  • 因为人类的语言从根本上说是不精确的,目前机器还没法很好地理解人类说的话,所以才会出现 PE 这个技术。

  • 另外,受制于目前大语言模型 AI 的实现原理,部分逻辑运算问题,需要额外对 AI 进行提示。

  • 另外,目前的 AI 产品还比较早期,因为各种原因,产品设置了很多限制,如果你想要绕过一些限制,或者更好地发挥 AI 的能力,也需要用到 Prompt Engineering 技术。

  • 如下:左图右图 prompt 基本是一样的,差别只在提示工程这个词是否用中英文表达。我们看到,一词之差,回答质量天壤之别。为了获得理想的模型结果,我们需要调整设计提示词,这也就是所谓的提示工程

    所以,总的来说,Prompt Engineering 是一种重要的 AI 技术:

  • 如果你是 AI 产品用户,可以通过这个技术,充分发挥 AI 产品的能力,获得更好的体验,从而提高工作效率。
  • 如果你是产品设计师,或者研发人员,你可以通过它来设计和改进 AI 系统的提示,从而提高 AI 系统的性能和准确性,为用户带来更好的 AI 体验。

1.3 Prompt 再理解 

  • 一个广泛的理解误区就是将 prompt 简单理解为自己精心设计的那一小段提示词,而忽略了prompt 的其他来源 。
  • 我们用输入法做个类比,第一张图片中的 “春眠” 是我们的输入,“不觉晓” 是模型输出,所以 “春眠” 是 Prompt。
  • 到了第二张图片, “春眠不觉晓” 是模型输入(“不觉晓”是模型前一轮的输出),“处处闻啼鸟” 是模型输出,所以 “春眠不觉晓” 是 Prompt。
  • prompt 的来源可以是我们的预设 prompt,也可以是用户的输入,甚至模型自己之前的输出也是 prompt。
  • 所以,要用好大模型能力,我们应意识到:“所有会被模型用于预测输出结果的内容,都是 Prompt”。

1.4 为什么提示工程很重要?提示词是调用大模型能力的接口

  • 从模型原理出发去理解 prompt, 它无处不在,Prompt 是调用大模型能力的接口,是用好大模型能力的核心,所以非常重要。
  •  在 LLM 应用的开发和性能优化过程中,我们可以看到提示工程贯穿始终。 

  • 一切 LLM 应用推荐先从 prompt 工程着手建立原型,作为我们性能优化的基石。
  • 若 prompt 工程无法满足实际需求,再分析性能瓶颈原因,采取进一步策略。比如通过 RAG 构造更好的模型输入,所以 RAG 本质上也是一种 prompt 工程。
  • 如果要使用微调,通过 prompt 工程构造高质量的微调数据更是微调成功的关键。
  • 很多朋友希望做垂直领域大模型,也需要通过 prompt 工程(或结合 RAG )先获取第一批高质量输入输出数据,然后微调模型。
  • 模型性能提升后,数据质量进一步提升,将更优质的数据用于模型训练,然后更好的模型产出更好的数据,如此构建正向迭代循环(也称数据飞轮),其中每个环节都离不开好的提示工程。

2、如何写好提示词


2.0 六大原则(OpenAI官方)

  • 最为推荐的是阅读 OpenAI 官方的提示工程文档,这里我也总结成了思维导图,一共六大原则,下面还有不少的小点,就不展开细讲了。
  • 只讲一点,给模型“思考” 时间,是大家很容易误解的原则。它不是真的指让模型慢慢思考,给出答案,实际上侧重点在于让模型一步步思考,给出过程,最终得到答案,就像我们做数学题一样,给出计算过程后再给结果,能够提高结果的正确度。
  • OpenAI 文档:https://platform.openai.com/docs 

2.1  描述清晰

那么怎么写好提示词,我们的答案是实践。

  •   第一点,清晰地描述是最重要的,能做到这一点,能够解决 80% 的问题。

  • 上图展示了一个我们与华硕校园的合作案例,当你第一次接触 GPT 的时候,不妨让 GPT 给你写一首诗吧,试着调整格式,调整诗歌体裁,再到提高内容质量,在这个过程中体会到对大模型的掌控感。

2.2 角色扮演

  • 对当前的基于角色的模型而言十分有效,能够明显提高内容质量。在网上铺天盖地的基于角色的提示词被编写出来用于大模型训练以后,又加强了这一技巧的有效性。

2.3 提供示例

  •  提供示例,尤其是在需要复刻文案结构和风格的场景下,多提供几个高质量示例

2.4 复杂任务分解

  • 复杂任务分解。分为人去分解和使用模型分解两个方面。如果有成熟的 sop 或者你有自己的思路,就复用 sop 你自己分解 。如果没有,让模型自动分解,给出过程。 CoT 思维链也是一种模型自动分解的方法。

2.5 使用格式符区分语义

  • 使用良好的格式,能大大避免由于语义歧义、冲突的导致的性能问题,markdown格式为我们的推荐格式。
  • 测试:文心一言效果最好

2.6 情感和物质激励

  • 情感和物质激励。情感激励有点类似情感 PUA那一套,物质激励则指给AI 小费这类技巧。一句话,对人的高情商那一套,对 AI 也很有效。示例可以参考前面的提供示例部分的内容。

2.7 使用英语

  •  仅仅是将一个词使用了英文代替,前后的回答就天差地别。

2.8 结构化提示词

  •  相比一般提示词,将提示词这一作文题变为填空题,编写门槛降低的同时,更加清晰和强大

 

2.9 小结 

  结合我们的探索和思考,我们认为提示词具有无限可能。

  这里借用 Transformer 论文的一个句式, Prompt is All You Need!原因主要为以下三点:

  • 1. 提示工程本质是人机沟通的艺术,只要我们人类自己仍在学习怎么高情商表达交流,人机如何更好的交互就会继续存在。
  • 2. 从调用大模型能力的接口,提示工程转变为调用**大模型生态能力**的接口。我们现在已经从调用单个大模型能力转为调用多个大模型能力(如 GPT+ DALLE), 从调用 AI 模型能力转为调用 AI+工具的能力(如 GPT+代码环境),随着未来 Agents 的生态进一步完善,我们可以使用提示词调用以 LLM 为大脑的 Agents 生态。
  • 3、提示工程的局限性,它的天花板,会随着大模型能力的进化,各种工具的接入,如 GPTs 等被 OpenAI 这些大模型公司不断拉高,具备更多更大的可能性。也许始于提示工程、终于提示工程是对大模型应用最好的答案,唯一的局限性在于我们对提示词的理解和实践是否足够深刻。

需要学习 PE 吗?

  • 现在 AI 的发展还比较早期,了解和学习 PE 价值相对比较大,但长远来看可能会被淘汰。这个「长远」可能是 3 年,亦或者 1 年。
  • 从用户的角度看,我认为学习 prompt 可以让你更好地使用 ChatGPT 等产品。
  • 从产品的角度看,对于用户来说,我认为 prompt 会是个短期过度形态,未来肯定会有更友好的交互形式,或者理解能力更强的 AI 产品。

 

思考 


Markdown格式的长文本Prompt提示词并不适用于生产环境,因为消耗了过多的Tokens,这对于成本计算来说无异于是一个很现实的问题。目前我也在研究通过关键词提炼,去大篇幅优化不必要的词汇,达到预期效果,共同去探索Prompt的进阶优化。 

 

参考资料