第一性原理提示工程的观点
为了从使用生成式人工智能中获取并最大化价值,我们需要优化我们的技能,使大型语言模型的运作与我们的期望保持一致。提示工程在此扮演着关键角色。
什么是提示工程?
提示工程是设计和优化提示的过程,直到响应满足用户对相关性或质量的期望。
提示工程的基本流程是什么?
- 明确问题并加深领域理解。有了背景知识,更容易指定您想要的响应,并对需要用于启发良好响应的上下文有所感觉。
- 使用该上下文编写初始版本
- 根据模型的优缺点,优化针对当前模型的提示
- 进一步优化并识别错误及其解释
- 迭代
一般最佳实践:
- 首先使用最佳模型
- 清晰地分隔提示的各个部分,例如指令和插入的上下文
- 具体、清晰、简洁、明确
- 描述输出的细节、元素和格式
- 使用少量样本提示
- 通过提供开头或提示它应该使用什么来引导模型的响应
- 提供备用选项和工作流程
- 优化示例的顺序
理论指导的提示工程的观点
提示工程大致有三种(并非完全独立)的框架:
- 大型语言模型(LLMs)作为 internet.zip 或插值随机鹦鹉
- 大型语言模型作为更灵活的动态系统
- 大型语言模型作为伪认知产物
这些观点将大型语言模型描述为插值数据库、更灵活的自注意力机制,或与人类认知相类比,以使提示工程更加容易。
随机鹦鹉
这种观点将大型语言模型(LLMs)描述为一种检索机制,它们基本上只是在收到提示时重复预训练数据,即它们试图用在预训练数据中最有可能的词元来完成句子。对齐会使模型更容易使用,但仍然基于重复预训练数据的混合。这种观点对于提示工程非常强大和具体,因为用户只需要了解预训练数据的大致形状。在科技界,LLMs通常被描述为互联网的压缩版,或 internet.zip,以帮助人们理解。当然,其他来源也很重要,但很容易就能获得关于任何感兴趣主题的标准互联网页面的图像。标准的文案和博客布局就是“数据库”混合在一起的记录,因此您可以利用这种结构来编写提示,或者思考LLMs能够很好“理解”的提示短语。为了引导输出,让LLM重复最符合您需求的来源组合:尝试利用预训练数据的知识,将您的任务/问题强制转换为LLM可以很好地处理的格式。这种方法意味着您根据LLM记忆最深的模式来构建提示。这里有两种方法:简单地让基础模型重复它所训练的通用来源以学习模式,或者直接分析预训练数据以寻找频繁模式。
大型语言模型作为灵活的动态系统
另一种观点认为,大型语言模型(LLM)不仅能重复所见过的数据。在这种观点中,自注意力的作用得到了比“随机鹦鹉”观点更恰当的反映。尽管LLM根植于预训练数据,但它不仅仅重复所见。下一个词元预测的自注意力机制(Rwat et al, 2024)被描述为:对于上下文窗口中的词元,自注意力根据最新的输入词元选择重要的词元。这些重要的词元基于预训练数据中词元之间强连接的组件,即指示(整个)上下文完成的词语。词元接着词元,这种意义的抽象指导着上下文的完成,这意味着LLM不仅仅重复预训练数据,而是基于预训练数据中概念之间的刻板印象关联,对其进行解释。因此,它不是鹦鹉学舌,而是捏造上下文,从而产生超出预训练数据的一些外推。由于预训练数据非常广泛,这赋予了LLM广泛的人类般但脆弱的自然语言理解能力,这意味着LLM的“理解”能力仅在其预训练数据足够“丰富”以教授其人类般的词语解释时才得到支持。LLM所拥有的“智能”的另一个泛化来源当然是它们作为深度神经网络的抽象。它们对意义的解释不限于当前关注的词语,还包括上下文窗口部分和整个上下文窗口的“意图”或“要旨”。就像猫狗图像分类器通过眼睛和耳朵形状等抽象组件特征来区分它们一样,LLM预测下一个词元是原始预训练数据的抽象解释,而不是简单地重复,其中特征是训练文档组件背后的“意图”,而不是它们的精确副本,只要词语之间的刻板印象关联能够利用这些。例如,它们不是简单地重复预训练数据中关于搜索引擎优化营销的博客文章和标准标题的混合物,而是“心中”有一个刻板印象的博客文章的“要旨”,并利用这些知识解释搜索引擎优化营销博客文章的完成。这些抽象既偏向输出,又赋予其超越字面预训练数据的抽象自由,解释了为什么高端LLM可以在上下文中学习全新的语言。LLM参与“刻板印象推理”,试图根据其对预训练数据的解释,将提示完成情况解释为“独一无二”的。我个人喜欢称LLM的推理为“执行得当的归类”——这意味着它以一种有点迟钝的方式,将上下文粗暴地塞入它认为典型的完成中——有时是超乎寻常的愚蠢,因为“推理”对于人类简单和复杂的问题同样有效(或糟糕)。考虑到这些动态机制,我们可以看到提示可以被视为控制理论的应用(Bhargava et al, 2024):存在一个可达输出空间的子集,它符合人类意图和用于表达该意图的“正确词元”。人类理解与LLM“理解”之间正确服务于人类意图的重叠被划定为LLM推理的直接可控子空间(通过使用机器学习(即另一个LLM)而不是人类,间接可控空间变得更大)。因此,为了引导LLM的归类,我们可以尝试自我归类,使用常用关键词、TextRank,或通过分析LLM生成的典型输出上的自注意力来提出符合人类和LLM“意图”的提示。因此,提示工程应该得到对我们迟钝的LLM仆人的数据驱动同情心的支持。
大型语言模型作为伪认知产物
我开始将大型语言模型(LLM)拟人化,因为我开始思考最终且更直观的视角:将指导LLM的行为视为指导另一个人(Janus, 2021)。这种观点是合理的,因为LLM的“推理”与人类推理之间存在一些相似之处,但这绝不意味着真正的同一性,因为我们大脑的运作比LLM复杂得多。经过广泛预训练的LLM可以被视为人类语言思维的模拟器,以及人类在编写预训练数据文档时所追求的典型目标,并利用LLM从中学到的世界知识来解释写作任务。然而,重要的是要注意,这些世界知识充满了不一致之处,并且人们应该谨慎地不要高估LLM的伪认知能力:坚持将其视为从事刻板印象推理。然而,这种观点为提示工程带来了认知科学的丰富理论视角作为指导,尽管在这里,对于哪些启发可以被解释为LLM能力适当覆盖,以及何时我们将过多的“认知”归因于LLM,确实存在更多的回旋余地。尽管如此,这种视角对于启发提示写作仍然非常有用。
- 将补全视为来自预训练数据中模拟的人类,您可以尝试设想一个编写当前补全的“角色”(也可以提示 LLM 获得直觉)
- 根据预训练语料库的知识,思考人类在编写预训练语料库时经常执行的任务,您想要的输出在该语料库任务输出中出现的可能性,以及您的措辞如何反映一个典型的人在语料库中执行该任务时会如何表述或思考该任务(McCoy et al, 2023)。
- 编写与预训练数据相关的任务文本的人是如何“思考”的?这些人有哪些文化词语联想?这些人以何种模因、框架、图式和脚本进行思考?尝试找出如何“引导”这样的人产生正确的联想以完成您的任务,这些人通常使用并思考的是什么样的语言?
- 尽量帮助LLM避免将其解释与多个作者的视角(如在空白提示中)混淆,而是明确引导其采取您想象中会写出基础模型相关补全的典型人物视角(例如,作为...领域的专家)
- 由于它是伪认知的,通过思维链提示或其他方式激发LLM写作一段时间来帮助它扮演其“角色”(也可以是将RAG内容改写成LLM“理解”的方式)
- 使用外部知识资源,如您希望它使用的专家知识的书籍/百科全书,并将其用作联想网络,以引导它像对您的任务有用的模拟作者一样思考
- 所模拟的人通常关心什么?他们的动机是什么?他们追求什么目标?
- 在不假设严谨科学的前提下,哪种MBTI类型与其职业相关联?
- 被模拟人物的典型叙事和人生故事是什么?
- 模拟人物的知识领域中存在哪些原型概念?他们的知识领域中还有哪些常用概念?
- 模拟人物通常基于哪些命题进行思考?对于完成您提示的LLM模拟人物而言,哪些信念系统是典型的?
- 模拟人物的典型自传式记忆是什么?
- 哪种人物会对上下文窗口做出正确的推断以帮助任务执行?
- 此外,为了对齐理解,我们可以尝试迭代预测一个给定的人会如何理解和回应一段话或文本,并通过与LLM的反复交流来学习任务的正确词语
- 模拟人物对相关任务/文本片段会有的主要想法、关键词、含义、未声明的结论、价值判断是什么?
- 模拟人物会如何命名这个主题,哪些事实对它来说足够重要以至于需要回忆,这个人会考虑什么影响/实际意义?
- 那个人会把这种情况比作什么,他们会作何类比,他们会如何分析情况并评估与任务相关的想法?
- 该人物如何理解上下文窗口中的词语?
- 该人物从叙述中解读出的寓意是什么?
- 该人物会给其他相关代理人分配哪些性格特征?
- 模拟人物会进行何种反事实推理?
- 模拟人物对任务/上下文有何感受?
- 模拟人物如何对任务/上下文得出结论?
- 模拟人物在上下文中识别出何种语气?
- 模拟人物从提示工程师那里推断出哪些态度和目标?它能否正确理解意图?
- 哪些启发式方法指导模拟人物解决问题?
- 模拟人物容易受到哪些认知偏误的影响?
- 模拟人物常用的典型(即专业)问题解决策略是什么(例如,SWOT分析等实用的理论框架)
- 所模拟人物使用的图式(schemas)的详细内容和特征是什么?它们如何区分?
- 模拟人物通常从何种材料中学习其用于思考的内容(编码特异性)?
- 专家记忆通常采用何种层级结构来正确回忆长期工作记忆中的内容?
- 模拟人物会受到哪些框架效应的影响?
- 模拟人物阅读上下文窗口时的文本世界模型是如何动态演变的(可能需要用第二个 LLM 提示来评估)?
- 如何将常用的说服技巧应用于模拟人物,使其服从请求?
结论
总而言之,提示工程是最大限度发挥大型语言模型(LLMs)潜力的关键技能。通过理解和运用正确的技术,我们可以更好地使这些模型的输出与我们的预期目标保持一致。通过将LLMs视为“随机鹦鹉”、“灵活的动态系统”或“伪认知产物”的视角,我们可以调整提示以更有效地利用模型的能力。每种视角都提供了关于LLMs如何处理信息以及我们如何引导其输出的独特见解。通过迭代提示、尝试不同的方法并考虑LLMs的底层机制和潜在偏见,我们可以获得更可靠和相关的结果。无论我们将LLMs视为简单的模式匹配器,还是更复杂但仍不完美的人类推理模拟器,有效提示工程的关键都在于理解模型的优势和局限性。随着我们不断完善方法,我们将解锁利用人工智能增强各个领域的创造力、决策和问题解决的新可能性。(最后一段由Chatgpt撰写)。
参考文献
Bhargava, A., Witkowski, C., Shah, M., & Thomson, M. (2023). 什么是魔法词?LLM 提示的控制理论。arXiv 预印本 arXiv:2310.04444。
Janus (2024). https://generative.ink/posts/methods-of-prompt-programming/#the-reverse-engineered-dynamics-of-language
Li, Y., Huang, Y., Ildiz, M. E., Rawat, A. S., & Oymak, S. (2024年4月)。带自注意力的下一个词元预测的力学。在《国际人工智能与统计会议论文集》(第685-693页)。PMLR。
McCoy, R. T., Yao, S., Friedman, D., Hardy, M., & Griffiths, T. L. (2023). 自回归的火花:通过解决训练问题来理解大型语言模型。arXiv 预印本 arXiv:2309.13638。