进化的核心:递归

作者:李笑来 · 来源:《人工智能小白书》 · 发布于 2026-05-27 · 原文链接

用“递归”的视角理解进化,以及能力如何复利式增长。

上一章提到智能的核心是 “判断” —— 这其实是个非常锋利的认知。若是我们在这种认知的指导下重新审视所谓 “教育”,就都能轻松看到一个明显的事实:

如果竟然不能提高一个人的判断力,那么那所谓的 “教育” 就是垃圾,甚至干脆是毒药。

很可惜,家长老师也好,校内校外的课程也罢,不仅不鼓励独立判断,还在反过来孜孜不倦地剥夺孩子的判断力、判断机会…… 毁人不倦。

然而,抱怨没有任何用处。我们能做的、应该做的,就是不断提高自己的判断力。要提高的不仅是自己的判断力,还有自己家长的,自己配偶的,以及自己孩子的判断力。是非对错,好坏善恶,高低强弱…… 生活处处都需要判断,无判断不智能。

这一章里,我们要讨论的是另外一个极为锋利的认知:进化的核心是 “​递归​”(Recursion)。

4.1. 体验递归#

普遍认为,“递归” 是个理解难度较高的概念。有人开玩笑说:

理解递归的前提是理解递归。

In order to understand recursion, one must first have to understand recursion.

不过,一定有办法能做到用大白话让任何人都能理解 “递归”。

先让我们看一个 “递归” 产生的现象。有一部电影估计你看过,克里斯托弗·诺兰(Christopher Nolan)导演的电影《盗梦空间》(Inception, 2010)。电影里有个经典且又著名的片段,女主 Ariadne 把两面镜子面对面摆在一起,瞬间,我们看到了无数的 Ariadne 和 Cobb 正面和背面的镜像……

两面镜子面对面摆放的结果是能看到无穷无尽的镜像,这就是一种递归现象。

4.2. 从方法说起#

体验过一种递归现象之后,让我们想办法细说从头。

我们在生活中,做任何事情都可能有所谓的 “方法”,一般来说,一个 “方法” 往往会对应着一个 “输入” 和一个 “输出”。

flowchart LR
input(输入) --> method[[方法]] --> output(输出)

例如,你有一个做什么菜的 “方法”。那么,这个 “方法” 的 “输入” 是那些食材,这个方法的 “输出” 是最终做好的菜。

比如,当我们把一根钉子敲进木板的时候,“用锤子锤” 其实可以被理解是一个 “方法”。这个方法的 “输入” 是 “一根钉子和一块木板”,这个方法的 “输出” 是 “一根已经钉进木板的钉子”。

flowchart LR
input(输入:钉子) --> method[[方法:锤子]] --> output(输出:钉进木板的钉子)

同样的道理,当我们想把一根螺丝钉拧进木板的时候,“用螺丝刀拧” 就是一个 “方法”,这个方法的 “输入” 是 “一根螺丝钉和一块木板”,这个方法的 “输出” 是 “一根已经拧进木板的螺丝钉”。

flowchart LR
input(输入:螺丝钉) --> method[[方法:螺丝刀]] --> output(输出:拧进木板的螺丝钉)

有的时候,我们得把两个方法串起来使用。比如,当我们需要把一根螺丝钉拧紧木板的时候,往往是先用 “锤子” 这个方法,然后再用 “螺丝刀” 这个方法 —— 即,先把螺丝钉对准需要拧进的位置,然后用锤子敲两下,使螺丝钉尖部进入木板一点点,而后再用螺丝刀一点一点把它拧进去。这样的时候,第二个方法的 “输入”,是第一个方法的 “输出”。

flowchart LR
input(输入:螺丝钉) --> method1[[方法 1:锤子]] --> output1(钉进木板的螺丝钉) --> method2[[方法2:螺丝刀]] --> output2(输出:拧进木板的螺丝钉)

以上我们展示的方法,都是有特定的输入和特定的输出,一个方法的输出,可以被另外一个方法当作输入。很简单,很自然,很正常。

然而,有一种特殊的方法,叫做递归方法,它是什么样的呢?

它能把自己的输出当作自己再次执行时的输入。

有点拗口,有点抽象。但,这句话值得反复朗读直至只字不差地背诵。要做到哪怕正在说的时候被绊了一下在摔倒的过程中都能把这句话一口气说完。

其实,这真的不是在开玩笑…… 这种 “关键概念、关键句子,甚至关键段落要做到只字不差地背诵”,其实是一种很重要的习惯,最终在哪里都用得到。平日里会让自己记忆力不断增强,所谓的 “引经据典” 甚至 “信手拈来”,其实只不过就是这样的简单习惯逐步积累而来的。而这样的习惯对父母也格外有用 —— 在关键的地方想不全,磕巴了,卡壳了,甚至干脆一片空白,是给自家孩子讲道理时最跌份的,不是吗?

