目录

每天用 AI 写代码,屏幕另一头的”大模型”到底是个什么东西?说出来很简单:它是一个接下一个词的程序。读前面的文字,算出接下来最可能是什么,接上去,再算下一个。就这么一件事,却能写代码、答问题、改 bug。这一篇用一行 Python 当例子,一步步讲清楚它是怎么做到的。

向 AI 提一个问题,你大概注意过:回答不是整段一下子出现的,而是一小段一小段往外冒,代码也是一行一行长出来的。看着像界面特意做的打字效果,其实大模型本来就是这么干活的:一次只写一小块,写完再写下一块。

它为什么要这样写?先看它每一步在做什么。

它每一步在做什么

拿一段写到一半的 Python 来看,光标停在 return 后面:

def add(a, b):
    return

接下来该写什么?会写代码的人几乎不用想,就是 a + b:函数叫 add,参数是 a 和 b,接 a + b 最顺。

大模型做的也是这件事。它把前面的文字全部读进去,给每一种可能的接法打个分:a + b 的分很高,a - b 低一些,None 更低。然后挑一个接上去。

大模型读入前文,给每个候选打出可能性

Anthropic 的官方术语表也是这么说的:Claude 底层的模型,训练时的任务就是根据前面的文字,预测下一个词。

一个词怎么变成一整段代码

可是只猜一个词,离一整段代码还差得远。大模型的办法是循环:把刚猜出来的词接到前文后面,再拿这段更长的前文去猜下一个。

接上 a,前文就变成了 return a,下一个最可能是 +;接上 +,再猜出 b。再往后,它判断这个函数已经写完了,就停下来。一整段代码、一整篇回答,都是这样一个词一个词接出来的。开头看到的”一小段一小段往外冒”,就是这个循环在一步步往前走。

每猜出一个,就接到前文后面,再猜下一个

说得严格一点,它每次接上的不一定是一个完整的词,可能是半个词,也可能是一个符号。这个单位英文叫 token,中文现在推荐叫”词元”。为了好读,本文统一叫”词”。

只会猜下一个词,凭什么能写代码

听到这里,你可能会想:这不就是手机输入法的联想吗?

区别在于要猜得多准。要在 return 后面猜出 a + b,模型得知道 add 是”加”的意思,还得懂 Python 的函数怎么写。代码再长一些,它还要记得前面定义过哪些变量、每个函数是干什么的。

大模型在训练时读过海量的文字和代码。为了把下一个词猜准,它只能把语法、常识、代码的写法这些规律一并学进去。美国乔治城大学的一个研究机构(CSET)在科普文章里也是这么解释的:预测下一个词这件事看着简单,却能让模型形成对语言的整体把握,这种把握还能用到很多别的任务上。

为了把下一个词猜准,模型从海量文字里学到了各种规律

还有一点更出人意料:它并不完全是走一步看一步。Anthropic 在 2025 年发表过一项研究,专门观察 Claude 内部是怎么”想”的,里面有两个发现。

第一个是写诗。研究者让它写两行押韵的英文诗,第一行是”He saw a carrot and had to grab it”。照”一次猜一个词”的说法,它应该写到第二行末尾才去找押韵的词。可研究者发现,第二行还没动笔,它已经想好用 rabbit 收尾,然后把整行朝着这个词写过去,最后写出的是”His hunger was like a starving rabbit”。

第二个是算加法。问它 36 加 59 等于几,它答 95。再问它是怎么算的,它会讲小学学的方法:个位相加,满十进一。可研究者看了它内部的计算过程,发现它其实同时走了两条路:一条估出答案的大概范围,另一条专门把个位算准。它自己并不知道自己是这么算的。

两个例子放在一起看:一次写一个词,只是它对外的工作方式;为了猜准,它在内部摸索出了一套自己的办法。这些办法没有人一行行写进去,是它在训练中自己学出来的,连做它的公司都要专门研究才看得清。

它为什么会听指令,像个助手

上面这种读海量文字、练习猜下一个词的训练,叫”预训练”。只做预训练得到的模型,很会接着往下写,却不太会回答问题、听从指令,Anthropic 的术语表里也明确这么写。

所以在这之后,还要再专门训练一轮,教它怎么当助手:听懂你的要求,好好回答,不该做的事会拒绝。我们平时用的 Claude 就是这样训练出来的。用术语表的原话说,Claude 不是一个”裸”的语言模型,它已经被训练成了一个有用的助手。

先学会接着写,再学会当助手

这一轮训练具体怎么做,内容不少,下一篇专门讲。

这对用 AI 写代码有什么用

知道它是在”接着往下写”,有两件事马上就能用上。

第一,你给它的所有东西,都是它的前文。你的问题、贴进去的代码、项目里的说明文件,它全部读进去,再接着往下写。前文越清楚,它越容易接对。同样一个需求,”帮我写个函数”和”写一个 Python 函数 add,接收两个整数,返回它们的和”,后一种留给它猜的地方少得多。

第二,它写出来的是”最可能接在这里的内容”,并没有去哪里查证过。大多数时候,最可能的就是对的;但有时它会接出一个看着像模像样、实际上并不存在的函数名或参数。所以它写的代码,先跑一遍、看一眼再用。

换成 Codex 或 DeepSeek 也一样吗

一样。Codex 背后是 OpenAI 的模型,DeepSeek 背后是深度求索训练的模型,它们都是大模型,干活的方式都是根据前文一个词一个词往下接。区别在于训练时读了什么、后来怎么被训练成助手,以及外面那层工具替它做了哪些事。上面那两条用法,换个工具照样适用。

小结

  • 大模型是一个接下一个词的程序:读前文,挑最可能的接上,再接着猜。
  • 为了猜准,它在训练中学会了语法、常识和写代码的规律,还会提前打算。
  • 你给它的一切都是前文,写得越清楚它接得越准;它写的代码要验证了再用。

下一篇:只会接着写的模型,是怎么一步步训练成能帮你写代码的助手的?


如果这篇让你对每天在用的 AI 多了解了一点,点个小红心,转给身边也在用 AI 写代码的朋友吧。想看后面几篇,关注一下公众号「码上驰骋」和视频号呗。