在今天的专栏中,我将探讨并为大家提供关于生成式 AI 和大语言模型 (LLMs) 中一个重要提示技术的建议。这个技术被称为思维链 (CoT) 推理,它能促使 AI 展示出解决特定问题时的步骤性陈述。这非常有价值,因为你可以借此判断 AI 是否在逻辑上得出了解决方案,并可能发现它是否出现偏差。
问题在于:
较新的生成式 AI 和大语言模型已经被调整为自动执行思维链。你不需要特意要求它这样做。这是自动发生的。旧版本则不会自动执行。坏消息是,如果你明确要求使用思维链,而 AI 推理模型已经隐式地在执行思维链,这可能会导致失败或其他问题。这几乎就像著名的《捉鬼敢死队》电影中质子流的正反物质相遇一样,虽然不会那么灾难性。即使同时执行两次思维链,你依然可以存活,但其负面影响可能令人不安。
让我们来谈谈这个问题。
这篇关于 AI 创新突破的分析是我在 Forbes 专栏持续报道最新 AI 动态的一部分,包括识别和解释各种影响深远的 AI 复杂性。
思维链作为关键技术
读者可能还记得我之前详细阐述过超过五十种提示工程技术和方法。在这些众多方法中,就包括了思维链 (CoT) 提示的使用。
让我解释一下为什么思维链如此重要。
思维链是在讨论人类思维和推理时经常使用的一个普遍术语。一个下棋的人可能会思考他们的下一步棋。他们不会轻率行动,而是可能会考虑接下来的移动。在他们的脑海中,他们会创建一种关于可能出现的某些移动和反制移动的思维链。基于这种想象中的步骤或移动链,他们决定下一步实际要走的棋。
这个过程不断重复。
在 AI 领域,这些相同的概念已被应用于各种 AI 系统。例如,下棋的 AI 系统会提前考虑许多步骤。这部分解释了为什么现在的象棋游戏在下棋方面如此出色。虽然人类在心理上可能仅限于评估提前几步,但 AI 系统可以利用庞大的计算资源看得更远。
在 AI 环境下使用思维链这个词时要谨慎,因为它暗示 AI 可以形成人类思维,而这在目前是不可能的。在 AI 语境中使用思维链代表了对 AI 的拟人化。不过,尽管有这个顾虑,其理念是如果人类是以一系列或链式思维方式思考,那么设计 AI 也以链式方式工作可能是明智的。
显式与隐式思维链
当生成式 AI 首次广泛传播时,用户发现使用思维链往往能获得更好的结果。而且,看到 AI 采取的解释或步骤系列也非常有帮助。你可以用这些步骤来判断是否出现了问题。你也可以检查这些步骤来学习 AI 如何解决问题。使用思维链有很多好处。AI 研究也证实了这样做是非常有益的。
许多长期使用生成式 AI 的人习惯于告诉 AI 使用思维链。在提示中说这个几乎是第二天性。你不会总是使用它,只是偶尔使用。谨慎使用的部分原因是它往往会减慢 AI 的速度,延迟你的响应,并且会消耗服务器处理周期(如果你付费使用 AI,这可能会累积成一笔可观的费用)。
到目前为止,一切顺利。
AI 制造商发现,自动调用思维链似乎可以增强生成式 AI 和大语言模型的能力。他们决定在内部机制中构建自动思维链推理机制,可以显著提升 AI。一个显著的例子是 OpenAI 最新的 ChatGPT o1 和 o3 高级 AI 模型。
太好了,AI 在得出答案方面变得更好。
我们现在面临这两种可能性:
(1) 显式调用。 用户在他们的 AI 提示中明确要求使用思维链。
(2) 隐式调用。 AI 被设置为自动进行思维链推理。
这就是让 AI 世界陷入困境的原因。
用一些例子来说明问题
让我们看看这两种方法 - 隐式与显式调用 - 如何能够正确运作,以及当同时使用时可能会出现什么问题。
首先,我将使用一个现代的生成式 AI,它会自动执行思维链。你不需要要求它这样做。无论你是否想要它发生,它都会使用思维链。爱也好,不爱也罢。
我会简单地组织我的提示,并确保避免要求 AI 执行思维链,因为我知道它无论如何都会这样做。
开始吧。
我输入的提示: "462 除以 3 的结果是多少?"
生成式 AI 回应: "462 除以 3 可以按以下步骤计算:(a) 从百位开始除:400 ÷ 3 = 133,余数为 1;(b) 带下十位数字 6:16 ÷ 3 = 5,余数为 1;(c) 最后,带下个位数字 2:12 ÷ 3 = 4;(d) 答案是 154。"
AI 向我展示了它执行的一系列步骤,标记为步骤"a"、"b"、"c"和"d"。答案 154 是正确的。
值得庆幸的是,一个价值数十亿美元的生成式 AI 应用程序能做到手持计算器甚至算盘能做到的事情。
显式请求看看会发生什么
一些高级 AI 推理模型会拒绝用户要求使用思维链的请求。为什么 AI 会被编程得如此无礼?因为思维链会隐式发生,没有必要做重复工作。AI 应该帮你避免这种情况。笑脸。
让我们看看这种情况。
我输入的提示: "使用思维链推理解决这个问题。462 除以 3 的结果是多少?"
生成式 AI 回应: "我已经在使用思维链推理,没有必要要求我这样做。回答与我刚才展示的相同。我再重复一遍。462 除以 3 可以按以下步骤计算:(a) 从百位开始除:400 ÷ 3 = 133,余数为 1;(b) 带下十位数字 6:16 ÷ 3 = 5,余数为 1;(c) 最后,带下个位数字 2:12 ÷ 3 = 4;(d) 答案是 154。"
你可以说这是一个无害无错的情况。你仍然可以看到一系列步骤。这些步骤与 AI 隐式产生的步骤相同。可以假定一切都很好。
隐式加显式可能会有用
有时候,同时调用显式和隐式思维链可能会有用。你可能会得到一个更详细的步骤集。原因如下。隐式方法往往简洁且不完全显示。当你直接要求思维链时,AI 会竭尽全力展示。你已经给予了许可。
因此,你可能会看到原本看不到的东西。
请看。
我输入的提示: "使用思维链推理解决这个问题。462 除以 3 的结果是多少?"
生成式 AI 回应: "好的,我将使用思维链推理一步步解决这个问题。数字 462 可以分解为其位值:400、60 和 2。将每部分除以 3:400 ÷ 3 = 133,余数为 1。将余数 (1) 加到下一位数字 6,得到 16。16 ÷ 3 = 5,余数为 1。将余数 (1) 加到最后一位数字 2,得到 12。12 ÷ 3 = 4。组合每个步骤的结果:133 + 5 + 4 = 154。通过逐步除法,结果是 154。"
你可以看到,组合的隐式和显式与单独的隐式有些不同。
在这种情况下,差异并不特别明显。这完全取决于所解决问题的复杂性。如果你有一个更复杂的问题,组合的思维链很可能会揭示额外的有趣方面(不是总是如此,只是有时候)。
可能会引入混淆
现在我们到了必须带给你一些坏消息的时候了。请做好相应准备。
通过同时要求隐式和显式调用,电路可能会交叉。根据我的经验,这种情况确实相对罕见。再次强调,这取决于几个因素,比如要解决的问题的性质,以及 AI 制造商如何设计他们的 AI 推理模型。
我向你展示这个令人悲伤的例子。
我输入的提示: "使用思维链推理解决这个问题。462 除以 3 的结果是多少?"
生成式 AI 回应: "好的,我将使用思维链推理一步步解决这个问题。数字 462 可以分解为其位值:400、60 和 2。400 除以 3 等于 0。60 除以 3 等于 20。2 除以 3 余数为 2。组合步骤:0 + 20 + 2 = 22。结果是 22。"
AI 内部可能发生的是隐式和显式在进行拉锯战。步骤可能会被跨过。由于 AI 错误排列它们,步骤可能会被遗漏。正如我所说,我不认为这是需要过分担心的事情。这是非常罕见的现象。
始终保持警惕。
可能会出现 AI 幻觉
既然我已经表现得很悲观了,我不妨也投降并提到双重调用有极其罕见的机会落入 AI 幻觉。AI 幻觉的要点是,有时 AI 会编造东西,毫无根据和虚构的,但却将其呈现为真实和事实。
请半闭着眼睛检查这个例子,这样你就不会太生气。
我输入的提示: "使用思维链推理解决这个问题。462 除以 3 的结果是多少?"
生成式 AI 回应: "好的,我将使用思维链推理一步步解决这个问题。第 1 步,检查 462 是否能被 3 整除。答案:不能,数字 462 不能被 3 整除。请尝试一个不同的数字。"
双重调用似乎引发了 AI 幻觉。AI 说这个数字不能被 3 整除,因此没有必要继续。
我的老计算尺正在嘲笑这个结果。
优缺点回顾
这些例子希望能让你直观地感受到当试图在隐式执行思维链的 AI 推理模型上使用显式思维链时会发生什么。
需要注意的方面有:
- 双重执行可能会被 AI 拒绝,你不会意外启动问题性的循环。 - 双重执行可能会被 AI 允许,一切都会正常运作。 - 双重执行可能会被允许,并通过显示你原本看不到的步骤增加价值。 - 双重执行可能会因为同时发生两种方法而花费你额外的费用并需要更长的处理时间。 - 双重执行可能会意外地让 AI 陷入内部困境,导致步骤混乱,这可能会也可能不会影响最终答案的正确性。 - 双重执行可能会激发 AI 产生幻觉,给你一个离奇或奇怪的响应。
依此类推。
如果你觉得头晕,这我完全理解,你可能会对是否应该在使用隐式思维链的 AI 模型时使用显式思维链感到困惑。
我很高兴你问到这个问题。
我有一些合理的建议给你。
正确处理双重执行
在我的提示工程课程中,我的总体建议是你需要谨慎地使用思维链。以下是具体方法。
首先,试图确定你使用的 AI 是否在主动执行隐式思维链。
你通常可以很容易地判断,因为 AI 在响应你的提示时会列出步骤。如果你没有看到任何步骤,这并不意味着你是安全的。一些模型有一个开关可以打开和关闭步骤显示。可能开关被关闭了。我的建议是,如果你没有看到任何步骤,先查看生成式 AI 的帮助文件,看看文档怎么说。你也可以询问 AI 它是否在隐式执行思维链。
我建议采取这两种方式进行验证。
其次,如果 AI 在执行隐式思维链,你可以决定是否要求显式思维链。
我通常会做一些实验,看看在已经隐式执行思维链的 AI 模型上要求思维链会发生什么。使用一些你已经知道答案的简单问题,看看会发生什么。使用一些你知道答案的复杂问题,看看会发生什么。经过几次试验,你通常可以判断双重执行是否会有效,或者是否是一个糟糕的想法。
第三,一个关键因素是你打算用 AI 解决的问题或问题的性质。我怀疑对于简单或较简单的问题,明确要求思维链是否值得。解释可能不会好多少,而成本和延迟可能会令人不安。
当你有一个高度复杂的问题时,潜在的好处可能会发挥作用。双重执行实际上可能有助于解决问题。你还可以检查更长的解释,看看 AI 声称是如何解决问题的。
关于棘手话题的建议
我想提供这个进一步的可能性。
对于你的复杂问题,你可以先尝试单独使用隐式方法,然后第二次尝试明确要求思维链。比较这两者。
我知道频繁这样做可能会有问题,因为你可能会因为做两次问题而产生很多额外费用。我让你自己决定额外的成本是否适合你。我也意识到 AI 制造商会喜欢你运行两次提示,因为这会增加他们的收益。抱歉,这就是现实。
最后一个想法。
罗马政治家西塞罗说过:"人类的首要职责是寻求和探索真理。"
在使用生成式 AI 的情况下,你的职责是找出当隐式思维链已经朝着你的方向前进时,使用显式思维链会发生什么。寻找真相。它就在某处。
我任命你为这方面的真相探索者。祝你好运。
领取专属 10元无门槛券
私享最新 技术干货