最近一段时间,我越来越频繁地遇到同一个感觉:我们和计算机打交道的方式,正在发生一种并不显眼、但很根本的变化。
这并不是某个模型参数规模变大了,也不是某个产品能力突然跃迁,而更像是一种长期积累之后的结果——语言层级在发生变化。如果不把这个问题单独拎出来想清楚,很容易被各种表层现象带着跑。
如果回顾计算机的发展史,其实每一次生产力的跃迁,背后几乎都伴随着一次语言抽象层级的上移。最早,人直接使用汇编语言和机器交互,需要关心寄存器、指令和内存地址。后来,高级语言出现,人只需要描述“要做什么”,而不必再关心“机器具体如何执行”。编译器承担了中间的翻译工作。
我现在越来越觉得,大模型的出现,很可能标志着又一次语言层级的上移。只是这一次,上移到最顶层的,不是某种新的形式化语言,而是自然语言本身。
自然语言开始具备“编程语言”的功能
这里说“自然语言是一种编程语言”,并不是一个修辞性的说法,而是一个相对严肃的判断。
在越来越多的实际使用场景中,人类已经不再通过“写代码”来表达需求,而是通过自然语言去描述目标、约束条件、执行流程以及判断标准。模型负责将这些描述“编译”为可执行的行为。从这个角度看,大模型的角色,与其说是一个聊天对象,不如说更像是一个新的编译器。
如果沿着语言分层的角度来看,结构其实非常清晰:汇编之上有高级语言,而在高级语言之上,现在出现了自然语言这一层。现有的编程语言并不会因此消失,但它们的位置正在发生变化。
这很可能只是一个过渡阶段
我并不认为未来会是“人人不写代码”的世界。更可能的情况是,代码会逐渐退到类似今天汇编的位置上——仍然存在,仍然重要,但只在少数对性能、底层控制有强需求的场景中被直接使用。
对大多数人而言,工作重心会进一步上移,停留在 skills、前端工具、配置和规则层面。这并不是技术变简单了,而是分工发生了调整:越来越多的人只需要掌握如何正确地描述问题,而不是如何实现底层细节。
如何看待大模型的“不可靠”
在这种背景下,一个绕不开的问题是:既然大模型会产生幻觉,那这种“自然语言编程”到底靠不靠谱?
这里我想强调一点:幻觉并不完全是能力问题,而是约束方式的问题。过去我们处理幻觉的主要手段,是通过 few-shot 示例、提示词工程以及人工兜底来修正输出,但这些方法本质上都是在治标。校验这件事,一直由人来承担。
直到最近,我看到 Meta AI 关于验证链(Chain-of-Verification,CoVe)的研究,才觉得这个问题被放在了一个更合理的位置上。下面这段内容,我直接原文引用:
Meta AI研究人员发现了一种让大模型准确率提升94%的技术,而且完全不需要任何示例。
这就是"验证链"(Chain-of-Verification,CoVe)。
传统提示词的困境在于:大模型会产生幻觉,自信满满地给出完全错误的答案。Few-shot示例虽有帮助,但受限于示例选择、token预算,且依然无法根治幻觉问题。我们一直在治标,而非治本。
CoVe的核心逻辑是让模型自己检验自己,分四步走:
生成初始回答
规划验证问题
独立回答这些验证问题
基于验证结果生成最终答案
关键在于"独立"二字。准确率从68%跃升至94%,无需微调,零样本即可生效。
这项工作的关键意义,并不在于准确率数字本身,而在于一个非常重要的变化:验证被纳入了模型执行流程,而不再是事后的人为补救。
自然语言正在承担流程与规约
更值得注意的是,这种能力并不依赖模型结构的改变,而完全发生在自然语言层面。例如下面这个提示词模板,我同样按原文引用:
提示词模板:
[你的问题]请按以下步骤执行:
提供你的初始答案
生成3-5个能暴露答案错误的验证问题
独立回答每个验证问题
基于验证结果提供修正后的最终答案
如果从传统软件工程的视角来看,这已经是一个完整的执行流程定义:先生成结果,再设计验证,再独立校验,最后根据验证结果修正输出。不同的是,这一切并不是通过代码完成的,而是通过自然语言完成的。
当你继续使用自然语言去描述证据要求、置信度、反证路径以及第三方视角时,它已经开始承担起工程规约的角色。这意味着,自然语言不再只是输入接口,而正在成为系统行为的重要组成部分。
一点总结性的判断
从更大的视角来看,AI 真正解决的,并不是“回答问题”的能力,而是一个长期存在的人机接口问题。过去,人类需要程序员作为中介,把意图翻译成机器语言;现在,大模型正在接管这层翻译工作。
我不确定这种变化最终会把我们带到哪里,但我越来越确定一件事:编程语言的层级已经发生了变化。也许在未来回头看今天的代码,它的地位会更接近今天的汇编语言——仍然存在,但不再是大多数人直接面对的东西。
从这个角度看,“Transformer”这个名字,确实很应景。它所做的,正是把语言,转换为可以被执行的结构。