Skip to content

第 1 章 工程视角下的语言模型 ​

1.0 确定性失效之后 ​

开始这一章之前,先不忙着去翻 OpenAI 或者 Anthropic 那些写得密密麻麻的 API 文档,也不急着去抄网上的“神级提示词”。有一件事更值得先弄清楚,就是一个在传统软件工程里长大的工程师,第一次面对大语言模型(LLM)时,那种根深蒂固的观念开始动摇的感觉。

写过几年代码的人,受过的训练都强调同一件事,计算机是绝对确定的。同样的输入,永远得到同样的输出。

举个例子:print("Hello World") 这行代码,只要代码不变,哪怕跑一万次,屏幕上跳出来的也只能是 Hello World。输入是 A,经过逻辑 B,输出必然是 C。如果不是,那就是有 Bug。原因可能出在代码,可能出在编译器,极端情况下甚至可能是宇宙射线翻转了内存里的一个比特位。但归根结底,它是有原因的,是可以追踪、可以复现、也可以修复的。

这种确定性,正是工程师安全感的来源。程序里没有模棱两可,每个行为都有据可查。

然后,LLM 出现了。

不妨看一个最常见的开场。写一条 Prompt(提示词),让它“总结一下这段新闻”。第一次,它给出三个漂亮的要点,逻辑清晰,措辞优雅,效果好到让人开始盘算,周报是不是也能交给它,那些重复的文案工作是不是可以自动化了。

到了第二次演示,同样的 Prompt 原封不动再跑一遍,它却交出一篇八百字的小作文,开头多出一句莫名其妙的寒暄,结尾附赠两个没人要求的 Emoji 表情,甚至把新闻主角的名字拼错了。

同一份代码,两次运行,两种结果。这在传统软件里几乎等同于事故。同一份 Prompt,这次输出三个严谨的要点,下次输出一篇随意的长文;习惯用 assert 断言一切的工程师,忽然发现连下一次输出是什么都无法预知,面前是一个无法完全掌控的黑盒。

这就是提示工程(Prompt Engineering)所处的世界。

在这里,工程师面对的不再是那个听话的、逻辑严密的 CPU,而是一台概率机器。下达的指令,它不再逐字执行,只是拿来影响输出的概率分布。

这一章不谈怎么写漂亮的文案,也不谈花哨的技巧,先做一件更根本的事,把习惯了 if-else 的思维方式拆掉,换上一个新概念,也就是如何在不确定的混沌里,构建确定性的系统。

这就是工程视角。写 Prompt 不是写作文,而是做工程。工程的核心是控制变量、降低熵值,把不确定性限制在可接受的范围内。

1.1 模型不是在检索,是在预测下一个词 ​

很多初学者,甚至一些资深架构师,在刚接触 ChatGPT、Claude,或者国内的 DeepSeek、通义千问、豆包时,都会陷入同一个误区,以为模型是在“思考”之后给出了“答案”。

问它“法国的首都是哪里”,很容易以为它内部有一个类似数据库的东西,执行了一条 SELECT capital FROM countries WHERE name='France',然后回答“巴黎”;或者以为它靠背过的记忆回想出了答案。

事实并非如此。它既没有“思考”,也没有一个写着“法国→首都→巴黎”的数据库。它对“法国”的全部认知,只是海量的概率关联。“法国”和“巴黎”这两个词在人类的语料里总是挨得很近,仅此而已。

本质上,LLM 做的就是文字接龙。输入“今天天气真”这几个字时,模型并不是在查天气预报,它是在计算概率。

它算的是:“在人类所有的文本数据里,接在‘今天天气真’后面的字,是‘好’的概率是多少?是‘坏’的概率是多少?是‘热’的概率是多少?”

用数学语言来说,它在计算一个条件概率:P(w_t | w_<t),其中 w_t 是下一个词(Token),w_<t 是前面所有的词。

这就解释了它为什么会“胡说八道”。因为它不是在检索真理,它是在预测下一个最可能出现的词。

模型的训练数据覆盖了整个互联网,有历史书,有小说,也有贴吧和微博评论区的灌水帖。问它“秦始皇最喜欢吃什么”,它给不出史实依据,只能在神经网络里搜索“秦始皇”和“吃”这两个概念在语义空间里的关联。