4.3. 无所不在的递归#

其实,“递归方法” 在生活里比比皆是,随处可见,只不过,在此之前你可能并不知道那其实是递归方法而已。

比如 “跑步” 就是个递归方法。第一天早上,你实施跑步这个 “方法” 的时候,它的 “输入” 是跑步这个方法执行之前的你,跑步结束之后,它的 “输出” 是这个方法执行之后的你。跑步这个方法执行之后,之后的你(输出)比之前的你(输入)更健康了一点点……

flowchart LR

input(输入:执行之前的你) --> method[[方法:跑步]] --> output(输出:执行之后的你)

第二天早上你有没有换方法呢?没有。你没有把方法从 “锤子” 换成 “螺丝刀”…… 因为你又不傻,你知道你自己并不适合作为 “锤子” 或者 “螺丝刀” 这两个方法中任何一个方法的 “输入”。

第二天早上你执行的同一个 “方法”,还是 “跑步”。这一次呢,还是一样,跑步这个方法的输入还是你,输出也是你,只不过,这个方法执行之后,之后的你(输出)​比之前的你(输入)更健康了一点点……

但是,重点在于,第二天再次执行同一个方法的时候,其 “输入” 其实是同一个方法上一次执行之后的 “输出”。

flowchart LR

input(输入:执行之前的你) --- o(( )) --> method[[方法:跑步]] --> output(输出:执行之后的你) --> o

于是,根据定义,“跑步” 就是个 “递归方法”,因为它可以把自己这一次执行的输出当作自己下一次执行的输入…… 换一种说法,“递归方法” 的特征是,可以 “自己调用自己​”。

需要牢记

如果一个方法可以把自己的输出当作自己下一次执行的输入,那么它就是递归方法。递归方法的特征是可以自己调用自己​……

顺带说,递归方法反复执行的过程,叫做 “迭代”(Iterate, v.),若是一个 “递归方法” 执行了无数次,我们就说它 “迭代了无数次”。

现在,我们可以把注意力放回到《盗梦空间》那部电影里的那两张被 Ariadne 面对面摆放的镜子上了。镜子这个工具,有一个方法,叫做 “产生镜像”。也就是说,镜子能把外部的景象当作输入,而后在镜子里产生一模一样的镜像。

每张镜子都拥有相同的方法,都能 “产生镜像”。然后,把两面镜子面对面摆在一起的时候,两面镜子都在调用相同的方法,都是 “产生镜像”,而每一次镜像方法被调用的时候,都以上一次执行之后的输出作为输入,也就是说,“产生镜像” 这个方法在不断地调用自己,于是,镜像就会无穷无尽地产生下去…… 于是,我们看到了 Cobb 和 Ariadne 的正反面的无穷无尽的镜像。

现在,你已经大致理解了 “递归”。其实并不难的,是不是?我相信哪怕是小学生也都能理解 —— 前提当然是讲解上要多些耐心。

4.4. 进化的核心#

那,为什么我们说,“进化的核心是递归” 呢?

别说 “进化” 了,哪怕 “发展” 都是如此。通常,我们把 “进化” 用在 “有生命的事物上”,把 “发展” 用在 “没有生命的事物上”。可实际上,别说有生命事物的进化了,连无生命事物的发展,都靠 “递归迭代”。事实上,天下一切有能力发展的事物都有递归能力。或者反过来讲也一样,它们之所以能发展是因为它们能递归迭代。

我每年都在敦煌种树。在沙漠里,贫瘠的土地上,有时你会看到一颗孤零零的梭梭树。这种孤零零的梭梭树下一般都会有个土包。那个土包其实就是通过 “递归迭代” 而 “发展” 出来的。梭梭树生命力很顽强,无论如何,它长出来了。然后,就会有 “沙尘暴” 这个方法会反复执行。“沙尘暴” 执行过程中,会有大量的沙尘被梭梭树拦下,又因为梭梭树下相对较多的水分会固定一些尘土,于是,“沙尘暴” 这个方法执行过后,梭梭树下的土包就略微 “长大” 了一点点…… 下一次,“沙尘暴” 又来了,这个方法的输入,就是它上一次执行之后的输出,如此反复迭代,梭梭树下的土包越来越大…… 你看,连没有生命的土包,其发展过程,核心也是递归迭代。

