编程与 AI12 分钟阅读更新于 2026-07-31

语言模型为什么能生成文本:从下一个 Token 到完整回答

解释语言模型为什么能续写文本、为什么会有不同答案,以及上下文、temperature 和消息格式怎样影响生成结果。

相关工具

生成文本不是“想一句话”,而是一步步接下去

很多人看大语言模型写文章,会觉得它像是在脑子里先想好一整段,再一口气说出来。实际更接近的过程是:模型先读入已有上下文,判断下一个 token 可能是什么,选出一个,再把这个 token 接到上下文后面,继续预测下一个。这样重复很多次,我们看到的就是一段完整回答。

LLM 全教程总结里把用户输入称为 Prompt,把模型返回的内容称为 Completion。这个叫法很准确:用户给出一段提示,模型完成后续文本。它能总结、翻译、改写、写邮件,并不是因为每类任务都有一个单独按钮,而是因为这些任务都可以被表达成“在某个上下文后生成合适文本”。

比如你写“请把下面这段话总结成三条要点”,后面再放一段材料。模型不会像搜索引擎那样去网页里找答案,而是根据这段指令和材料,生成最符合任务格式的后文。它每一步都只生成一点点,但因为前面的 token 会继续进入上下文,后面的句子就能沿着前面的意思往下走。

大语言模型根据已有上下文预测候选 Token、概率排序并选择生成的流程图
下一个 Token 预测是生成的基本动作

模型根据已有上下文给候选 token 排概率,再选择其中一个接到文本后面,并不断重复。

概率不是随便猜,而是从训练中学来的

说模型在预测下一个 token,容易让人误会成它只是在随机猜。它当然不是乱猜。预训练阶段会让模型接触大量文本,反复学习“什么样的上下文后面更可能出现什么内容”。如果前文是天气、心情、散步,后面出现公园、阳光、微风的概率就可能更高;如果前文是代码函数、参数、返回值,后面就更可能出现代码结构和解释。

大语言模型基础与实践学习笔记把 Tokenization、Embedding、Transformer 架构放在开头讲,说明模型并不是直接拿文字做魔法。文本先被切成 token,再变成向量表示,进入模型层层计算。Transformer 里的注意力机制会帮助模型在上下文中寻找相关信息:当前要生成的位置,应该关注前文哪些词、哪些句子、哪些格式。

这样看,文本生成其实是语言统计规律、语义表示和上下文计算共同作用的结果。它不是简单复制训练数据,也不是纯粹凭空想象。模型学到的是大量文本背后的模式:问题后面常跟回答,标题后面常跟正文,步骤说明常按顺序展开,代码注释后面常解释意图。Prompt 写得清楚,就是在把模型引到更合适的模式上。

为什么同一个问题会有不同答案

如果模型只是每次选概率最高的 token,它的输出会比较稳定,但也可能显得死板。实际使用中,模型常常会根据参数在稳定和多样之间取舍。LLM 全教程总结里提到 temperature 参数:它控制模型输出的随机程度。temperature 越低,模型越倾向于选择高概率结果;temperature 越高,低概率候选也更容易被选中,回答就更发散。

这解释了一个常见现象:同一个问题,你让模型回答两次,内容可能不完全一样。尤其是写作、标题、创意、方案发散这类任务,高一点的随机性会带来更多表达变化;而事实问答、格式提取、代码修复、数据转换这类任务,通常更适合低温度,让输出稳定一点。

但 temperature 不能让错误变正确。它只是在候选输出之间调整选择方式。资料不够、问题含糊、上下文混乱时,把温度调低也只是更稳定地输出一个不一定可靠的答案。重要任务要先保证材料和指令清楚,再谈参数。

低温度、中等温度和高温度对大语言模型输出概率分布和结果发散程度的影响图
temperature 影响输出的稳定和发散

低温度更适合稳定任务,高温度更适合创意发散;参数改变的是选择方式,不是事实依据。

上下文决定模型这次能接着什么写

模型生成文本时依赖上下文。这里的上下文不只是一句问题,还包括系统要求、用户提供的材料、前几轮对话、模型已经生成的内容,以及输出长度限制。LLM 全教程总结在聊天机器人章节里讲到,聊天模型会把一系列消息作为输入,然后返回模型生成的消息。也就是说,对话不是每次孤立发生的,前面的消息会影响下一次回答。

