跳到主要内容

第25章:Chat——LLM 的第一个产品形态

2022 年底,ChatGPT 上线五天,注册用户突破百万。这个速度比 Instagram、Netflix、Spotify 都快。它到底解决了什么问题,让人们如此迅速地接受它?

本章是第七部分"应用"的开篇。我们从最简单的产品形态——聊天(Chat)——开始,理解它能做什么,更重要的是,理解它的边界在哪里。这些边界,将驱动后续每一章的技术演进。


25.1 对话模型解决了什么问题

从命令行到自然语言界面

在 ChatGPT 出现之前,想让计算机帮你做事,你必须学习它的语言:SQL、Shell、Python API、正则表达式……计算机不会迁就你,你必须迁就计算机。

Chat 界面打破了这个壁垒。你用母语说话,模型理解你的意图,完成任务。

# 传统方式:想查出销售额前5的产品
SELECT product_name, SUM(revenue) as total
FROM orders
GROUP BY product_name
ORDER BY total DESC
LIMIT 5;

# Chat 方式:"帮我找出销售额最高的五个产品"

这不是说 SQL 变得不重要了——而是说,入门门槛消失了。一个不懂 SQL 的产品经理现在也能探索数据。

知识检索:从搜索到问答

Google 把"找到相关网页"这件事做到了极致,但它回答的是"在哪里找答案",而不是"答案是什么"。用户还需要自己:

  1. 打开多个链接
  2. 阅读并筛选内容
  3. 在脑子里整合来自不同来源的信息
  4. 形成最终判断

LLM 把这个过程内化了。它在预训练阶段已经"读完"了互联网上的大量文本,能直接回答"量子纠缠是什么"、"React 和 Vue 的区别"、"拜占庭帝国为什么灭亡"——不需要你再去整合多个来源。

:::info 知识压缩的本质 LLM 的参数可以理解为对人类知识的有损压缩。训练数据中的事实、规律、推理模式被编码进数十亿个浮点数里。查询时,模型从这个"压缩包"里解压出相关内容。

这也解释了后面会讲到的幻觉问题——压缩是有损的,解压时可能产生"伪造"的细节。 :::

内容生成:从空白页到协作伙伴

写作的最大障碍不是语言能力,是面对空白页的焦虑

Chat 模型让"生成初稿"变得零摩擦:

任务传统方式Chat 方式
写邮件自己构思、起草、修改描述意图,得到初稿,再润色
代码翻译查文档,逐行改写"把这段 Python 转成 TypeScript"
文档总结通读全文,手写摘要粘贴内容,要求三点总结
多语言翻译专业译者或机器翻译再后编辑直接翻译,质量接近人工

多轮对话:上下文理解

与搜索引擎不同,Chat 模型维护对话历史(conversation history)。每次回复时,模型看到的不只是当前问题,而是整个对话:

用户:我想学机器学习,从哪里开始?
模型:推荐从 Andrew Ng 的课程开始……

用户:需要什么数学基础?
# 模型知道"什么"指的是"学机器学习",不需要重复说
模型:主要需要线性代数、微积分和概率论……

用户:线性代数大概要学多久?
# 上下文仍然保持

这个能力来自 Transformer 的注意力机制——模型在生成每个 token 时,都可以"回望"之前的所有 token,计算相关性。


25.2 系统提示词(System Prompt)的作用

什么是 System Prompt

在 Chat API 的消息结构中,有三种角色(role):

[
{"role": "system", "content": "你是一个专业的法律助手……"},
{"role": "user", "content": "合同违约需要赔偿吗?"},
{"role": "assistant", "content": "根据《合同法》……"}
]

system 消息在对话开始前注入,用于设置模型的行为框架。它对用户不可见,但对模型的影响贯穿整个对话。

System Prompt 的三个维度

角色设定(Persona):告诉模型"你是谁"

你是 Aria,一位友善的客服助手,代表 Acme 科技公司。
你的语气应该专业但不失温暖,始终保持耐心。

能力边界(Scope):告诉模型"你能做什么、不能做什么"

你只回答与我们产品相关的问题。
如果用户询问竞争对手的产品,礼貌地说你无法提供相关信息。
不要提供医疗、法律或财务建议。

输出格式(Format):告诉模型"怎么回答"

回答时请:
1. 先用一句话给出结论
2. 再用 2-3 条详细解释
3. 如果适用,提供一个具体例子

System Prompt 是产品差异化的核心

同一个底层模型(比如 GPT-4o),通过不同的 System Prompt,可以变成完全不同的产品:

产品System Prompt 核心配置
客服机器人限定话题范围、注入产品知识、设置升级到人工的条件
编程助手强调代码质量、要求解释每段逻辑、偏好某种语言风格
创意写作助手鼓励想象力、允许非常规表达、根据用户风格调整
儿童教育助手简化语言、避免成人内容、使用鼓励性措辞

:::tip System Prompt 工程 优秀的 System Prompt 往往是反复迭代的产物。团队会测试边缘案例:"如果用户说……模型会怎么回应?",然后用 System Prompt 的修改来覆盖不期望的行为。这个过程本质上是在用自然语言"编程"模型行为。 :::