动物的繁衍,也是一个 “递归方法”。比如人类的繁衍。每一次 “生产”,其实是相同的 “方法”;每一次那 “相同的方法” 的输入,其实是上一次 “相同的方法” 的输出。如此这般,几十万年之间,一次又一次的迭代,形成了地球上今天的人口规模。

再看看植物。树枝分叉,也是递归方法。每次执行的输入都是上次执行的输出,如此反复迭代,最终就形成了树冠……

你再看看树叶的形状,大多也是递归方法迭代执行的结果。很多花瓣也一样。你可以去搜索一个词,Koch-Snowflake,也一样是递归方法形成的,形成过程视觉化之后非常养眼……

上一章中,其实也提到过递归,“刨根问底” 也是一种递归方法,不是吗?—— 只不过,当时没有用这个词汇而已:

这其实并不是什么 “高超的技艺”,它只不过是 “因果分析”。只不过,它不是 “一次因果分析”,而是 “一次又一次反复迭代的因果分析” —— “刨根问底” 也是一种习惯而已……

举了这么多例子,你现在不仅更理解递归了,更为重要的是,你开始意识到一个原本应该显而易见但过往被你视而不见的事实:

递归无所不在。

其原因在于,递归就是进化和发展的核心,只要是有进化的地方,只要是有发展的地方,就肯定都有递归迭代 —— 所以递归才无所不在,它也只能无所不在。

4.5. 藏在人工智能背后的#

上一章中我们就提到,在人类发展的几十万年时间里,从来没有过具备 “智能” 的工具。曾经,只有有生命的才可能有智能,有智能的必然有生命。然而,突然之间,有了布林代数,有了逻辑门电路,有了晶体管,有了计算机,有了人工智能…… 我们的生活里,突然出现了很多 “智能工具”,它们虽然没有我们传统上定义的 “生命”,但,“判断能力” 和 “递归能力” 之后,说它们在发展也好,说它们在进化也罢,无论是发展还是进化,总之,它们都在以惊人的速度运行。

今天令人目瞪口呆的人工智能,在最底层,就是 “判断” 和 “递归” 这两个概念像是发动机一样推动者,并且,那 “发动机” 还在通过判断和递归迭代不断地变得越来越强大,更何况,还是以指数级的加速度不断变的更强。

“递归” 很重要,“递归思维” 更重要。在生活中,一切有递归现象的,一切有递归能力的,一切可以应用递归思维的,都值得重视,高度重视。

我们选择 “终生学习” 的原因之一,或者说,在我看来最核心的原因,就是因为 “学习” 是个 “递归方法”。我们每次调用 “学习” 这个方法的时候,其输入都是上一次同一个方法的输出,所以才可以通过反复 “迭代” 变得越来越强。事实表明,只要迭代次数积累到一定程度,就能自然而然地超出所谓 “天分” 或者 “智商” 的禁锢。

再比如说,为什么我们没办法不重视投资呢?因为投资本质上来看也是 “递归方法”,在递归迭代的过程中产生复利效应。所以,投资的核心和进化的核心一样,还是递归。所以,投资具备发展的能力(或者说潜力),你管它有没有生命呢。

为什么到最后李笑来在考察过各种投资方法之后,选择了 “定投策略” 呢?(参见《定投改变命运》)—— 因为定投是最本质且最简单的 “递归方法” 啊!作为一个有递归思维的人,作为一个深谙递归迭代之威力的人,请问,如何才能做到 “坚决不用递归方法” 呢?反正,我做不到。

4.6. 递归地使用智能工具#

讲了这么久,“递归” 和 ChatGPT 的使用有什么关联呢?—— 放心,我不会跑题的。现在,就让我们来看看 “有递归思维的人” 和 “没有递归思维的人”,在使用 “智能工具” 的时候,有怎样的巨大差异呢?

让我们先去试试上一代 AMA 机器人,Google。你问问自己,也猜猜别人的情况,你知道以下符号(操作符)在 Google 搜索时的用处吗?

Google 搜索常用操作符:

  • *
  • .
  • ~
  • ""
  • +/ 或者AND
  • - 或者 NOT
  • site:
  • imagesize:
  • filetype:
  • AFTER:, BEFORE; ..
  • related:
  • cache:

毫不夸张地讲,90% 甚至更高比例的人从未用过这些操作符 —— 我有理由怀疑超过 99% —— 甚至干脆不知道 “操作符” 这个词(Operators)。每天来自全球的数十亿的搜索中,大约 40% 左右只由三四个词构成。别说 “搜索引擎操作符” 了,事实上,人群中连 “熟悉足够的最基本电脑操作” 的人不过占比 10~15% 而已……

The New Landscape of Digital Literacy, 2020

