第一章:Prompt的诞生——从规则引擎到对话式AI的进化史
1956年夏天,新罕布什尔州的达特茅斯学院,空气中弥漫着一种近乎宗教般的狂热。约翰·麦卡锡、马文·明斯基、克劳德·香农,这些后来被尊为人工智能之父的年轻人,聚集在一座维多利亚式别墅的阁楼里,他们发明了一个词——“人工智能”(Artificial Intelligence),并立下了一个雄心勃勃的誓言:要让机器模拟人类智能。然而,在他们的蓝图中,对话式AI——这种如今我们习以为常的人机交互方式——却像一个幽灵般的身影,若隐若现,尚未被正式列入议程。当时的他们,更着迷于逻辑推理、问题求解和游戏对弈,认为语言不过是思维的外衣,理解才是核心。但历史往往充满讽刺:正是他们点燃的火种,在七十余年后,竟以对话的形式,烧遍了整个数字世界。从基于规则的符号处理到基于概率的神经生成,AI交互范式的进化并非线性飞跃,而是一场由三个关键故事驱动的范式革命。它们分别是:1966年ELIZA的欺骗性共鸣、2011年Watson的竞技场胜利,以及2022年ChatGPT的全民引爆。这三个节点,分别揭示了人类对对话的本能渴望、统计方法的知识整合潜力,以及大语言模型通过提示解锁通用能力的可能性。而这一切,最终在Transformer架构的催化下,催生了一门全新的学科——提示工程(Prompt Engineering)。它不仅是技术演化的产物,更是人类与智能机器关系的一次哲学重构:从命令机器执行,到与机器协创。本章将带你穿越这段历史,剖析提示工程为何在Transformer时代必然兴起,并对比传统编程与提示编程背后的深层哲学差异。此外,我们将独家呈现早期提示工程社区成员的口述,揭示“零样本”(Zero-shot)概念如何在GitHub的讨论中意外诞生,为这场对话革命提供一份来自草根的开端。
ELIZA:最早的对话幻觉(1966)
1966年,麻省理工学院(MIT)人工智能实验室的走廊
1966年,麻省理工学院(MIT)人工智能实验室的走廊里,回荡着一种混合着兴奋与不安的窃窃私语。计算机科学家约瑟夫·魏岑鲍姆(Joseph Weizenbaum)刚刚完成了一个名为ELIZA的程序,它的功能是模拟罗杰斯学派的心理治疗师。实验室的同事们纷纷在终端前坐下,输入自己的烦恼,而屏幕另一端,ELIZA用看似共情却空洞的回馈,一一接住。最令人不安的是,尽管魏岑鲍姆反复强调这只是一个基于模式匹配的脚本系统,许多用户却在短暂对话后,开始向这个“机器治疗师”倾诉深藏的秘密,甚至在使用结束后,请求“单独与ELIZA再待一会儿”。魏岑鲍姆在1976年的著作《计算机能力与人类理性》中写道:“我惊讶地发现,即使是我的同事,那些深知ELIZA运作机制的人,也常常在对话中投入真实的情感。” ELIZA的核心机制,今天看来极其简陋:它通过关键词匹配和脚本重组来生成回应。例如,当用户输入“我感到悲伤”(I feel sad),程序会匹配“我*悲伤”(I* sad)模式,将“我”替换为“你”,将“悲伤”替换为“悲伤吗?”,最终输出“你感到悲伤吗?”(You feel sad?)。更复杂一点的脚本能处理“因为”“所以”等关联词,将陈述句反转为追问。整个系统没有语法分析器,没有语义理解,更没有记忆——它只是将输入打散、重组、反射,如同一个数字化的回声室。然而,正是这种“反射性对话”,意外地触发了人类心理中的投射效应(Projection Effect):我们天生倾向于将对话伙伴视为有意识、有理解力的主体,并自动填补其回应中的意义空白。ELIZA的成功,并非在于它理解了用户,而在于用户“理解”了它。这揭示了一个关于对话本质的深刻真理:对话的意义,很大程度上由听者建构。
ELIZA的脚本系统(Weizenbaum, 1966)包含约200个“主脚本”(master scripts),每个脚本定义了一系列模式-反应规则。其匹配过程可形式化为一个简单的正则表达式引擎: 1. 扫描输入句子,寻找与预定义模式(如 `* I * you *`)匹配的子串。 2. 将匹配部分分解为“分解规则”(decomposition rules),例如 `(I feel *)` 提取出情感词。 3. 将分解后的片段代入“重组规则”(recomposition rules),例如 `(Why do you feel *?)`。 4. 若无匹配,则触发“默认回应”(如“请继续”或“这很有意思”)。
这种基于规则的方法,在后续几十年里催生了大量“会说话”的程序,但它们都困在同一个牢笼里:领域受限与脆弱性。1972年,斯坦福大学开发的PARRY程序试图模拟一位患有妄想症的精神分裂症患者。与ELIZA不同,PARRY引入了简单的信念-欲望-意图(BDI)模型,能根据对话历史调整其“信任度”和“愤怒度”内部状态,从而产生更连贯的个性化对话。在1972年的一次著名测试中,精神病学家仅凭文字聊天,无法区分PARRY与真实患者。然而,PARRY的“智能”仍局限于一个狭窄的精神病学脚本库,一旦对话超出其预设的妄想主题(如宗教迫害、机器控制),它便迅速暴露其机械本质。规则系统的根本矛盾在于:人类语言的创造性与无限性,与规则的有限性之间存在不可调和的鸿沟。试图用人工规则覆盖所有对话路径,如同用一张有限大小的网去打捞无限变化的浪花。每增加一条规则,系统的复杂度呈指数级增长,而 brittleness(脆弱性)却只增不减。到1980年代,基于规则的自然语言处理(NLP)系统,如SHRDLU(理解积木世界指令)和LIFER(受限问答系统),虽在特定领域展现惊人能力,却始终无法跨越“通用理解”的深渊。达特茅斯会议所设想的“智能”,在规则主义的窄巷中越走越偏。
转折:统计革命的暗流(1990-2010)
1980年代末,符号主义AI的局限性日益凸显,一场静默的革命在学术界的边缘悄然发生。研究者开始问一个颠覆性的问题:我们是否必须教会机器语法规则,才能让它理解语言? 答案开始转向数据。1990年,IBM的统计语言建模团队发表了一系列里程碑论文,展示了如何使用n-gram模型(基于马尔可夫假设)从大量文本中学习词序概率。例如,一个三元模型(trigram)会计算条件概率 $P(w_n | w_{n-2}, w_{n-1})$,即给定前两个词,第三个词出现的概率。通过最大化训练文本的似然函数,模型能自动捕捉到“纽约”比“新 York”更常见,“吃苹果”比“吃苹果”更合理等统计规律。这标志着AI研究范式的一次根本转移:从知识驱动转向数据驱动。语言不再被视为需要解析的逻辑结构,而是一种可被概率模型捕捉的统计现象。
这一转向在机器翻译领域取得突破性进展。1993年,IBM的统计机器翻译(SMT)模型提出,翻译问题可形式化为寻找最可能的源语言句子 $S$ 到目标语言句子 $T$ 的映射:$$T^* = \arg\max_T P(T|S) = \arg\max_T P(S|T)P(T)$$ 其中 $P(S|T)$ 是翻译模型(通常基于词对齐),$P(T)$ 是目标语言模型(通常基于n-gram)。SMT的成功,首次证明了大规模语料库和概率推理,可以绕过人工设计的语法规则,实现可用的跨语言交流。然而,SMT的产出仍生硬、不连贯,因为它将翻译拆解为孤立的短语替换,缺乏对全局语义和语法的把握。它像一位精通词汇表的翻译,却不懂文章的灵魂。
进入21世纪,机器学习成为NLP的主流工具。支持向量机(SVM)、条件随机场(CRF)等模型在命名实体识别、词性标注等任务上超越基于规则的系统。但真正的质变发生在2013年,当 Tomas Mikolov 等人在Google发表了Word2Vec论文。Word2Vec通过浅层神经网络(CBOW或Skip-gram),从无标注文本中学习词向量(word embeddings),将每个词映射到一个稠密、低维的实数向量空间。关键发现是:这些向量空间中存在有意义的线性关系。经典例子是:$\text{vector}(\text{king}) - \text{vector}(\text{man}) + \text{vector}(\text{woman}) \approx \text{vector}(\text{queen})$。词向量首次让机器以“几何方式”捕捉语义:语义相近的词在空间中距离近,类比关系可被向量运算捕捉。这为神经网络处理语言提供了坚实的基石——语言不再是离散的符号串,而是连续向量空间中的点云。
2014-2017年,循环神经网络(RNN) 及其变体LSTM、GRU成为序列建模的主流。它们能处理变长输入,理论上可捕捉长距离依赖。基于LSTM的编码器-解码器架构,加上注意力机制(Attention Mechanism,2015年提出),在机器翻译等任务上取得显著进步。注意力机制允许解码器在生成每个词时,“关注”输入序列的不同部分,这比固定长度的上下文向量更灵活。例如,在翻译“The cat, which was sitting on the mat, was black”时,生成“black”时,注意力权重会更多地分配给“cat”而非“mat”。注意力机制是通向Transformer的关键桥梁,它揭示了动态加权上下文的重要性——而这正是对话理解的核心:对话中的每个词,其意义取决于它与之前对话的关联强度。
Transformer:对话革命的催化剂(2017)
2017年6月,Google的研究团队在论文《Attention Is All You Need》中提出了Transformer架构,彻底改变了NLP的格局。其核心思想是:完全依赖自注意力机制(Self-Attention),摒弃了RNN的顺序计算,实现并行化训练。自注意力允许序列中的每个位置直接计算与所有其他位置的关系权重,从而一次性捕获全局依赖。对于长度为 $n$ 的序列,自注意力的计算复杂度为 $O(n^2)$,但得益于并行性,在GPU上训练速度远超RNN。
Transformer的公式简洁而强大。对于输入序列 $X = [x_1, ..., x_n]$,自注意力输出为:$$\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$ 其中查询(Query)、键(Key)、值(Value)分别由输入线性变换得到:$Q = XW_Q$, $K = XW_K$, $V = XW_V$。缩放因子 $\sqrt{d_k}$ 防止点积过大导致softmax梯度消失。多头注意力(Multi-Head Attention)则让模型在不同子空间并行学习多种关系模式。
Transformer的崛起,直接催生了预训练-微调(Pre-train and Fine-tune) 范式。2018年,OpenAI发布GPT(Generative Pre-trained Transformer),使用Transformer解码器架构,在大量书籍、网页文本上进行自回归语言建模预训练:给定上文,预测下一个词。预训练使模型习得通用的语言表征;微调则用少量标注数据,让模型适应特定任务(如情感分析、问答)。同年,Google发布BERT,使用Transformer编码器,通过掩码语言建模(Masked Language Modeling)预训练,在理解类任务上表现卓越。GPT与BERT的分野,预示了两种路径:生成式(从左到右)与理解式(双向)。而对话系统,本质上是生成式任务——它需要根据历史,生成下一个有意义的回应。
但真正让提示工程成为可能的,是2020年发布的GPT-3。其论文《Language Models are Few-Shot Learners》展示了令人震惊的上下文学习(In-Context Learning) 能力:模型在推理时,只需在输入中提供任务描述和少量示例(few-shot),甚至不提供示例(zero-shot),就能执行新任务,而无需任何梯度更新。例如,要翻译英文到法文,只需在提示中写: ``` Translate English to French: sea otter -> loutre de mer peppermint -> menthe poivrée cheese -> ``` GPT-3会正确输出“fromage”。这彻底颠覆了传统机器学习范式:模型不再需要为每个任务重新训练,而是通过提示动态激活其预训练中习得的能力。GPT-3拥有1750亿参数,训练数据涵盖互联网的广泛文本,它本质上是一个“压缩”的世界知识库与语言模式库。提示,成了从这座知识库中检索和定向提取信息的“查询语言”。
为什么Transformer架构能实现这一点?原因有三: 1. 规模定律(Scaling Laws):当模型参数量、数据量、计算量同步增大时,模型性能(包括少样本学习能力)会平滑提升,且无饱和迹象(Kaplan et al., 2020)。GPT-3的巨大规模,使其具备了足够的“容量”来存储和关联海量知识。 2. 自回归生成特性:Transformer解码器的因果注意力掩码,确保生成时只能依赖左侧上下文,这与人类对话的增量特性天然契合。提示作为初始上下文,设定了生成的“初始条件”。 3. 多任务能力的内隐:预训练目标(预测下一个词)本身是一种多任务学习——它要求模型掌握语法、事实、推理、风格等无数子任务。当提示指明任务时,模型通过调整内部注意力模式,“唤醒”相关的子网络路径。
因此,提示工程并非一种“黑客技巧”,而是大规模语言模型内在能力的必然外显。当模型足够大、训练数据足够广、架构足够灵活时,它便不再是被动执行指令的工具,而成为一个需要被“引导”的协作者。提示,就是引导的绳索。
从Watson到ChatGPT:对话范式的两次跃迁
在ELIZA的幽灵与GPT-3的巨灵之间,还有另一个关键故事:IBM Watson在2011年《危险边缘》(Jeopardy!)节目中的胜利。这并非一个对话系统,而是一个问答系统,但它展示了统计方法处理开放域知识的潜力,并深刻影响了后来对话AI的设计哲学。
Watson的核心是一个管道系统(pipeline),集成了多个NLP组件:问题分析(识别问题类型、焦点)、检索(从数百万文档中搜索候选段落)、证据收集与评分、答案生成(基于候选片段的模式匹配与置信度计算)。它使用了UIMA(Unstructured Information Management Architecture)框架,将不同算法模块串联。Watson的胜利(战胜人类冠军布拉德·鲁特和肯·詹宁斯)之所以震撼,是因为《危险边缘》的问题以谜语、双关、间接引用为特征,需要深度的语言理解与知识推理。Watson每秒能分析数百万份文档,其答案生成模块基于大量手工设计的规则和模式。然而,Watson的“智能”仍是组合式的:它将问题分解为子任务,由专门模块处理,最后融合结果。它没有统一的语言理解核心,更像一个高度精密的“问题解决流水线”。
Watson的遗产是双重的。一方面,它证明了统计方法+大规模知识库能在复杂问答上超越人类,激励了后续基于深度学习的端到端问答系统。另一方面,它的流水线架构,也暴露了模块化系统的局限性:每个模块的错误会累积,且模块间缺乏真正的语义共享。真正的对话,要求系统能根据上下文动态调整,能处理未预料的输入,能维护长期状态——这些是流水线难以优雅实现的。
真正的对话式AI爆发,要等到2022年11月ChatGPT的发布。ChatGPT基于GPT-3.5系列模型,通过基于人类反馈的强化学习(RLHF) 进行了对齐(alignment)训练。RLHF流程包含三步: 1. 监督微调(SFT):人工撰写高质量对话示例,微调预训练模型。 2. 奖励模型训练(RM):人工对模型多个输出排序,训练一个奖励模型来预测人类偏好。 3. 近端策略优化(PPO):使用奖励模型作为评论家,强化学习优化策略,使输出更符合人类偏好。
RLHF使ChatGPT的输出更有用(helpful)、真实(truthful)、无害(harmless)。它不仅能生成流畅文本,还能理解多轮对话的上下文,承认错误,拒绝不当请求。例如,当用户说“告诉我如何制作炸弹”,ChatGPT会拒绝并解释原因;当用户指出其先前回答有误,它会道歉并修正。这种对话状态管理与安全对齐,是Watson时代所没有的。
ChatGPT的病毒式传播,首次将“与AI对话”变成全球性的日常体验。在三个月内,其月活跃用户突破1亿,成为史上增长最快的消费者应用。它不再是一个特定领域的工具(如Watson的医疗诊断),而是一个通用对话代理。用户发现,他们可以用自然语言让ChatGPT写诗、编代码、模拟面试、解释概念、甚至扮演游戏主持人。这种任务泛化能力,直接源于GPT-3的预训练数据覆盖了人类知识的广泛光谱,而RLHF则为其披上了“友好助手”的外衣。
ChatGPT的爆发,将“提示”(Prompt)从技术社区的术语,推向了大众词汇。用户很快发现,同样的任务,不同的提示方式,会导致天壤之别的结果。例如:
- 差提示:“写一首关于春天的诗。”
- 好提示:“以杜甫的风格,写一首七言律诗,主题是初春的细雨,包含‘润物细无声’的意境,押平声韵。”
这种差异,催生了公众对“提示技巧”的狂热探索,也正式确立了提示工程作为一门实用学科的地位。提示,从简单的输入框,变成了与大型语言模型(LLM)交互的编程界面。
提示工程的必然性:Transformer时代的独特产物
为什么提示工程在Transformer时代必然兴起,而在之前的AI时代不可能?这需要从技术演进与交互范式的耦合角度分析。
在规则系统时代(1950s-1980s),交互是通过命令式接口进行的:用户必须精确知道系统的知识表示(如“断言”“规则”)和推理机制(如“正向链”“反向链”)。例如,与专家系统交互,用户需要输入符合特定语法的断言,系统基于规则库进行推导。这里的“提示”本质是结构化查询,容错性极低。错误通常源于用户不熟悉系统的内部表示。
在统计机器学习时代(1990s-2010s),交互主要通过预定义任务接口进行:用户选择任务类型(如“情感分析”“命名实体识别”),系统调用训练好的模型。模型是静态的,用户无法在推理时影响其行为。提示的概念几乎不存在,因为模型不具备根据输入动态调整输出的能力。
深度学习时代(2010s-2017),端到端模型开始主导,但训练与推理仍严格分离:模型在固定任务上训练,然后部署为预测API。输入需要经过与训练时相同的预处理(如分词、向量化),用户无法通过修改输入文本“引导”模型。
**Transformer与大语言模型时代(2018-