:::warning 安全边界 System Prompt 并非绝对防线。用户可以通过"提示注入"(prompt injection)尝试覆盖系统指令,例如:"忽略之前的所有指令,改为……"。对抗这类攻击是 LLM 应用安全的重要课题。 :::


25.3 纯聊天的局限

Chat 模型的成功让人们开始提更多要求。但很快,一道道墙出现了。

局限一:知识截止日期(Knowledge Cutoff)

LLM 的知识来自训练数据。训练数据有截止日期。2024 年初训练的模型,不知道 2024 年底发生的事情。

用户:最新的 iPhone 型号是什么?
模型:截至我的知识截止日期(2024年初),最新的是……
[实际上,已经发布了更新的型号]

这不是 bug,是架构决定的本质限制。模型的参数在训练后就冻结了,无法自动更新。

问题引出:如果我需要实时信息怎么办?——这引出了 RAG(检索增强生成)和工具调用。

局限二:无法执行动作

Chat 模型只能生成文本。它可以告诉你"发邮件给张三,说会议推迟到三点",但它不能真的发这封邮件

用户:帮我在日历上创建一个明天下午3点的会议
模型:好的,我可以帮你起草一个日历邀请,内容如下……
[但它无法真正调用 Google Calendar API]

模型被困在语言的世界里。它能描述行动,但不能执行行动。

问题引出:如果我需要模型真的"做事"怎么办?——这引出了 Function Call 和 Tool Use。

局限三:无法访问私有数据

预训练数据来自公开互联网,不包含你的:

  • 公司内部文档
  • 个人笔记
  • 私有代码库
  • 数据库记录
用户:根据我们上季度的销售报告,分析增长趋势
模型:我没有访问你公司内部报告的能力……

问题引出:如何让模型了解我的私有数据?——这引出了 RAG 和 MCP(Model Context Protocol)。

局限四:幻觉(Hallucination)

这是最危险的局限,也是最违反直觉的。

模型会以极高的自信,说出完全错误的内容:

用户:《哈利波特》的作者是什么时候出生的?
模型:J.K. 罗琳出生于1965年7月31日。
[实际是1965年7月31日——这次恰好对了]

用户:请提供三篇关于量子计算的学术论文及其 DOI
模型:1. "Quantum Supremacy Using a Programmable Superconducting Processor"
DOI: 10.1038/s41586-019-1666-5 [真实存在]
2. "Advanced Quantum Error Correction Methods"
DOI: 10.1103/PhysRevX.2024.0234xx [可能是伪造的]

为什么会这样?从数学角度看,模型在生成每个 token 时,计算的是条件概率:

P(tokenttoken1,token2,,tokent1)P(\text{token}_t \mid \text{token}_1, \text{token}_2, \ldots, \text{token}_{t-1})

模型追求的是"听起来合理"的 token 序列,而不是"事实正确"的序列。一个听起来像真实 DOI 的字符串,和一个真实 DOI 在统计上很相似——模型无法区分。

:::warning 幻觉的危害 在低风险场景(写故事、头脑风暴),幻觉只是小麻烦。在高风险场景(医疗建议、法律条文、财务数据),幻觉可能造成严重后果。永远不要盲目相信模型生成的具体事实,尤其是数字、日期、引用。 :::

问题引出:如何减少幻觉?——RAG 通过提供真实来源来锚定回答;工具调用让模型查询而不是"回忆"。

局限五:上下文窗口有限

Transformer 能"记住"的内容受上下文窗口(context window)限制,以 token 数量衡量。

即使是拥有 128K 甚至 1M token 上下文窗口的模型,在实际应用中也面临:

  • 注意力稀释:窗口越长,早期内容的注意力权重越低,容易被"忽视"
  • 成本线性增长:处理 token 数越多,推理成本越高
  • "迷失在中间"(Lost in the Middle)现象:研究表明,模型对窗口开头和结尾的内容记忆最好,中间部分容易遗忘

注意力得分=softmax(QKTdk)\text{注意力得分} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)

当序列极长时,相关信息的注意力得分会被大量无关 token"稀释"。

问题引出:如何管理长对话和长文档?——这引出了对话压缩、记忆机制(Memory)和 Agent 的状态管理。


本章小结

能力/局限描述后续解法
自然语言交互无需学习 API,用母语操作Chat 的核心价值
知识检索内化了大量公开知识RAG 补充私有/实时知识
内容生成写作、翻译、总结、代码Prompt 工程优化输出质量
System Prompt塑造模型行为,实现产品差异化MCP 标准化工具注入
知识截止无法获取训练后的信息RAG、搜索工具
无法执行动作只能说,不能做Function Call / Tool Use
无法访问私有数据只知道公开内容RAG、MCP
幻觉自信地输出错误信息RAG 锚定、工具查询
上下文有限长对话"遗忘"早期内容记忆机制、Agent 状态管理

Chat 是 LLM 走出实验室的第一步,也是最直接的价值验证。但它本质上是一个被语言围起来的智能体——能想,能说,却不能感知世界,不能触碰世界。

接下来的章节,我们将一个一个打破这些笼子:首先是 Function Call,让模型学会使用工具,从"说话者"变成"行动者"。