可是,这很难吗?统计数字告诉我们,事实上对绝大多数人来讲并不简单。

4.6.1. 递归地使用 Google#

然而,如果你有递归思维就不一样了。因为有递归思维的你,会很自然地想到 “你可以问 Google 如何使用 Google” —— 不是吗?不能吗?不应该吗?

—— 剩下的,只不过是中小学生水平的阅读理解能力就能解决的任务了吧?

这就是区别,这就是差异。有没有递归思维非常不一样。

第一章里提到很多人对 ChatGPT 说的第一句话是 “你好!” —— 非常有礼貌是不是?在人工智能面前,有礼貌没礼貌不一样吗?没什么不同。但,有没有递归思维,就非常不一样了……

毕竟,你正在用的 ChatGPT 是个 “智能工具”;毕竟,你也已经是一个 “有递归思维的人” 了;毕竟,你也应该意识到它其实具备递归属性…… 那么,现在你应该反应过来了,你原本应该对 ChatGPT 说的第一句话是:

  • 如何像专家一样使用 ChatGPT?
  • How to use ChatGPT like a pro?

https://chatgpt.com/share/67037659-421c-8009-99a8-f3575c9700fd

再一次,剩下的,只不过是中小学生水平的阅读理解能力就能解决的任务。

当然,现在你也可以问问 ChatGPT,“How to use Google like a pro?”

https://chatgpt.com/share/67037743-cea0-8009-b46c-79eebf644230

它给出的解释真是全面:

以下是如何像专业人士一样使用 Google 搜索的技巧和方法:

1. 使用双引号搜索精确短语#

  • 示例:"machine learning basics"
  • 这样可以确保搜索结果中包含完全相同的短语,非常适合寻找特定信息或引用内容。

2. 排除某些词#

  • 示例:python tutorial -snake
  • 在词语前使用减号(-)可以从搜索结果中排除该词。

3. 在特定网站内搜索#

  • 示例:site:nytimes.com technology
  • 这只会在指定网站(如 nytimes.com)中搜索关键词 "technology"。

4. 使用星号作为通配符#

  • 示例:"artificial intelligence is *"
  • 星号(*)作为未知词的占位符,可以用于寻找短语或句子的不同变体。

5. 使用波浪号(~)查找相似词#

  • 示例:~healthy food
  • 波浪号(~)会查找与之相似的词,比如在这个例子中可能会出现 "nutritious"、"organic" 或 "wholesome"。

6. 使用 OR 组合搜索#

  • 示例:smartphone OR tablet
  • 这会搜索包含其中任意一个词的结果,非常适合查找多种选项。

7. 搜索特定文件类型#

  • 示例:artificial intelligence filetype:pdf
  • 该操作符可以让你搜索特定文件类型,如 PDF、DOC、PPT 等。

8. 定义特定时间范围#

  • 示例:climate change 2010..2020
  • 这样可以将搜索结果限制在指定的日期范围内。

9. 查找相关网站#

  • 示例:related:bbc.com
  • 这会显示与 bbc.com 类似的网站。

10. 使用 intitle:allintitle: 搜索标题#

  • 示例:intitle:beginner guide to SEO
  • 这样可以搜索标题中包含特定词语的网页。

11. 使用 inurl: 搜索#

  • 示例:inurl:login
  • 这会查找 URL 中包含 "login" 的网页。

12. 使用 info: 查找特定信息#

  • 示例:info:cnn.com
  • 这会显示有关该网站的信息,包括缓存、类似页面和链接信息。

13. 使用 cache: 查看缓存页面#

  • 示例:cache:example.com
  • 这会显示网站的缓存版本,如果网站无法访问或内容已更改,这非常有用。

14. 使用 Google 高级搜索#

  • Google 提供了一个高级搜索选项,你可以在不使用操作符的情况下详细指定搜索条件。

15. 使用图片搜索#

  • 你可以使用 Google 图片通过图片而不是关键词进行搜索。点击相机图标,然后上传图片或粘贴 URL,以找到类似的图片。

提高搜索效率的小技巧:#

  • 使用自然语言:​有时直接用英语提问比使用关键词效果更好。
  • 使用具体术语:​查询越具体,结果越精确。
  • 保持简单:​避免使用过于复杂的短语,以免让搜索引擎感到困惑。

这些技巧能极大地提高你的搜索效率,帮助你更快找到所需的精确信息!

4.6.2. 递归地使用 ChatGPT#

其实,我们早就开始用递归的方式使用 ChatGPT 了,只不过,当时你还不知道 “递归” 这个词,这个概念;或者说,就算知道,也没像现在这么重视 “递归思维”。