如果它读过的很多穿越小说里都写着“秦始皇吃火锅”,那么在它的概率分布里,“火锅”这个词出现的概率就会显著升高。于是它会自信满满地输出:“秦始皇最爱吃麻辣火锅。”

这就是所谓的“幻觉”。但在模型的视角里,这不叫幻觉,这叫“高概率续写”。它只是忠实地输出了它认为最顺口的下一个词。

这种非确定性意味着,代码逻辑的地基变了。

以前写函数,那是铁律。只要 CPU 没烧,1+1 永远等于 2,什么时候跑结果都一样。现在写 Prompt,定义的却是一个随机分布,每调用一次,都是从这个分布里抽一次样,抽到什么,事前说不准。

自然会有人追问:“这不就是不可控吗?怎么进生产环境?用户每次刷新页面,看到的内容都不一样?这次说对了,下次说错了怎么办?”

这正是提示工程存在的意义。

提示工程的核心任务,不是让模型“更聪明”,而是收敛这个概率分布。

模型的输出空间极大。只说一句“总结一下”,输出可能是一段客观摘要,也可能是一首诗,还可能是大段编造,甚至带情绪的吐槽。

而 Prompt 里的每一条指令、每一项约束、每一个示例(Few-shot),都在收窄这个输出空间。

加上“请用 100 字以内”,切掉了长篇大论的可能;加上“语气要正式”,挡住了嬉皮笑脸的可能;加上“如果原文没有提到,请回答不知道”,就是要求模型在不知道的时候承认不知道,而不是硬编。

约束加得越多,输出空间收得越窄。当输出空间小到只能容纳一种可能的结果时,约束就把概率模型压成了一个确定性的函数。

这也解释了为什么有的 Prompt 只有一句话,有的却长得像法律文书。后者是在对抗熵增,在宽泛的概率分布里压出一条确定的结果。用自然语言这种模糊的工具去逼近数学上的精确解,这既是一门手艺,也是一项硬核的工程技术。

1.2 提示工程是概率世界的特征工程 ​

既然模型是概率分布,那提示工程到底在做什么?是 NLP(自然语言处理)吗?是模型训练吗?

做过传统机器学习(Machine Learning)的人,都见识过“特征工程”(Feature Engineering)的分量。那个时代,算法(逻辑回归、随机森林)往往是现成的,大家用的都一样,真正拉开差距的是数据处理,也就是把原始数据清洗、转换、提取特征,再喂给模型,模型才学得好。

在 LLM 时代,Prompt 就是新的特征工程。

因为模型已经预训练(Pre-trained)完毕,GPT-4 的参数(Weights)是固定的。OpenAI 为此花了上亿美元真金白银,2023 年 4 月有人问 Sam Altman“是不是一亿美元”,他的回答是“比这还多”。这些参数动不了(微调可以,但成本高、维护负担重),能动的只有输入空间。

大模型内部有一个“潜空间”(Latent Space)的概念,指模型内部一个高维的表示空间,训练中学到的知识、逻辑、情感和表达方式都以参数形式存在其中。

在这个空间里,内容不是乱放的,而是按语义聚类的。一部分参数对应唐诗宋词元曲,一部分对应 Python 代码和 StackOverflow 的问答,一部分对应互联网上的骂战语录,还有一部分对应严谨的法律条文和医学诊断报告。

写 Prompt,就是在决定激活这个空间的哪个区域。

如果写的是“嘿,哥们,帮我整段代码”,激活的就是口语和随意的区域,输出的结果可能是一段没注释、变量名乱写,甚至跑不通的代码。既然提问的语气这么随意,回答的语气自然也随意,这符合概率分布。

而换成“你是一位资深的 Python 架构师,请遵循 PEP8 规范编写一段高可用的代码”,激活的就是严谨、专业的区域,调用的知识对应教科书级别的高质量代码。写出的代码不仅能跑,还有详细的文档字符串。

所以,写 Prompt 远不止“会说话就行”,这是一种通过自然语言进行的编程。

既然是编程,就免不了调试。调试的对象不是变量,而是模型的注意力权重(Attention Weights),也就是决定模型生成每个词时更看重前文哪些内容的那组内部数值。

