2025 年《Science》上的一项研究,让不少人第一次真切感受到“AI 造生命”不再是科幻标题:研究团队利用 AI 设计并生成了完整的噬菌体基因组,更关键的是,把这个基因组合成出来、送进宿主菌之后,它真的“活”了——能复制、能感染、还能抑制细菌生长。
比起“AI 又能写文章了”这类新闻,这件事的分量完全不同。它意味着 AI 在蛋白质和基因组层面的“设计能力”第一次走完了从数字到生命的完整闭环。不过,如果只看新闻标题,很容易把这件事误解成“AI 一拍脑袋写出了新的 DNA,然后细菌就死掉了”。真实的逻辑比这更严谨,也更值得技术人学习。
本文会拆解三个问题:
- 这项研究的技术原理到底是什么?
- 为什么说“蛋白质语言模型”是这场突破的关键?
- 作为开发者,我们可以怎么亲手模拟这套“AI 给蛋白质打分”的工作流,而不仅仅停留在看新闻。
我希望读完这篇文章后,你能理解 AI 设计基因组背后的工程范式,也能自己跑一个最小的蛋白质语言模型打分示例,下一次再看到“AI 又造出了 XX”的新闻时,能一眼看出它到底突破在哪一步。
1. 这则新闻到底在说什么
先做一个关键澄清:这则新闻并不长,但它包含了几个信息密度极高的词——“完整噬菌体基因组”“可存活”“能抑菌”。这三个词单独看都不复杂,组合在一起才是真正的突破点。
什么是噬菌体?简单说,噬菌体是一类专门感染细菌的病毒,它本身没有独立的代谢系统,必须借助宿主菌的机制来完成复制。我们日常听到的“噬菌体疗法”,就是利用这类病毒去裂解特定的耐药细菌,所以它在医疗、食品、农业领域都有很大想象空间。
为什么选择噬菌体而不是更复杂的生物?因为噬菌体基因组足够小。许多噬菌体的基因组只有几十千碱基(kb),和人类基因组 30 亿碱基比起来,复杂度差了若干个数量级。但“小”不代表“容易设计”。噬菌体基因组是一个高度压缩的“生命程序”,一个基因可能承担多个功能,一段序列可能既是编码区又包含调控信息,基因之间还存在复杂的表达时序。
传统的基因组工程做法,主要是定向突变或者随机诱变。比如让噬菌体发生随机变异,然后筛选出杀伤力更强的突变体。这种方式的问题是:效率和不确定性都很大。真正高维的“设计”一直很难做,因为你不能靠穷举所有的 DNA 序列去挑出一个能组装的基因组。
这项研究的核心突破,就是把“基因组设计”变成了“蛋白质序列空间上的搜索问题”。AI 不再是在碱基层面猜序列,而是先理解“什么样的蛋白质序列是合理的”,再基于这个理解去大规模改造现有噬菌体的蛋白编码区。对于改造后的基因组,通过 DNA 合成、组装、转入宿主菌,最终证明了 AI 设计出的基因组具有完整生物学功能。
这里有一句很重要的判断:这项研究真正的价值,不是“从零写出一段基因组序列”,而是“用模型把功能性约束注入到了序列生成过程中”。AI 不是凭空创造生命,而是在模拟生命的语法规则。
2. 基因组设计为什么这么难
要理解这项研究为什么厉害,必须先理解基因组设计到底难在哪里。
DNA 序列本身是四种碱基 A、T、C、G 组成的字符串。但从 DNA 到生命功能,中间要经过两个关键环节:
- 转录:DNA 转录成 mRNA。
- 翻译:mRNA 按三个碱基一组(密码子)翻译成蛋白质。
也就是说,DNA 序列最终的执行者是蛋白质。一个病毒能不能存活,取决于它编码的蛋白质能不能正确折叠、能不能和宿主相互作用、能不能完成复制和组装。
难点在于,DNA 序列和蛋白质功能之间不是简单的线性映射。
首先是密码子简并性。一个氨基酸可以由多个不同的密码子编码。比如亮氨酸有 6 种密码子,这就意味着同一条蛋白质序列,可以对应大量不同的 DNA 序列。如果你在 DNA 层面换了一个密码子,蛋白质序列不一定变,但基因表达效率、RNA 二级结构、转录调控都可能发生变化。
其次是蛋白质功能的约束。即使 DNA 序列改变后翻译出的氨基酸序列也变了,这个变异是否破坏蛋白质稳定性和功能,更是一个高维问题。氨基酸之间不是孤立存在的,一个位点的改变可能影响远处的结构,也可能影响与其他蛋白的相互作用。
第三,噬菌体基因组不是“蛋白编码区”的简单堆叠。它还有复制起点、包装信号、启动子、终止子、RNA 结构等非编码功能元件。如果只是盲目替换碱基,哪怕只是少数几个位点出现偏差,都可能让整个基因组失去活性。
过去的设计思路是什么?两种主流路径:
- 随机诱变:用化学物质或紫外照射诱发序列变异,再筛选活性更好的噬菌体。问题是随机突变的“搜索半径”受限,很多功能改进靠运气。
- 理性设计:基于结构生物学和分子动力学模拟,对特定蛋白做点突变。问题是计算成本高,且体外预测和体内实际情况常常有偏差。
这两条路径都有一个共同瓶颈:它们很难做“全局大规模设计”。你可能可以改造一个关键氨基酸,但很难同时改动成百上千个位点,还保证整个系统仍然能工作。
这项研究之所以突破,正是因为模型把“蛋白质序列的全局合理性”变成了一个可以快速打分的量化指标。
3. 核心技术原理:蛋白质语言模型如何给“活”打分
现在到了整篇文章最值得关注的部分:AI 到底是怎么判断一段改造后的基因组“能活”的?答案是蛋白质语言模型。
3.1 从蛋白质序列到“语言”
人工智能领域有一个重要启发:蛋白质序列本身,就像一门语言。
人类语言由单词组成,蛋白质由氨基酸组成;人类语言的句子有语法约束,蛋白质序列也有物理化学约束。人类语言语义由上下文决定,蛋白质结构中一个位点的合理性也由它在整条序列中的上下文决定。
基于这个思想,研究者用海量已知蛋白质序列去训练一个大规模语言模型,让模型学会“什么样的蛋白质序列更自然、更合理”。Meta AI 开源的 ESM(Evolutionary Scale Modeling)系列就是这类模型的代表。它本质上是一个 Transformer 模型,但输入的不是自然语言 token,而是氨基酸 token。
ESM 模型的预训练方式和 ChatGPT 类模型类似,只不过任务变成了“掩码语言建模”(Masked Language Modeling):把一段蛋白质序列中的一部分氨基酸盖住,让模型根据上下文去预测被掩码的位点是什么氨基酸。通过这种方式,模型能够学习氨基酸之间的共现规律、远距离依赖关系,甚至一定程度的进化约束。
3.2 用“困惑度”代替“适应度”
语言模型不是直接告诉你“这段蛋白质能不能活”,而是通过概率来实现打分。
模型在预测某个位点的氨基酸时,会输出一个概率分布。如果模型非常确定这个位置应该是某个氨基酸,而序列中恰好就是这个氨基酸,说明这段序列符合模型学习到的“语法”。相反,如果模型预测的概率很低,说明这段序列可能是不合理的、低适应度的。
在技术上,这个打分通常用伪对数似然(Pseudo Log-Likelihood,PLL)或困惑度(Perplexity,PPL)来表示。
- 伪对数似然越高,说明序列符合模型认知的程度越高。
- 困惑度越低,说明序列越“自然”。
这就是这项研究的关键技术杠杆:模型不是在模拟蛋白质怎么折叠,也不是在解薛定谔方程,而是在学习海量自然蛋白质序列中隐含的进化与功能约束。只要模型打得准,它就可以充当一个高速“适应度预测器”,帮研究者在序列空间里筛选出可行方案。
3.3 ESM 和 AlphaFold 有什么区别
很多人会把 ESM 和 AlphaFold 混淆,这里做一次对比:
| 工具 | 输入 | 输出 | 解决的问题 |
|---|---|---|---|
| AlphaFold | 蛋白质序列 | 3D 结构坐标 | 预测蛋白质空间结构 |
| ESM | 蛋白质序列 | 每个氨基酸的概率分布 / 表征向量 | 评估序列合理性、预测变异效应、生成候选序列 |
| Rosetta | 蛋白质序列 + 结构 | 结构能量 | 基于物理能量函数打分 |
AlphaFold 回答的是“这条序列折叠成什么样”,ESM 回答的是“这条序列像不像一条自然演化出来的蛋白质”。在基因组设计任务里,我们需要的是一个能快速评估“万条候选序列”的工具,这时候 ESM 基于自监督学习的打分机制,效率上就有明显优势。
研究中使用的技术路线本质上就是:以天然噬菌体基因组为骨架,对蛋白编码区进行大规模替换,用蛋白质语言模型评估替换后的序列是否合理,保留得分高的候选,然后反向翻译成 DNA,完成合成和功能验证。
4. 从 AI 设计到活噬菌体的完整链路
很多人以为“AI 设计基因组”是输入一段提示词,模型吐出一整条 DNA,然后就能做实验了。真实流程要工程化得多。
从公开信息来看,这项研究的完整链路可以拆成这样:
4.1 第一步:选定骨架基因组
需要先选择一个天然存在、序列已知、功能已研究清楚的噬菌体作为起点,比如经典的大肠杆菌噬菌体。选择骨架的原因很实际:我们需要一个“能活”的参考系。设计出来的基因组最终要导入宿主菌,如果完全从零开始设计一段与现有基因组毫无关联的序列,很难保证它携带完整的复制、组装和裂解机制。
4.2 第二步:对蛋白编码区做大规模替换
这是 AI 设计真正介入的环节。研究不是只改一两个位点,而是对大量蛋白编码基因进行系统性的序列替换。每次替换都会生成一种新的蛋白质序列。这种替换规模远远超出传统的单点突变。
4.3 第三步:用蛋白质语言模型打分和筛选
对于每一条替换后的蛋白质序列,模型都会计算它在大量自然序列语境下的合理性。得分高的候选被保留,得分低的被淘汰。这个“生成-打分-筛选”循环可以在计算机里非常快地执行,替代了大量湿实验筛选工作。
4.4 第四步:反向翻译成 DNA
蛋白质序列不能直接用于合成,需要根据密码子表重新反向翻译成 DNA 序列。这一环节还有一个工程优化空间:同样的蛋白质序列可以选择不同的密码子组合,影响 DNA 合成的成本和宿主内表达效率。所以这一步通常会结合密码子优化算法。
4.5 第五步:DNA 合成与基因组组装
得到的 DNA 序列通过商业 DNA 合成服务或实验室合成平台,拆成多个片段,然后通过 Gibson Assembly(吉布森组装)或类似方法组装成完整的噬菌体基因组。
4.6 第六步:导入宿主菌,验证活性
把组装好的基因组导入大肠杆菌等宿主菌,等待噬菌体“复活”。如果噬菌体能够完成复制、组装并释放子代,就会在细菌培养平板上形成透明噬菌斑。再进一步做抑菌实验,测活噬菌体能否抑制宿主菌生长。
4.7 这条链路意味着什么
眼尖的读者可能已经发现了,这条链路是典型的“AI 生成 → 计算筛选 → 实验验证”的 AI for Science 闭环。真正花费大量时间的其实不是模型生成那一步,而是下游的合成与验证。
从工程思维来看,这项研究的最大启示是:AI 不只用来生成“可能的序列”,更重要的是提供了一套优先级排序机制,让有限的湿实验资源可以投给最有希望的候选。
5. 用 ESM 快速体验“AI 给蛋白质序列打分”
理解核心原理之后,最有效的方式是自己动手跑一个小实验。虽然我们没法直接复现整个噬菌体基因组设计,但“用蛋白质语言模型评估序列合理性”这个关键能力,是可以上手体验的。
下面我用 Meta AI 开源的 ESM2 最小模型做一个演示,目标是:
- 加载一个预训练蛋白质语言模型。
- 计算一条蛋白质序列的伪对数似然。
- 对某个位点做所有可能的单点突变,看看模型认为哪些突变更合理。
5.1 环境准备
建议使用 Python 3.9+,并安装以下依赖:
pip install transformers torch如果你有 GPU,会快很多;没有 GPU 也可以跑,小模型的 CPU 推理只是稍慢一些。
5.2 代码实现:计算蛋白质序列的合理性分数
我们创建一个 Python 文件esm_score.py,内容如下:
# 文件路径:esm_score.py import torch from transformers import EsmForMaskedLM, EsmTokenizer def load_model(model_name="facebook/esm2_t6_8M_UR50D"): tokenizer = EsmTokenizer.from_pretrained(model_name) model = EsmForMaskedLM.from_pretrained(model_name) model.eval() return tokenizer, model def sequence_log_likelihood(seq, tokenizer, model): """计算一条蛋白质序列的伪对数似然(越大越合理)。""" inputs = tokenizer(seq, return_tensors="pt") ids = inputs["input_ids"] with torch.no_grad(): logits = model(ids).logits # logits 形状: [batch_size, seq_len, vocab_size] log_probs = torch.log_softmax(logits, dim=-1) # 去掉开头 <cls> 和结尾 <eos> inner_ids = ids[0, 1:-1] inner_log_probs = log_probs[0, 1:-1, :] # 取每个真实 token 位置的对数概率 token_scores = torch.gather( inner_log_probs, -1, inner_ids.unsqueeze(-1) ).squeeze(-1) return token_scores.mean().item() if __name__ == "__main__": tokenizer, model = load_model() seq = "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ" pll = sequence_log_likelihood(seq, tokenizer, model) print(f"Pseudo Log-Likelihood: {pll:.4f}")这个代码的关键点在于:对输入的蛋白质序列加上了[CLS]和[EOS]特殊 token 后,通过模型得到每个位置的输出预测,再提取真实氨基酸位置对应的对数概率。分数越高,说明模型越“认可”这段序列。
5.3 代码实现:单点突变饱和扫描
接下来我们写一个更实用的功能:对序列中每个位点尝试替换成其他 19 种氨基酸,计算所有突变体的分数,并按分数排序。
# 文件路径:esm_mut_scan.py import torch from esm_score import load_model, sequence_log_likelihood AMINO_ACIDS = "ACDEFGHIKLMNPQRSTVWY" def scan_mutations(seq, tokenizer, model): results = [] for i in range(len(seq)): original_aa = seq[i] for mut_aa in AMINO_ACIDS: if mut_aa == original_aa: continue mutant = seq[:i] + mut_aa + seq[i + 1:] score = sequence_log_likelihood(mutant, tokenizer, model) results.append({ "position": i, "original": original_aa, "mutant": mut_aa, "pll_score": score, }) results.sort(key=lambda x: x["pll_score"], reverse=True) return results if __name__ == "__main__": # 取自一个常见抗菌肽片段,仅用于演示 demo_seq = "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ" tokenizer, model = load_model() scan_results = scan_mutations(demo_seq, tokenizer, model) print("Top 10 mutations by PLL:") for r in scan_results[:10]: print( f"pos {r['position']}: " f"{r['original']} -> {r['mutant']}, PLL={r['pll_score']:.4f}" )5.4 如何验证运行结果
运行上面的脚本后,你大概率会看到不同突变体之间分数有明显差异。这本身就说明了一个事实:在蛋白质语言模型的视角里,序列中的每一个氨基酸都不是等价的,替换的“代价”取决于上下文。
这里有一个重要的提醒:模型打分高不代表这个突变一定能在实验中成功。模型捕捉的是进化序列分布中的统计规律,而不是完整的物理化学性质。真实设计还要结合结构、表达量、宿主环境等条件做综合判断。
如果你想把这个流程用在自己的蛋白质工程项目里,基本思路就是:
- 准备参考蛋白序列。
- 用模型对候选突变打分。
- 把高分突变组合起来,形成候选蛋白。
- 在湿实验中验证候选蛋白的功能。
5.5 获取真实噬菌体基因组的预处理思路
如果想测试真实噬菌体基因组的蛋白编码区,可以用 NCBI 的 E-utilities 下载参考序列,再用 Biopython 做翻译和筛选。下面是一个命令行示例:
# 使用 NCBI E-utilities 下载 lambda 噬菌体参考基因组(演示用途) esearch -db nucleotide -query "Lambda phage complete genome" | efetch -format fasta > lambda_phage.fa # 预览序列 head -20 lambda_phage.fa拿到基因组后,你可以用 Biopython 的SeqIO解析序列,找到所有开放阅读框(ORF)并翻译成蛋白质序列,再送入 ESM 打分。这条流水线做起来并不难,难的是后续的功能验证。
6. 从这项研究学到的 AI for Science 工程范式
这篇文章本该到这里就可以结束,但我觉得有一个更值得展开的点:这项研究背后的工程范式,在未来很可能被复用到其他生命科学问题上。
6.1 “生成 + 打分”双循环
传统的 AI 生成任务,比如生成图片,通常是生成器 + 判别器。而 AI for Science 的生成任务,往往会多一个物理/生物验证环节。
噬菌体基因组设计其实可以抽象成这样一个框架:
- 生成器:在序列空间里生成大量候选。
- 打分器:用预训练模型快速淘汰不合格候选。
- 验证器:用合成实验验证极少数幸存者。
这三点构成了一个科学发现的“漏斗”。模型的价值不在于直接给出最终答案,而在于极大地压缩实验空间。没有这个漏斗,你可能要在上亿条候选序列里靠运气试错。
6.2 预训练模型是“领域知识的压缩器”
ESM 之所以能高效打分,是因为它已经见过海量天然蛋白质序列。它在预训练阶段学到的知识,在下游任务里被压缩成了“快速判断能力”。这和我们在 NLP 领域使用 BERT、GPT 的范式惊人地一致:
- 先用无监督数据做大规模预训练;
- 再用下游任务做微调或零样本评估;
- 最后通过领域闭环验证结果。
在生命科学领域,这种“预训练 + 下游任务”的迁移范式尤其有价值,因为湿实验数据通常很少且昂贵。模型可以从大量未标注序列中学习规律,从而在标注数据稀缺的场景下依然有不错的起点。
6.3 对开发者的启示
如果你不是生物学家,而是做后端或机器学习的人,这个研究同样有意义。
第一,模型评估方法是可以跨领域迁移的。用对数似然、困惑度来评估生成结果,在 NLP 里是常规操作,在蛋白质设计里同样好用。你不需要理解蛋白质的全部生物物理细节,把握好“生成模型 + 打分器”的结构,就能把问题抽象成已知的工程形态。
第二,AI for Science 的软件工程比外界想象的更朴素。核心不是某个花哨的新模型架构,而是把已有模型接入实验闭环,让 AI 的输出能真正被物理世界验证。这对数据管线、接口设计、实验管理系统都提出了新要求。
第三,大模型的“知识边界”很重要。ESM 可以帮你快速筛选序列,但它不会告诉你哪条序列适合工业化放大生产,也不会自动处理生物安全审批。技术人需要学会把模型当作高效计算工具,而不是“全知全能的设计师”。
7. 局限性与必须守住的边界
作为一个技术博主,我不希望把这项研究吹成“AI 创造生命”的神话。真实情况里,仍然有很多边界。
7.1 它仍然是“基于骨架的设计”
目前能做到的完整可存活基因组,本质上是在天然噬菌体骨架上的大规模改造,并非完全从零开始。这和“AI 凭空写出一种从未存在过的生命形态”之间,还有很长的路。骨架提供了关键的调控元件、复制起点和包装机制,这些信息不是模型自身“发明”的,而是遗传自天然序列。
7.2 模型打分不能完全替代物理化学验证
蛋白质语言模型学习的是自然序列的统计规律,但它并不是真实的物理模拟器。一个蛋白能不能在 37 摄氏度环境下稳定折叠,能不能与宿主受体正确结合,模型打高分也不代表实验一定成功。因此,所有高分会选都仍然需要湿实验验证。
7.3 成本和成功率仍是瓶颈
基因组 DNA 的合成成本虽然逐年下降,但设计多条候选并逐一验证,花费依然不低。更重要的是,模型筛选出的候选可能并不是全局最优,只是“通过模型语法约束的较优方案”。在大规模应用之前,我们还需要更多研究来验证模型泛化能力。
7.4 生物安全和伦理边界:这一条必须强调
合成生物学天然具有“双刃剑”属性。能够设计噬菌体基因组的技术,理论上也可能被误用于设计其他病原体。任何涉及基因组合成的实验都必须遵守国家法律法规和实验室生物安全规范,必须获得相应伦理审查和生物安全委员会审批。
我特别建议读者注意:能力越大,边界意识越重要。这篇文章只做技术原理和通用流程的讨论,不提供制造病原体或危险生物体的操作细节。合法合规地研究和应用技术,是每一个技术人不可逾越的底线。
8. 适合谁的下一步实践
这项研究适合不同背景的读者从不同角度切入,下面按人群给一点建议。
8.1 如果你是生物信息 / 合成生物学背景
可以重点实践:
- 用 ESM 或类似蛋白质语言模型做变异效应预测。
- 把候选蛋白序列做反向翻译和密码子优化。
- 尝试在模式噬菌体上做小规模改造,熟悉 DNA 合成和组装的流程。
- 读一读 ESM 相关论文,理解预训练数据、模型结构和隐藏语义。
8.2 如果你有机器学习 / NLP 背景
可以从以下方向切入:
- 把“蛋白质序列”当成一种特殊语言,用 Hugging Face 的
transformers加载模型并观察输出。 - 尝试用困惑度指标筛选序列候选,把 NLP 里的评估方法论迁移过来。
- 研究如何把序列生成模型与下游打分器组成一个优化闭环。
8.3 如果你是后端 / 平台工程师
可以做这些事情:
- 搭建一个“AI 设计蛋白质序列”的批处理流水线,支持序列上传、模型打分、结果可视化。
- 把实验验证数据回传到数据库中,形成“AI 设计 → 实验验证 → 模型再训练”的数据闭环。
- 关注云资源调度,因为蛋白质语言模型虽然规模不大,但批量推理仍然需要算力规划。
8.4 学习路径推荐
如果你想继续深入,建议按这个顺序学习:
- 了解蛋白质与 DNA 基础:氨基酸、密码子、转录翻译、基因组结构。
- 学习分子生物学核心概念:ORF、启动子、表达载体、转化。
- 熟悉编程工具:Python、Biopython、pandas。
- 了解一种蛋白质语言模型:ESM 是最合适的起点。
- 阅读一些合成生物学的典型实验流程,理解“设计-构建-测试-学习”循环。
9. 结语
“AI 首次生成完整噬菌体基因组,可存活、能抑菌”这条新闻背后,真正值得记住的判断是:AI 把生命设计从“大海捞针”变成了“有地图的搜索”。蛋白质语言模型不是全知全能的造物主,但它提供了一种前所未有的能力——在亿万条可能的序列中快速找到符合生命语法的候选。
对于开发者来说,这篇研究更是一则工程范式的启示:强大的模型一旦接上实验验证闭环,就能产生真正的科学突破。AI 生成不再是聊天的玩具,而是推动生物学发现的新引擎。
如果你对这方面感兴趣,建议别停在看新闻这一步。打开终端,装好transformers,找一条蛋白质序列,跑一次突变打分。当你亲眼看到模型对 19 种替换给出不同分数时,你对“AI 设计生命”这件事的理解,会比任何新闻标题都深刻。