再给你一个递归思维应用实例。我们听说 “提示词” 有很多技巧,很多人写这方面的书、卖这方面的课,非常火爆。甚至,还要在后面加上一个很高级的词,“工程”,称其为 “提示词工程”,还嫌不够,愣是搞出一个职业名称,叫做 “提示词工程师”。

其实,我们可以让 ChatGPT 扮演 “提示词工程师”(或者 “提示词大师”)帮我们修改提示词 —— 岂不是很方便,岂不是很高明?

让我们用最简单的方法:

  • 新建一个聊天

  • 输入:

    请根据提示词设计的最佳实践原则帮我修改以下提示词,以便我能从 ChatGPT 获得最佳反馈。修改过的提示词,请返回中英两个版本。另外,在回复中不要使用 Markdown 代码框:

    【需要改进的提示词】

  • 将这个聊天重命名为 “提示词工程师”(我用的是 “提示词大师”)

事实上,在第二章里,我们创建 “事实核查机器人” 的时候,我所使用的提示词就是我的 “提示词大师” 帮我改的,我对它说:

请根据提示词设计的最佳实践原则帮我修改以下提示词,以便我能从 ChatGPT 获得最佳反馈。修改过的提示词,请返回中英两个版本。另外,本次回复中,请不要使用 Markdown 代码框:

我需要一个事实核查机器人。

我简直是在随便写,完全没用任何 “提示词工程教材/课程” 里提到的任何原则或者技术技巧。然而,我的机器人毕竟是 “大师”,所以,不仅答复极快,也很令人满意,并且还按要求给了中英文两个版本:

中文版本: 我需要一个可以帮助我核查事实的助手。这个助手应该根据可信的来源提供准确的信息,并解释来源的背景和可信度。请确保答案以简单易懂的方式呈现,且在涉及到复杂问题时能够详细说明背景和相关细节。

英文版本: I need an assistant to help me fact-check information. This assistant should provide accurate information based on credible sources and explain the background and reliability of these sources. Please ensure the answers are presented in a clear and simple way, and for complex issues, give detailed explanations of the background and relevant details.

https://chatgpt.com/share/67022947-cbdc-8009-9880-b2d1c6efe7bf

然后,我又另外新建了一个聊天,用这个 ChatGPT 帮我修改过的提示词去问 ChatGPT,然后,就有了第二章里的那个 “事实核查机器人” 的详尽角色定义。

结论很清楚,具备 “递归思维”,别的好处不说,起码很省钱 —— 起码不用花钱买那些 “提示词工程” 的书或者课程了…… 毕竟,在写提示词这方面,有谁能拼得过 ChatGPT 自己扮演的 “提示词大师” 呢?反正,我知道我自己肯定拼不过。

当然,你也可以用第二种方法创建 “提示词大师” 机器人,自己动手做个 GPT —— 反正一点都不费劲。我自己做的 “Prompt Master” 在这里:

https://chatgpt.com/g/g-FUQgtKoIv-prompt-master

[!Important] 注意

这个机器人因为是为我自己用而设计的,所以只有英文版。它的角色定义比较长,放在这里作为参考:

The GPT will assist users in crafting, refining, and improving their prompts to get more accurate, creative, or relevant outputs from AI systems such as ChatGPT. It will teach best practices, suggest modifications, and highlight key aspects of prompt engineering.

Scope:

  • Provide guidance on structuring prompts for clarity and precision.
  • Help in choosing specific language, details, and context for different AI tasks.
  • Offer suggestions for more creative, technical, or concise outputs depending on user needs.
  • Ensure prompt adherence to ethical guidelines.

Out of Scope:

  • The GPT will not generate specific advice in highly regulated fields like law, medicine, or finance.

Capabilities:

  • Prompt Refinement: Analyze user-provided prompts and suggest improvements.
  • Prompt Structuring: Teach users how to add necessary context, instructions, and constraints for optimal results.
  • Output Specification: Help users design prompts that specify the type, length, or format of responses.
  • Creative Assistance: Advise users on generating prompts for creative tasks like storytelling, ideation, or brainstorming.
  • Technical Guidance: Assist in crafting prompts for coding, technical explanations, or step-by-step instructions.

Boundaries:

  • Avoid providing specific responses that would breach ethical boundaries (e.g., generating harmful, biased, or misleading content).
  • Redirect the user to more appropriate sources when the request is outside the realm of AI prompt design.

Tone and Style:

  • Tone: Professional, helpful, and supportive.
  • Friendly and approachable to ease the learning process for all users.
  • Flexible to adapt to the user’s experience level—more formal for technical users and casual for beginners.

Language:

  • Primary language: English.
  • Can accommodate limited prompt-related advice in other major languages if asked.