比如,多写一句“请一步步思考(Let's think step by step)”,底层并不是在“教”模型,而是在强行拉长推理链条,模型在生成最终答案之前,必须先生成中间步骤,相当于把更多的计算资源(Token)分配给了中间逻辑。先生成中间步骤这个动作本身,就改变了概率分布,让“正确答案”出现的概率显著提升。

这不就是性能调优吗?这不就是特征提取吗?

提示工程用的是自然语言探针,去试探黑盒模型的内部结构,寻找能触发最佳输出的措辞。有些措辞看起来相当奇怪。比如 USC 的研究者试过对模型说“如果你答对了,我给你 100 美元小费”,结果在他们测试的最小模型上,标注准确率真的有接近十个百分点的提升(Salinas & Morstatter, 2024)。这听起来像玄学。一种解释是,训练数据里涉及“金钱奖励”的上下文,往往关联着更高质量、更负责任的回答。注意,这只是猜想,机制层面并没有得到验证;而且同一项研究也发现,这类小花招的效果时灵时不灵,换个任务、换个模型可能就消失了。它真正的价值在于提醒人们,别把任何一句提示词当成万能药。

所以,提示工程不是玄学,而是统计学的应用,目标是寻找那个能最大化 P(Good Answer | Prompt) 的 Prompt。

1.3 它知道什么 vs 它能做什么 ​

这里是另一个认知重灾区。很多产品需求就长这样:“能不能让 ChatGPT 帮我查一下昨天公司食堂的菜谱?”“能不能让它帮我算一下这个复杂的微积分,保证 100% 对?”

回答这类问题之前,需要先区分两个概念,即世界知识(World Knowledge) 和 指令遵循(Instruction Following)。

模型在预训练阶段学到的东西,通常叫预训练知识。它读了整个互联网,知道拿破仑是谁,知道 Python 怎么写,知道量子力学的基本原理。但它有一个致命弱点,它是静态的,且有损的。

它是静态的,知识截止到训练结束的那一天。最早那版 GPT-4 的知识截止在 2021 年 9 月,后来 GPT-4 Turbo 把截止日推到了 2023 年 4 月。而到了 2026 年中,OpenAI 的 GPT-5 和 Anthropic 的 Claude 4.5 家族已经把各自的训练数据截止日推进到了 2024 年秋和 2025 年,国内的 DeepSeek、通义千问也在一代代把截止日往前推。

模型更新一代,也只是换上一批新的训练数据,新数据的内容永远停在采集那一刻,训练截止日之后发生的事情,它照样一无所知。它依然不知道某家公司昨天股价跌了多少,也不知道提问的人刚刚午饭吃了什么。这个根本限制不会消失,只会推迟。

它也是有损的,不是数据库。这一点怎么强调都不为过。

训练把海量文本压进了有限的参数里,这个压缩过程是有损的,细节会丢失。LLM 存下的是人类知识的有损压缩版本。

它记住的不是《红楼梦》的每一个标点符号,而是《红楼梦》的概率压缩版本。让它背诵《葬花吟》,它可能背得似是而非,中间夹杂几句自编的、听起来很像林黛玉风格的句子。因为它依据的是概率,不是精确存储的原文;它是在重构,不是在检索。

而工程中真正依赖的,是它的“指令遵循”能力,也就是听懂人话的能力。问“是什么”,它解释定义;让它翻译,它就做语言转换;要 JSON,它就输出花括号;说“不要废话”,它就闭嘴直接给结果。

最严重的工程事故,往往源于让模型用它的“弱项”去干活。

最典型的错误用法,是把 LLM 当搜索引擎或数据库用,比如问它:“告诉我 2024 年 1 月的最新股价。”

结果,它会一本正经地编出一个股价。训练数据里有无数种股价的格式,它知道股价大概长什么样(带小数点、有涨跌幅),唯独不知道真实的数据。这就是幻觉的典型来源。它不是在撒谎,它只是在生成一个格式正确、看起来最像股价的数字。

正确的用法,是把 LLM 当推理引擎用:“这是 2024 年 1 月的股价数据(我从数据库查出来喂给你的),请帮我分析波动趋势。”

这时候结果往往是好的,它不需要记忆数据,只需要运用逻辑推理能力(指令遵循),处理送到眼前的上下文。

有一条原则值得记住,LLM 的职责是处理信息,不是存储事实。

哪怕它预训练时见过的文本再多,工程上也只信任它的逻辑,不信任它的记忆。需要事实,就通过 RAG(检索增强生成)把事实送到它面前,并明确要求:“只根据我给你的信息回答,不要用你自己的脑补。”

换句话说,直接问它“上周发生了什么”问不出结果,把上周的会议记录放进上下文再问,它马上能分析得头头是道。

1.4 Copilot 与 Autopilot ​

设计 Prompt 系统时,必须先回答一个伦理与技术交织的问题,对模型的信任有多少?

答案决定了系统架构是 Copilot 模式还是 Autopilot 模式。这不只是产品形态的区别,更是 Prompt 编写难度的天壤之别。

先看 Copilot(副驾驶)模式,比如写代码时用的 GitHub Copilot,或者在 Notion 里让 AI 润色文章。

这种模式下,AI 只负责给建议,建议可能不靠谱,比如一行跑不通的代码,或者一句不通顺的文案。但最后敲回车确认的始终是人,扫一眼觉得不对,删掉就是。

因为有人类在环把关(Human-in-the-loop),这种场景的容错率极高。

Copilot 模式下的 Prompt 可以写得比较发散,比如“请给出三个不同的标题供我选择”,或者“请尝试用幽默的风格重写这段话”,都可以。就算写得不好笑,甚至有点冒犯,也不会造成实质性伤害,顶多让人翻个白眼。

这种模式下,Prompt 的目标是启发(Inspiration),而不是执行(Execution)。模型可以保留一定的“温度”(Temperature),甚至允许它稍微离谱一点,离谱的输出里有时藏着有价值的创意。

而 Autopilot(自动驾驶)模式 完全是另一回事。它是业务方的梦想,也是工程师的噩梦。

全自动的客服机器人、自动执行运维脚本的 Agent、金融领域的自动交易系统。这些场景里,AI 接到输入后直接执行动作(Action),中间没有人类确认。

这种模式把风险推到了最大。

客服机器人骂了客户一句,或者承诺了一个不存在的折扣,公关部就得连夜加班,公司可能面临法律诉讼;自动交易脚本多写一个零,或者把“买入”理解成了“卖出”,损失可能以秒计算;运维 Agent 误删一个数据库,事故等级直接拉满。

所以,Autopilot 模式对 Prompt 的要求是极度收敛的。

在这个模式下不能发散,不能“幽默”。格式限制要极其严苛:“必须输出 JSON,字段必须严格匹配 Schema”;防御性指令(Safety Rails)要成体系:“如果用户的问题涉及政治、暴力或竞争对手,请统一回复标准话术”。

还需要一套监控系统实时审查模型的输出,一旦置信度(Confidence Score)低于某个阈值,或者出现敏感词,立刻切断自动链路,转接人工。

容错率低的业务,别急着上 Autopilot。务实的路径是先做 Copilot,收集人类的修改数据(Feedback),等 Prompt 迭代到准确率超过 95% 甚至 99%,再考虑放手让它自己跑。

这和自动驾驶行业的路径一致,先做 L2 辅助驾驶(Copilot),人手不离方向盘;技术成熟后,再谈 L4/L5 全自动驾驶(Autopilot)。一上来就完全撒手不管,是会出事的。

1.5 幻觉、不可复现与上下文的三角制约 ​

写 Demo 总是愉快的。在 Playground 里调一调 Prompt,看着模型吐出完美的结果,很容易产生一种一切尽在掌握的错觉。

上线则是另一回事。Prompt 封装进 API,每天承接成千上万次真实用户的调用时,会撞上工程化的“不可能三角”。

首先是 幻觉(Hallucination)。它不是 Bug,而是 LLM 的特性。回到开篇那句话,它是概率预测。

当它不知道答案时,它不会像传统程序那样抛出 NullReferenceException,它会预测一个看起来最像答案的词。

问它:“林黛玉倒拔垂杨柳的故事体现了她什么性格?”

它可能分析得头头是道:“体现了林黛玉豪爽、力大无穷的一面,打破了传统女性柔弱的形象……”

为什么?因为“林黛玉”和“倒拔垂杨柳”这两个词放在一起,后面接一段文学分析文本的概率很高,它就在顺着话头往下编,宁可给出一段像样的分析,也不会承认这个前提不成立。

工程上,幻觉没有银弹,也不能指望模型自己停止编造,只能靠外部手段。用 RAG(检索增强) 给它真相,把《水浒传》和《红楼梦》的原文喂给它,它就有了不瞎编的依据;用 CoT(思维链) 让它慢下来,先复述一下故事梗概,它自己就会发现“倒拔垂杨柳的好像是鲁智深”;用 Self-Consistency(自洽性校验) 多问几次,三次回答不一样,就说明它在瞎蒙。

其次是 不可复现性(Non-determinism)。软件工程最怕不可复现的 Bug。

上线之后,总会遇到这样的追问:“这个 Prompt 昨天还是好的,今天怎么输出变了?昨天它还知道拒绝回答敏感问题,今天怎么就开始骂人了?”

原因可能千奇百怪。OpenAI 可能悄悄更新了别名指向的模型版本,造成模型漂移(Model Drift);Temperature 可能设得太高,随机性过大;甚至可能只是蝴蝶效应,GPU 上浮点运算的微小差异,在深层网络里逐层放大。

这给回归测试(Regression Testing)带来了巨大的困难,assert output == expected 这种断言不再适用,要么写复杂的模糊匹配逻辑,要么请另一个 LLM 来当裁判(LLM-as-a-Judge)。

对策通常是三板斧。先锁定模型版本,不用 gpt-4 这种不带日期的别名,因为 OpenAI 会悄悄把别名指向新的快照,行为就跟着漂移,要用 gpt-4-0613 这种带日期的固定版本;再把 Temperature 设为 0,这不能保证 100% 一致,但能好很多;最后,API 支持的话,一定设置 Seed 参数。

最后是 上下文窗口(Context Window)。早先大家觉得 4k token 就够用了,如今 20 万到 100 万都已经普及。但窗口变大,不等于可以挥霍。

Token 是要钱的。把整本书塞进一次调用,账单就要开始烫手了;如果应用本身免费,那几乎是在做慈善。

还有一个学界反复验证的现象,叫“迷失中间(Lost in the Middle)”。普林斯顿、UC Berkeley 与 Salesforce Research 联合团队的 Liu 等人在 2023 年做过一组实验(arXiv:2307.03172),把关键信息放在上下文的不同位置去考中等及以上能力的 LLM,结果曲线呈 U 形,信息在开头时表现最好,在结尾时也不错,可一旦埋在中间,命中率就明显下滑;在上下文挤爆(上下文腐化,Context Rot)时,这个 U 形还会变得更陡。换句话说,长上下文不是匀质的,开头的 System Prompt 和结尾的最新提问影响最大,模型最容易忽略中间塞的东西。

位置的影响就是这么直接。同样一条关键信息,放在开头或结尾,模型容易用上;埋在中间,模型就容易略过。

所以,工程上依然要精打细算,不把无关信息塞进 Prompt,学会剪枝,学会摘要,只把最关键的信息交给模型。这不仅是省钱,更是保输出质量。

1.6 什么时候不该用 Prompt ​

这一节可能是全章最有实操价值的一节。技术人员拿到新工具时,容易什么任务都想往上套;而成熟工程师的标志之一,是学会拒绝。

有些问题,用 Prompt 解决是下策。判断可以从三个问题展开。

第一问,这件事有标准答案吗?

比如“1+1 等于几”,或者“从这段话里提取身份证号”。

这类任务,不要用 LLM。

LLM 的算术能力并不可靠,1+1 多半没问题,三位数乘法就可能出错,因为数字在它眼里只是 Token,它在预测下一个 Token,不是在做数学运算;提取结构化数据,也不如正则表达式(Regex)稳定。

有且只有一个标准答案的问题,请交给计算器、Regex 和传统代码。用概率机器去解确定性问题,既不可靠,也不划算。

但如果任务是“写一首诗”“总结文章”“情感分析”,这些没有标准答案、依赖语义理解的任务,才是 LLM 的主场。

第二问,容错率有多高?

控制核电站阀门、做医疗诊断,这类人命关天的场景,慎用 LLM,或者必须有人类在环(Human-in-the-loop)审核。

推荐电影、生成周报、做个游戏 NPC,错了也无伤大雅,可以大胆用。

第三问,逻辑有多复杂?

有人写过这样的 Prompt,里面塞了 100 多个 if-else,逻辑分支超过 10 层。“如果用户是 VIP,且今天是周五,且购买金额大于 100,且……则……”

这时候就该停下来,别再往 Prompt 里堆规则,也别指望模型能全记住。

Prompt 不适合承载复杂而精确的逻辑流。规则一多,模型就顾了规则 A 忘了规则 B。

这种逻辑应该用代码来写。

用一段 Python 处理 if-else,只把其中最需要“理解”的小环节(比如“判断用户的情绪是高兴还是生气”)交给 LLM,这就是“流程编排(Chain/Flow)”。

另外,当一个 Prompt 超过 2000 tokens 且全是规则说明时,模型大概率处理不好,这是一条常见的经验法则。

此时需要的是拆解,把一个大任务拆成三个小任务串联起来,先用 Prompt A 提取关键信息,再用 Python 代码做逻辑判断,最后用 Prompt B 生成回复。

最好的 Prompt 系统,往往是 Python 代码和 Prompt 混合的双引擎系统,代码负责流程控制和精确逻辑,Prompt 负责语义理解和内容生成。

1.7 模态差异概览 ​

这本书主要讲文本 Prompt,但必须先交代一个大背景。截至 2024 年中,主流模型已经都是多模态(Multimodality)的了,比如 GPT-4o、Gemini 1.5 Pro、Claude 3.5 Sonnet。到 2026 年中写这段补注的时候,多模态早已不再是“新一代旗舰的加分项”,而是几乎所有主流闭源模型的默认形态。

OpenAI 的 GPT-5 家族、Anthropic 的 Claude 4.5 家族、Google 的 Gemini 2.5 系列,都能把图像和文本一起放进上下文,Gemini 系列还直接接受音频和视频输入。国内的通义千问 Qwen 和字节跳动的豆包,也都推出了成熟的多模态模型。模型对“非文字”信息的处理能力,已经从能用变成好用。这个变化意味着,写 Prompt 再也不能只盯着文本通道。

很多工程师习惯了处理文本,觉得图片和视频无非是把像素转成 Base64 扔进去。但事情没那么简单。文本思维和视觉思维,是两种完全不同的逻辑体系。

文本是线性的。读一句话,是从左到右一个字一个字地读,时间在文本中单向流动。

所以,文本 Prompt 非常强调顺序,比如“先做 A,再做 B,最后做 C”,或者“根据上文,回答下文”。这种逻辑模型理解得很好,因为它的训练过程(Next Token Prediction)本身就是线性的,它天生是处理序列的高手。

但图片不一样。图片是空间的,是并行的。

看一张照片,没有人会从左上角第一个像素开始,一行一行扫描到右下角。一眼看到的是整体,先认出“一只猫在草地上”,然后才注意到“猫是白色的”“草地有花”。

这就导致,用线性的文本逻辑去指挥模型处理图片,效果往往不好。

比如给模型一张复杂的网页截图,让它“把第三个按钮变成红色”,它可能会犯难。因为“第三个”是一个序列概念,而在二维平面上,哪个是第三个?是从上往下数,还是从左往右数?

写视觉 Prompt,需要学会用空间坐标和视觉特征来沟通。

不要说“修改那个错误的按钮”,模型不知道哪个是错误的。要说:“定位到坐标 (200, 300) 附近的、红色的、写着‘Cancel’字样的矩形区域,描述它的边框样式。”

这需要把指令从纯文字扩展到画面本身,除了描述任务,还要说清位置、颜色、形状这些视觉信息。

视频 Prompt 又高一个维度。视频是图片序列加上时间轴,还要再叠一路音频。

在这里,不仅要处理空间逻辑(画面里有什么),还要处理时间逻辑(发生了什么变化)。

比如想让模型“剪辑出所有猫咪跳跃的片段”,只看每一帧(图片思维),它能识别出“猫”,也能识别出“跳跃的姿势”,但可能分不清猫是刚起跳还是快落地;只听声音(音频思维),它能听到“喵”的一声,却不知道猫在做什么。

视频 Prompt 必须描述动态的变化和因果关系。

“在第 5 秒到第 10 秒之间,主角的情绪从‘平静’变成了‘愤怒’,请定位这个情绪转折的确切帧。”或者“分析视频中物体的运动轨迹,判断这辆车是在‘加速’还是‘减速’。”

这对叙事能力提出了更高要求,写 Prompt 时要描述场景(Scene)、动作(Action)、情绪(Emotion)和对白(Dialogue)。

有意思的是,多模态模型还具备一种“通感”能力。

不妨把一张图喂给它,问:“如果这张图是一首音乐,它听起来应该是什么风格?”它可能回答:“这张图色调阴郁,构图压抑,听起来应该像肖邦的夜曲,或者是 Radiohead 的摇滚。”

这种能力在工程上相当有用。

拿电商推荐来说,过去只能根据用户的搜索关键词(文本)推荐,现在可以让模型“看”用户喜欢的衣服图片,提取出“复古、波西米亚风、暖色调”这些视觉特征,再去匹配数据库里的其他商品。

甚至可以让模型“听”一段用户上传的视频背景音,判断用户是在嘈杂的地铁里还是在安静的卧室里,从而动态调整 App 的交互界面(比如在地铁里自动开启字幕)。

未来的 Prompt 工程师,可能一半是程序员,一半是艺术家,不仅会写指令,还要会讲故事、会描述画面、会调度声音和光影;要理解色彩心理学,理解构图法则,理解蒙太奇剪辑。

听起来门槛不低,但这也正是这个行当有意思的地方,从纯粹的代码逻辑中走出来,用人类最本能的感官与机器交流。


本章总结 ​

第 1 章讲完了。这一章走得慢,讲的都是基础认知。

回顾一下,这一章没有讲任何具体技巧,没有教“你是一个资深专家”这类句式怎么写,那些是“术”;这一章讲的是“道”。

最要紧的只有一条,LLM 是概率机器,不是逻辑机器。提示工程本质上是在收敛概率,在混沌里找秩序。想通了这一点,Prompt 之于 LLM 时代,就像特征工程之于机器学习时代,调试的不是变量,而是模型的注意力权重;这是一场用自然语言进行的编程。

想通了本质,雷区自然也就看得见。不把 LLM 当数据库使唤,不在低容错的场景里一上来就搞全自动,也不指望它干精确计算的活,那些活有更合适的工具。剩下的幻觉和不可复现?接受它们的存在,然后用拆解、校验、混合架构这些工程手段,把它们压在可接受的范围内。

最后把视野拉开一点,这个行当早晚要越过文字。文本的线性逻辑只是起点,后面还有图像的空间逻辑、视频的时空逻辑。

参考资料 ​

  1. Knight, W. (2023). OpenAI's CEO Says the Age of Giant AI Models Is Already Over. Wired. https://www.wired.com/story/openai-ceo-sam-altman-the-age-of-giant-ai-models-is-already-over/ (Altman 在 MIT 活动上确认 GPT-4 训练成本超过一亿美元)
  2. Salinas, A. & Morstatter, F. (2024). The Butterfly Effect of Altering Prompts: How Small Changes and Jailbreaks Affect Large Language Model Performance. Findings of ACL 2024. https://aclanthology.org/2024.findings-acl.275/ (亦见 arXiv:2401.03729,小费实验的出处)
  3. OpenAI (2023). GPT-4 Technical Report. arXiv:2303.08774. https://arxiv.org/abs/2303.08774 (最早那版 GPT-4 的训练数据截止在 2021 年 9 月)
  4. OpenAI (2023). New models and developer products announced at DevDay. https://openai.com/index/new-models-and-developer-products-announced-at-devday/ (GPT-4 Turbo 的知识截止推到 2023 年 4 月)
  5. OpenAI. GPT-5 模型页(知识截止 2024 年 9 月 30 日). https://platform.openai.com/docs/models/gpt-5
  6. Anthropic. Transparency Hub(Claude 4.5 家族训练数据截止日). https://www.anthropic.com/transparency
  7. Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., & Liang, P. (2023). Lost in the Middle: How Language Models Use Long Contexts. TACL 2023, arXiv:2307.03172. https://arxiv.org/abs/2307.03172
  8. OpenAI. GPT-4 模型页(快照与别名机制,对应 gpt-4-0613 一类带日期版本). https://platform.openai.com/docs/models/gpt-4
  9. OpenAI (2024). Hello GPT-4o. https://openai.com/index/hello-gpt-4o/
  10. Google (2024). Gemini 1.5: Google's next-generation model. https://blog.google/technology/ai/google-gemini-next-generation-model-february-2024/
  11. Anthropic (2024). Introducing Claude 3.5 Sonnet. https://www.anthropic.com/news/claude-3-5-sonnet
  12. Anthropic. Models overview(当前 Claude 模型支持文本与图像输入). https://platform.claude.com/docs/en/about-claude/models/overview
  13. OpenAI. Images and vision(GPT-5 系列的图像输入与计费). https://platform.openai.com/docs/guides/images-vision
  14. Google. Gemini API Models(Gemini 2.5 系列原生多模态输入). https://ai.google.dev/gemini-api/docs/models