系统消息常用来设定助手的行为,比如回答要简洁、只用中文、不要编造。用户消息是当前任务,助手回复会成为后续对话的一部分。你追问“那它和 BERT 有什么区别”,模型之所以知道“它”指的是前面的大语言模型,是因为前文还在上下文里。

上下文也有长度限制。超过窗口的内容,系统可能放不进去,或者需要压缩、检索、截断。用户以为“我刚才发过资料,你应该记得”,但如果那段资料已经不在当前上下文里,模型就不能稳定引用。做长文总结、资料 问答、知识库问答时,必须认真处理材料切分和检索,不然模型只能根据看见的片段生成。

系统消息、用户消息、助手回复进入上下文窗口并影响下一次回答的示意图
聊天消息会进入上下文窗口

系统消息、用户消息和助手回复共同组成当前上下文,影响模型下一次生成的内容。

指令让生成方向变得可控

同样是生成文本,模型可以写成故事、表格、代码、摘要,也可以写成客服回复。差别来自上下文里的任务说明。LLM 全教程总结的提示工程章节反复强调清晰具体的 Prompt,因为 Prompt 会改变模型接下来应该走的文本路径。

比如“解释一下大语言模型”会得到一段普通说明;“用面向高中生的语言,分三段解释大语言模型,每段不超过 100 字,不要使用公式”会得到更贴近新手的版本;“把下面材料提取成 JSON,字段包括概念、定义、例子、风险”又会把生成方向推向结构化输出。

这不是因为模型突然换了能力,而是你把任务、读者、格式和边界写进了上下文。模型仍然在生成下一个 token,但它参考的模式变了:不是随意聊天,而是按指定格式完成任务。Prompt 工程的价值就在这里,它不神秘,本质是减少模型需要猜的部分。

生成能力强,不代表每一句都有依据

语言模型能生成通顺文本,也正因为这样,它可能把没有依据的内容写得很像真的。生成机制会鼓励模型继续往下写,而不是自动停下来查证。资料里提到,主流模型主要依赖通用训练数据,无法直接使用用户私有数据或实时资料。没有把资料放进上下文,它就不应该被当成知道那份资料。

所以,判断模型回答时要分清两件事:它是不是会说,和它是不是有依据。写一封邮件、改一段文案、总结一份你已经给它的材料,模型通常很有用;让它判断最新政策、引用没给过的论文、解释公司内部规则,就必须补资料或接知识库。

一个实用原则是:语言工作可以先让模型起草,事实工作必须让资料说话。模型负责组织表达,资料负责支撑结论。只要这个分工不乱,生成文本的能力就能被用在合适的位置。

可以这样向别人解释文本生成

如果要用几句话向新手解释语言模型为什么能生成文本,可以这样说:它先把输入切成 token,把这些 token 变成模型能计算的表示;然后根据上下文判断下一个 token 的概率;选出一个 token 后,把它接回上下文,再继续预测。重复这个过程,短句就变成段落,段落就变成完整回答。

再补一句边界:模型不是每次都查资料,也不是天然知道最新信息。它生成的是当前上下文下最合适的文本,而不是保证真实的事实。上下文越清楚、材料越可靠、格式越明确,生成结果越容易被使用;上下文越含糊,模型越容易按默认模式补。

这样理解之后,很多看似神奇的现象就能解释了。为什么提示词越清楚越好?因为上下文给了方向。为什么同一问题有不同答案?因为候选 token 的选择有随机性。为什么它会胡编?因为生成机制会继续写,而资料不足时它未必主动停下。掌握这些基本点,比背一堆名词更有用。

常见问题

语言模型生成文本是不是只是在复制训练数据?

不是简单复制。它在训练中学习语言和任务模式,生成时根据当前上下文预测后续 token。但如果训练数据或上下文里有相似内容,输出也可能呈现相近表达。

temperature 调高是不是回答会更聪明?

不是。temperature 主要影响输出随机性。高温度更发散,低温度更稳定;它不能弥补资料不足或事实错误。

为什么多轮对话里模型能理解“它”指什么?

因为前面的系统消息、用户消息和助手回复会进入当前上下文。只要相关概念还在上下文窗口内,模型就能利用它来生成下一次回答。