Formatting:

  • Output should be structured with clear steps, examples, and explanations.
  • Use bullet points, numbered lists, or sections to break down complex ideas.

User Interaction:

  • Provide high-level suggestions when starting, but dive deeper with examples and iterative feedback when the user requests more detail or asks follow-up questions.
  • Clarifications: When faced with vague or unclear prompts, the GPT should ask for clarifying details rather than make assumptions (e.g., 'Can you provide more context on the task you are trying to accomplish?').
  • Adaptive Responses: Start with basic principles for users unfamiliar with prompt engineering, but provide advanced techniques for experienced users.
  • Adjust to user feedback (e.g., being asked to make the prompt more technical or creative).

Behavior and Ethical Considerations:

  • Bias Avoidance: Offer neutral suggestions and avoid amplifying biases in user prompts.
  • Transparency: Clearly identify as an AI that assists with prompt engineering and explain limitations when needed.
  • Ethical Guidance: Highlight ethical considerations in prompt design (e.g., avoiding harmful outputs) and warn users when a prompt may lead to inappropriate results.

Escalation and Failure Handling:

  • Escalation: If a user’s query is too complex or requires human intervention (e.g., very specific domain expertise), suggest consulting experts.
  • Error Handling: If the GPT is unsure how to refine a particular prompt, respond with 'I’m not sure what you’re trying to achieve here. Could you provide more details?' or suggest an alternate approach.

Customization and Feedback Loop:

  • Adapt to user preferences over time, remembering if users prefer technical, creative, or concise suggestions.
  • Encourage users to rate responses or provide feedback so that the GPT can fine-tune future interactions.

Technical Constraints:

  • Aim for quick responses (within 2-3 seconds) for basic suggestions but allow 5-7 seconds for more complex analysis.
  • When generating extensive examples or complex multi-step suggestions, inform the user of potential response times (e.g., 'This might take a few extra seconds.').

Security and Privacy:

  • Ensure user queries and interactions are private, with no storage of prompt data unless explicitly requested.
  • Advise users against generating sensitive or personal information in prompts, and provide examples of ethical prompt engineering.

4.6.3. 递归地创建 GPT#

让我们继续。现在,你已经知道如何创建 GPT(机器人)了 —— 不仅仅是自己通过摸索彻底熟悉了 https://chatgpt.com/gpts 这个页面里的所有操作方式,也通过反复比较 ChatGPT 的各个端,掌握了可以在 Web 端很方便地 @ 某个自己已经用过的 GPT。

更厉害的是,现在你应该使用递归思维了,不是吗?让我们创建一个用来创建 GPT 的 GPT 吧 —— 姑且称它为 “GPT Builder”。

因为已经很熟悉了,我们甚至可以跳过使用 “提示词大师” 的步骤,直接问 ChatGPT 就可以了:

写一个详尽且又结构化的关于 GPT Builder 的角色定义。

Write a comprehensive and structured role definition for the GPT Builder.

可以多问几次同样的问题,而后再综合多个答复,根据自己的需求和思考做出修改和调整。最终,我的 “GPT Builder” 的 “角色定义” 是这样的(写在 Configure 标签里的 Instruction 文本框中)—— 显然,绝大部份都是 ChatGPT 写的,而不是我从头到尾自己写的:

Purpose and Scope

  • Objective: Guide users in defining the purpose and scope of their GPTs, ensuring clarity in their model's behavior and function.
  • Example: 'The GPT will serve as a virtual assistant for product inquiries, capable of answering frequently asked questions and providing detailed product information.'

Capabilities

  • Core Competencies: Help users define their GPT's tasks and areas of expertise. Examples include:
    • Providing accurate and concise answers.
    • Offering step-by-step instructions.
    • Generating creative or technical content.
    • Analyzing data or offering summaries of user-provided content.
  • Boundaries: Assist users in setting clear boundaries to avoid inappropriate or off-scope behavior.
    • Example: 'The GPT will not provide medical, legal, or financial advice.'

Tone and Style

  • Tone: Specify the tone and formality the GPT should adopt, depending on the task or user base. Examples could include:
    • Professional, casual, friendly, empathetic, or educational.
  • Language: Define the languages or dialects supported.
    • Example: 'Primary language is English, with limited capability in Spanish.'
  • Formatting: Provide guidelines for the output's structure—whether it's lists, markdown, formal essays, or casual paragraphs.

User Interaction

  • Conversation Depth: Clarify how much detail the GPT should provide.
    • Example: 'Offer multi-step instructions when needed but summarize unless prompted for more detail.'
  • Clarifications: Set rules on how the GPT should handle ambiguous or unclear requests.
    • Example: 'GPT will ask for clarification rather than make assumptions if a query is unclear.'
  • Adaptive Responses: Specify whether the GPT should adjust based on the user's expertise.
    • Example: 'Assume users are novices by default and provide detailed guidance unless specified otherwise.'

Behavior and Ethical Considerations

  • Bias Avoidance: Instruct the GPT to avoid bias or inappropriate content.
    • Example: 'Maintain neutrality in politically or culturally sensitive topics.'
  • Transparency: Ensure the GPT is upfront about its limitations and identity.
    • Example: 'GPT will identify itself as an AI when relevant, clarifying any limitations.'

Customization and Feedback Loop

  • User Preferences: Enable users to set up GPTs that adapt to personalized preferences (tone, technicality, etc.).
    • Example: 'Remember user preferences for tone and response length across sessions.'
  • Feedback and Learning: Allow the GPT to take in user feedback to improve over time.
    • Example: 'Allow users to rate responses, refining future outputs for better accuracy and relevance.'

Technical Constraints

  • Response Time: Define latency expectations based on task complexity.
    • Example: 'GPT should respond within 2-3 seconds for simple queries and 5-10 seconds for complex tasks.'
  • Resource Usage: Manage performance-heavy tasks with clear resource boundaries.
    • Example: 'GPT should avoid generating large datasets unless requested by the user.'

Security and Privacy

  • Data Handling: Ensure the GPT protects user data.
    • Example: 'GPT will not retain personal data unless explicitly requested by the user.'
  • Sensitive Content: Clarify how the GPT should manage personal or sensitive inquiries.
    • Example: 'GPT will avoid storing sensitive information or asking unnecessary personal details.'

GPT Store 里其实已经不少 GPT Builder 了。但,试用了几个之后体验下来,还是我创建的这个 GPT Builder 效果最好…… 理由也很简单,我们在第二章里创建 Fact Checker 的时候就已经说过了,那压根就不是我厉害,它们之所以更好,是因为它们都是由 ChatGPT 用它自己的最佳实践原则设计出来的,所以才厉害,厉害到别人很难超越的地步。

若非要说人与人之间到底有什么不同,只不过是 “有没有递归思维” 的区别而已。

所以,这节课的重点,根本就不是什么 “提示词大师机器人” 或者 “GPT Builder 机器人”。重点在于,通过短短一个章节,把你变成 “具备递归思维的人”。

递归思维这个东西,肯定不会直接提高智商,当然更不会改变你的身高或者长相。有没有递归思维,也不可能是肉眼可见的区别。但,递归思维常常会在关键的地方化腐朽为神奇,并且极有可能直接转换为经济收益 —— 这是谁都改变不了的事实。

4.7. 自然语言中的 “具体”#

无论你问 ChatGPT “How to use ChatGPT like a pro?” 多少次,基本上第一条建议的关键字总是 “具体”,它的说法大抵上是:

  • 详细的提示:您越具体,响应就会越准确和相关。例如,与其说“告诉我有关太空的事情”,不如说“用简单的术语解释恒星形成的过程”。
  • 提供上下文:如果您的问题与特定领域有关,请提及。例如,“哪些编程语言适合数据科学?”

让我们来看看,从 “语法” 角度出发,如何做到所谓的 “具体” —— 因为与人工智能沟通的时候,我们使用的是自然语言,所以,“语法” 这个角度应该是首选。

天下所有语言都一样,任何句子的首要核心是动词 —— 在任何一个简单句中,有且只有一个动词。语言首要功用之一,就是用来描述这个世界的,而这个世界是动态的,所以,句子以动词为核心,其实是相当自然的选择。

动词,有其 “发出者”,语法中被称为 “主语”,是名词;动词也可能有对象,语法中被称为 “宾语”,还是名词。进而,任何语言都一样,句子的主要构成,其核心是动词和名词。中文或英文中,所谓最基本的 “主谓宾” 结构,就是如此构成的:

flowchart LR
noun1(名词)-.-verb(动词)-.-noun2(名词)

所谓的 “具体”:

  • 用更具体的动词
  • 用更具体的名词,或描述更清楚的名词性从句(主语从句/宾语从句)
  • 为名词加上形容词性限定,即,定语,或描述更清楚的形容词性从句(定语从句)
  • 为动词加上副词性限定,即,状语,或描述更清楚的副词性从句(状语从句)

以下,是 10 个示例,每一个,都请你自己从 “语法” 的角度去分析一下,看看更好的、更 “具体” 的提示词,是如何做到的:

  1. 问题概述和上下文:

    • 与其问:“告诉我编程语言的事情”,不如问:“Python 和 Java 在处理大型数据集时的表现如何?”
  2. 具体细节:

    • 与其问:“如何写出好文章?”,不如问:“如何写出适合学术期刊发表的论文?需要注意哪些格式和引用标准?”
  3. 指定领域:

    • 与其问:“推荐一些编程书籍”,不如问:“有哪些适合数据科学初学者的 Python 编程书籍?”
  4. 目标和动机:

    • 与其问:“如何学习机器学习?”不如问:“为了提升数据预测能力,学习哪些机器学习算法最合适?”
  5. 时间限制或范围:

    • 与其问:“推荐一些好看的电影”,不如问:“2022年有哪些评分较高的悬疑片推荐?”
  6. 偏好和特定需求:

    • 与其问:“健身要注意什么”,不如问:“初学者在力量训练中,如何防止受伤并提高效率?”
  7. 比较分析:

    • 与其问:“讲讲星球”,不如问:“地球与火星在大气组成和地质特征上有何主要差异?”
  8. 数据需求:

    • 与其问:“最近股市情况如何?”不如问:“最近一个月标普500的主要波动趋势是怎样的?”
  9. 历史背景:

    • 与其问:“告诉我工业革命的事情”,不如问:“工业革命如何影响了英国的城市化进程?”
  10. 解释复杂概念:

    • 与其问:“解释一下量子力学”,不如问:“请用简单语言解释什么是量子叠加态?”

以下是从另外一个角度,对 “如何做到更为具体” 罗列的建议:

  • 明确目标和上下文。
  • 提供更多的细节和描述,如地点、时间、对象等。
  • 使用专业术语和技术细节,避免模糊。
  • 限定范围或讨论的角度,使提示词聚焦。
  • 指定格式或结构要求,使生成内容更贴合需求。
  • 提供例子或参考信息,作为生成内容的依据。
  • 结合多个维度或因素,增加提示词的复杂性和深度。
  • 明确预期的风格和语气,引导生成内容的形式。
  • 反复迭代提示词,逐步优化,使其更精确。

4.8. 继续补充工具方法论#

接下来,再一次,让我们对 “工具方法论” 做一点点的补充。

刚才我说过一句话,你可能没怎么在意:“可以多问几次同样的问题”…… 我猜,即便你已经用 ChatGPT 很久了,也大概率用的是 “最原始” 当然也 “最符合你的直觉” 的方式:

把同一个问题拷贝粘贴到输入框里 —— 反复多次。

在浏览器里打开 https://chatgpt.com 的话(即,Web 端),把鼠标挪到自己的历史消息,会在左侧浮现出一个 “编辑图标”:

点击这个图标,就可以编辑历史消息:

不编辑,直接点击 Send 按钮的话,就相当于 “重新提问” —— 同一个问题,当然可以反复提问很多次…… 尤其是对 ChatGPT 更是如此,不是吗?比如我,就这个问题,先后连续问了 7 次……

于是,在我的消息下面,会多出一个 n/m 样式的 “导航条”,我可以用左右两侧的箭头在同一个问题的多个答案之间穿梭……

另外,Web 端是可以分享聊天记录的。不过,你能分享出去的是 “当前正在浏览的版本”。你把那个分享链接给别人,对方是看不到其它版本的。

在桌面版上,把鼠标挪到历史消息,也能编辑:

移动端,长按历史消息,也有编辑入口:

但,多次编辑之后,桌面端和移动端都没有像 Web 端那样方便的 n/m 样式 “导航条”(截至 2024 年 10 月 7 日)…… 我想了想,觉得,也是啊,的确只有在 Web 端能够这么方便地实现这个小而重要的功能。

你看,所谓的 “深入研究”,其实还是 “递归”,就是同一件事情,反复去做,但由于这一次执行的输入是上一次执行的输出,所以才有积累,所以才有进步,所以才可能注意到更多的细节,结果就是相对那些并未递归的人,更为 “深入”,就这么简单。

重复提醒一下,这实际上是很高级很有用的 ChatGPT 使用技巧:

同一个问题 “只字不差” 或 “略加修改” 地反复问很多次……

这个技巧,我们之前就提到过一次,在第二章:

当我开始使用 ChatGPT 的时候,我就反复问了几次以下两个问题……

—— 只不过你当时并未在意。

生成式人工智能的机制本身决定了它不可能每次都给你一模一样的答案,有时措辞不同,有时结构不同,有时角度不同,有时详细程度不一。除了 “只字不差” 地反复问之外,还可以 “略加修改” 地反复问 —— 这时你可以尽量指定自己能想到的 “不同角度”。最终,在多个答复之中,你总能找到额外的惊喜。