一句话摘要
介绍 2026 年鲜有人教授的 AI 技能
2026 年几乎没人教的 AI 技能 2026年7月14日 · 27分钟阅读 · 查看原文 ↗ AI Claude Games Hardware
我花了两年时间,在我看不见内部的模型之上构建东西。我所知道的每一个修复,都触及两个地方之一:我改变输入,或者我给输出打分。提示词、上下文、检索、评测(eval)、护栏。真正发生在输入与输出之间的"思考",一直是我无法触及的,正如它对几乎所有在生产环境交付 AI 的人来说,同样无法触及。
有一天下午,我们应用里的一个功能以一种我前所未见的方式坏掉了。它总结一组专家内容并针对这些内容回答问题,而且已经正常工作了好几周。然后它开始凭空捏造一个我们语料库里根本不存在的引用,用的却是和真实答案一样的自信。我做了我们任何人都会做的事。我打开追踪记录。我重读系统提示词。我加了一行,告诉它不要编造来源。幻觉变少了。但它没消失。于是我又加了一个 few-shot 示例。然后是一道拒绝闸门。然后是一个评测,去捕捉那个我再也无法按需复现的失败。
我花了太长时间才注意到那件明显的事。所有这些招数都在模型的外部起作用。我在调输入、在评判输出,而中间那部分——模型实际决定伪造那个引用的地方——始终密封着。我从来没有看过它在做那件事时内部在做什么。我看不了。我所知道的工具到不了那里。
那个密封有个名字。我们管它叫黑箱。而 2026 年,是我可以诚实地说:一个普通的构建者,而非前沿实验室的研究员,能够开始打开它的第一年。
没人卖给你的那个技能
随便拉一份"今年要学的 AI 技能"清单。你已经知道上面有什么了,因为每一份清单上都是同样五样东西。提示词工程(prompt engineering),现在每个人都假装自己从来不在行。上下文工程(context engineering),那个稍微体面一点的表亲。检索(retrieval),让你的模型能读你的文档。智能体(agents),让它能采取行动。评测(evals),让你能量化这一切有没有用。
这五样我都用。其中一些我还教。它们是真实的技能,也确实能换来真金白银。
注意它们的共同点。每一项都作用在模型的外部。你安排更好的输入,你在箱子周围接上更好的工具,你更仔细地度量输出。模型本身始终是你透过门上的一道小缝去谈判的供应商。你塞进一条提示词,一条回应滑出来,而你变得非常擅长写纸条从那条缝里递进去。
还有第二种技能。它是去读模型实际在计算什么,并在它自己的概念层面、而非词语层面去操控它。从内部操作它。
我打算叫它"箱内技能"(inside-the-box skill),因为还没有人给它起过一个干净的消费级名字,而这本身就是要点的一部分。几乎没人教它。有很长一段时间,几乎没人能教它,因为要做这件事,意味着要在少数几个前沿实验室之一内部工作,和那些发明这些技术的人一起。这些知识存在于研究论文和内部工具里,而不是在一个你能在某个周六打开的 Colab 里。
这一点最近才改变,以至于大多数构建者还没跟上。而且它改变,不是因为某家公司为你打开了一条缝。它改变,是因为发明这些技术的实验室,把这些工具本身放到了公开处——放在 Hugging Face 和 GitHub 上,免费。本文剩余部分,就是我在努力弥合这个差距,因为我认为,早点掌握它的人,会拿到和 2022 年那批提示词玩家一样的先发优势,只不过这一次,优势更难被复制。
箱子一开始为什么是密封的
要理解箱子为什么一直关着,你得先看清里面到底有什么。
一种反射性的假设是,黑箱关乎保密。权重被藏起来了,实验室不肯告诉我们,诸如此类。这是错的,而搞错这一点,正是人们否定这整个领域的原因。你可以打印出一个开放模型里的每一个权重。你可以捕捉它在给定输入上激发的每一个激活值。没有一样是被藏起来的。今晚我就能把一个开源模型的全部内部状态导到我的磁盘上。
问题不在访问。问题在于意义是纠缠的。
你也许会希望网络里某处有一个"正式语气"的神经元,另一个是"这是 Python 代码",还有一个是"用户在问法律问题"。如果真是这样,解读一个模型就会像读一块带标签的电路板。事实并非如此。一个神经元会为金门大桥而激发,也会为一条法律免责声明而激发,还会为一个函数的开头而激发,全都同时发生,没有任何干净的分离。概念被涂抹在许多神经元上,而每个神经元又承载着许多概念的碎片。
这个领域称之为叠加(superposition),并把神经元称为多义的(polysemantic),即"多义的"。模型通过让概念重叠、共享空间,装下了远比它神经元数量更多的概念。这是一种高效的存储知识方式,却是一种让这些知识变得可读的糟糕方式。盯着原始激活值看几乎什么都得不到,就像盯着一片湿漉漉的大脑切片,得不到它所承载记忆的任何信息。信息就在那儿。你只是读不了它。
再叠加上那个应该让任何把产品押在这些系统上的人担忧的部分。规模化让它更糟了。每当我们把模型做得更大、更强,我们也把它做得更不可读,因为更强的能力意味着更多的概念被塞进同样纠缠、重叠的表征里。我们一直在同时朝两个方向赛跑。模型越来越聪明,而我们看清它们在"想"什么的能力却越来越落后。我们不是故意把箱子封上的。我们长出了一个其内部从未被我们设计过的东西,然后假装惊讶于我们读不懂它。
这就是为什么调试一个 LLM 感觉像迷信的诚实原因。你不是在调试。你是在一个系统上做实验,而这个系统的内部,你默认同意不去看。
你到底怎么看进内部
最终把它撬开的东西,简单到近乎好笑。
如果问题在于意义被涂抹在许多神经元上,那你就训练第二个、更小的模型,它唯一的工作就是把它"反涂抹"回来。那个模型叫稀疏自编码器(sparse autoencoder,SAE),它像一根探针一样坐在大模型的某一层上。你把那一层纠缠的激活向量喂给它,它把它拆分成一个更大得多的、我们称之为"特征"(feature)的集合,其中每个特征都被调到尽量接近、精确地对应一个人类可读的东西。
所以,不再是"第 4,201 号神经元是 0.7"这种毫无意义的东西,你得到一张清单。"正式语气"特征激活了。"拒绝"特征激活了。"笑话铺垫"特征激活了。"爬行动物"特征,很奇怪,也有一点点激活,现在你就得琢磨为什么了。你已经从一堵数字墙,走到了一张模型此刻实际在使用的概念清单面前。
你第一次看到那张清单时,提示词就开始显得原始了。
下面是它在代码里长什么样。它用 SAELens——一个用于加载和分析这些自编码器的开源库——配合 Gemma Scope 里的一个 SAE。Gemma Scope 是 DeepMind 对它的 Gemma 2 模型每一层都训练了稀疏自编码器的开放发布,免费放在 Hugging Face 上,还带一个帮你入门的 Colab。两者都在单块 GPU 上运行。你把一些文本跑过模型,在某一个层捕获激活值,然后问自编码器,在它读文本时哪些概念在激发。
那个输出替代了某些东西。今天,当一个智能体脱轨时,我的调试循环是重读转写记录然后猜。我看着它产出的词,为它为什么产出这些词编一个故事。那个故事是打扮成分析的猜测。这是一个"行为调试器"。它不给我看模型说了什么词,它给我看模型在说那些词时正在运行的概念。当模型伪造那个引用时,我就不必为"为什么"编一个理论了。我可以看哪些特征被点亮,并找到驱动它的那一个。
如果你没有 GPU,你甚至不用自己跑模型。Neuronpedia,一个开源的解读性平台,在免费 API 和一个可浏览的、每个特征都有页面的仪表盘后面托管这些自编码器,所以你可以通过 HTTP 问同样的问题,拿到带人工标注标签的、命了名的概念。
无论哪种方式,这都是一种与系统根本不同的关系。我停止像侦探那样审问输出,开始像分析器(profiler)那样读内部。任何从 print 语句走到真正调试器的人,都知道那个跳跃有多大。同样的跳跃现在触及了模型的内部,而且是通过你今晚就能下载的工具触及的。
从读到操控
读概念是前一半。真正改变你构建方式的那一半,是你能改变它们。
一旦一个特征有了名字和数值,你就可以把那个数值设成别的,然后从那里继续把模型的剩余部分跑下去。每个 SAE 特征在模型的激活空间里都有一个指向的方向,把特征调高,就意味着在模型计算时,把这个方向的某个倍数加回残差流(residual stream)里。把"正式语气"特征调高,模型就会像个律师一样写作,而你从头到尾没打过"正式"这个词。把一个"拒绝"特征调低,你就找到了一条越狱(jailbreak),而反过来读,这正是你学习如何加固以抵御越狱的方式。找到那个追踪"编造"的特征并夹住它,捏造就减少了。这叫特征操控(feature steering),而我想精确说明为什么它不只是花哨的提示词。
那段代码里缺了一样东西。里头没有任何一处我写了"要正式"或"用专业语气"。我没有要求模型做任何事。我越过提示词,找到了模型自己内部的"正式性"概念,并把它调高了。提示词是一个你希望模型遵守的请求。操控改变的是产生答案的那次计算。这就是"请求"与"操作"之间的全部距离,而那些演示,并不会让你对它在手里的感觉有多不同做好准备。
如果第一次就装 SAE 感觉工程量大,还有一条更简单的上路路径,已经开放了几年,叫表征工程(representation engineering),或者说控制向量(control vectors)。你不用自编码器,而是自己从一小组对比示例(正式 vs 随意,诚实 vs 回避)中构建一个单一的操控方向,并在推理时加上那个方向。像 repeng 这样的库几行代码就能做到,这是你在深入之前,最便宜的感受效果的方式。
它会更好,因为你可以让这些编辑以模型已经在做的事为条件。就是在这里,它对我来说不再像玩具,而开始像工程。在同一个前向 hook 里,你读取此刻哪些概念是活跃的,只在某个条件成立时才介入。
那是对模型心智的一条 if 语句。你是在对概念、而非 token 写控制流,而且条件不是文本里的某个关键词,而是一个内部特征的激活值。正是这一行,让"像写软件一样构建模型"这句话变得名副其实,而不是某个写在落地页上的口号。而如果你更不想自己托管任何这些,Neuronpedia 也暴露了一个操控端点,所以你可以用一次调用和一个强度乘数,在一个托管模型上调高或调低一个命名的特征,无需 GPU 参与。
想一想这让你能直接攻击你哪一个反复出现的失败。长时间对话里跑偏的语气,今天你还在不断重新注入指令。一个拒绝了它本不该拒绝、或接受了它本应拒绝之事的模型。一个只在某个特定情境下出现的特定幻觉。一条你现在能从内部研究的越狱,因为你能看着"拒绝"特征被压制,并决定把它重新钉回去。这些都不再需要系统提示词里的第十四行。它们拿到的是一个旋钮。
证明这不是玩具
如果这听起来太学术,看看它已经产出了什么。
先从我写这篇文章的那个失败说起:幻觉。一种叫"推理时干预"(Inference-Time Intervention)的方法背后的研究者,2023 年在 NeurIPS 上发表了它,他们证明你可以从内部攻击它。他们训练了便宜的探针(probe),在模型内部找到把真实答案与错误答案分开的那些方向,然后在生成时,沿着"真实"方向轻推激活值。没有微调,没有给每个答案打分的昂贵评判模型,只是一个方向加一个旋钮。在 TruthfulQA 基准上,它显著提高了模型给出真实且信息充分的答案的频率,按某些度量,这个几乎零成本运行的干预,把分数大致翻了一倍。
这就是整个想法的形状。对抗一个坏行为的昂贵方式,是站在箱子外面,拿着一个评分器,为每一个输出付一次裁决费。便宜的方式,是读取一个本来就活在箱子内部的信号,并直接对它行动。无论那个信号是一个探针方向还是一个单独的 SAE 特征,同样的招数都成立。
然后是规模,这也是大多数人预期解读性会栽跟头的地方。标准的反驳是,这在玩具模型上也许行,但永远扛不住真实模型。这个反驳已经越来越难绷着脸说出口了,因为三家不同的前沿实验室都已经在生产规模上跑过它并发表了结果。OpenAI 用一个稀疏自编码器把 GPT-4 的内部分解成大约 1600 万个特征,并开源了训练代码。Anthropic 对 Claude 3 Sonnet——一个人们真的在拿来上线用的模型——做了这件事,找到了数百万个它们能操控的特征,包括那个现在出了名的"金门大桥"特征。而 DeepMind 的 Gemma Scope 没有只挑一层,它给 Gemma 2 的每一层、每一个子层都训练了自编码器,并把整套东西送了出去,在 2025 年底还跟了一个更大的第二次发布。"它没法规模化"这句话,现在有三个你可以下载的反例。
然后是那个我停不下来想的部分,因为它不再是软件,而变成了科学。
在这些东西成为产品的多年前,一个 DeepMind 研究团队逆向工程了 AlphaZero——那个自学下棋的象棋引擎——并把结果发表在 PNAS 上。他们提取出了机器学到的、从没有人命名过的概念。在后续工作(同样发表在 PNAS)里,他们更进一步,把那些机器发现的概念教回给世界级特级大师,后者的棋艺得到了可度量的提升。一个 AI 学到了关于象棋的、人类错过的真东西,而研究者把它提取出来、递了回去。
现在把同一套工具指向生物学。在一个叫 InterPLM 的项目里,研究者在一个蛋白质语言模型上训练了稀疏自编码器——就是那种学习蛋白质语法的模型,正如 LLM 学习英语语法——并找到了与真实生物结构对齐的特征:结合位点、结构基序、功能家族,都是没人给它标注过的概念。这项工作发表在 Nature Methods 上,整条流水线在 GitHub 上开源。这是我所知道的、有人逆向工程一个基础模型、并从另一头得到真正自然科学发现的最清晰的案例之一。
让我能把应用里的幻觉调低的那个技术,和从一个机器里抽出新的象棋知识、从一个蛋白质模型里抽出真实生物学的技术,是同一个。玩具做不到这种事。
工具刚刚落到你手里
这就是为什么标题里的年份是 2026,而不是某个含糊的"未来"。这个能力从前沿实验室的秘密,跨越成了你能摸到的东西,而且和上一波 AI 工具不同,你摸到的不是某家公司托管的缝。它是一堆开放组件,你想拼多少就拼多少。
解释器模型是开放且免费的。Gemma Scope 把 DeepMind 给 Gemma 2 的稀疏自编码器放在了 Hugging Face 上,每一层都训练了,带一个入门的 Colab notebook。OpenAI 开源了它的 SAE 训练代码。两者之间,你拥有公开的、针对真实模型的解释器,无需排队。
驱动它们的库也是开放的。SAELens 加载预训练的自编码器,给你编码-解码循环,它依赖 TransformerLens——那个用 hook 伸进模型激活值的苦力库,也正是它让上面每一个操控示例变成了几行代码,而不是一个研究项目。
探索你发现的地方也是开放的。Neuronpedia,现在已经完全开源,是一个托管在这些自编码器之上的仪表盘和免费 API。每个特征都有一个展示什么会激活它的页面,你能在浏览器里操控特征,它甚至托管了实验室用来一步步追踪模型推理的电路追踪工具。它取代了那些曾经只活在实验室内部的、专属的仪表盘。
而当模型大到你的硬件装不下时,这也被公开地解决了。NNsight,连同国家深度推理织构(National Deep Inference Fabric),让你能对一个你永远无法本地加载的模型,写出完全相同的读-操控代码,并远程运行它,跑在共享研究基础设施上,免费。你能从一台笔记本伸进一个七百亿参数的模型内部。
剥掉所有工具,核心循环小到你能装在脑子里。抓取某一层的激活值,把它们编码成命名的特征,读取或编辑它们,解码回去,继续前向传播。这就是整个技能。
入门的门槛曾经是一份前沿实验室的录用通知。现在是一个周末加一次 Hugging Face 下载。
诚实的部分
我不打算卖给你一项成品技术,因为它不是。
解读性还很年轻,而且它会以一些你在押上任何重要东西之前应该知道的方式坏掉。叠加不会礼貌地把自己限制在一层,它跨层扩散,而那个干净的"单层 SAE"图景,你越仔细看就越模糊。有些特征在演示里看起来可以完美操控,可当你真的去依赖它们时却不动了,因为 SAE 标注的那个东西,并不像标签暗示的那样是一个干净的概念。而且模型会自我修复。你压制一个特征,网络就在下游绕过你的编辑、把你想移除的行为重新愈合。这是一个有记录的效果,有时被称作"九头蛇效应"(Hydra effect),即消融一个组件会导致其他组件去补偿,仿佛第一个从未消失过,而这意味着一个看起来扎实的操控结果,可能在生产里悄悄失败。即便是上面一切所依赖的"特征字典"观,也正在被当初构建它的研究者们往前推,推向理解那些概念所在空间的几何,并沿着那个空间的形状去操控,而不是硬拉某一个旋钮。这是一个健康的年轻科学的标志,而不是一份成品的 SDK,你应该这样对待它。
然后是那个我觉得比任何技术性注意事项都有意思的争论,我想公平地把它摆出来,因为它悬而未决。
一旦你能读取一个坏行为的内部信号,诱人的下一步就是在训练中使用它。把你对内部的理解变成一个奖励,并直接据此优化模型。它有效,而且一些安全研究者认为它接近一个被禁止的举动。这个论证很锋利,值得你坐下来想。你的解读性工具之所以宝贵,恰恰因为它是通往模型的一扇诚实的窗户。一旦你开始针对那扇窗户去优化模型,你就制造了压力,让模型在窗户面前显得好看、而在窗户后面为所欲为。你可以通过针对它训练,来弄瞎你自己的监视器。这正是一群跨多家实验室的研究者在 2025 年针对思维链(chain-of-thought)监控提出的担忧,也是那篇被广泛引用的文章所说的"最被禁止的技术"。一旦你针对你的窗户做了优化,你就再也不知道它是在给你看真相,还是在给你看优化教会它展示的东西。
有一个部分性的防御,值得了解,因为它塑造了谨慎团队的做法。你从一个冻结的参考模型副本读取信号,而不是从正在被训练的学生模型读取,并且你不让梯度流回探针,这样学生模型就没法直接学习去骗它。
python
Using an internal probe as a training signal — and the safeguard that
makes it less dangerous: read the probe off a FROZEN reference model,
not the student, so the student cannot directly learn to fool it.
for batch in rollouts:
answer = policy.generate(batch.prompt)
reward = truth_probe(frozen_ref.activations(answer)) # cheap internal signal
policy.update(answer, reward)
这有帮助。它没有完全了结这个反对意见,因为"透过窗户显得好看"的压力会通过更微妙的路径渗进来。我不打算替你解决这个,因为我不认为它已经被解决。我认为两边都指向了真实的东西。我要说的是,知道这个张力存在,正是"理解这个领域"和"转发一篇关于它的新闻稿"之间的区别。如果有人向你兜售不带任何注意事项的解读性,那他们没读过这场分歧。
所以这里是对你我最重要的一部分
别再把这件事当成一个研究课题,开始把它当成你技术栈里的一层。
即便你从没画过它,你心里也已经有了智能体技术栈的模型。有那些权重,冻结的,你租来的。有你每轮组装的上下文。有它周围的 harness,提示词、工具、检索和记忆。有底下的基础设施。解读性和操控作为一个新层插进来,那一层坐在提示词之下、紧挨着记忆和工具,是在表征上、而非文本上操作的那一层。两年来,我一直在 harness 层做我所有的工程,并假装模型层是一个固定的输入。它不再是固定的了。
近未来是具体的,而且它比大多数团队预期的来得更早。你调试一个智能体,靠的是检查在那糟糕的一轮里哪些特征激发了,而不是重读转写记录、构建一个理论。你修复一个跑偏的语气或一个反复出现的捏造,靠的是找到它背后那一个特征并操控它,而不是往一个已经没人读得动的系统提示词里追加第十四条指令。你捕捉一类越狱,靠的是实时看着"拒绝"特征被压制、并把它重新钉回去。可靠性——那个自从我干这行以来一直感觉像手艺的东西——开始感觉像工程了,因为你第一次有了一个观察系统和一个控制系统,指向同一个对象。
那就是真正的承诺,值得直白地说出来。要控制任何过程,你需要观察它并作用于它,而解读性同时给了你这两样,因为它让你把一个模型分解成部分、给那些部分赋予意义、并改变它们。每一门工程学科在成熟之前,都被一门基础科学卡着门。蒸汽机跑了几十年,热力学才解释清楚它们,而正是热力学把它们从手艺变成了工程。AI 现在就处在这个拐点上。我们已经跑了好几年蒸汽机。热力学终于出现了。
该懂的人认为,曲线现在就弯曲了,而不是"某天"。Anthropic 的 CEO Dario Amodei 在 2025 年发了一篇题为《解读性的紧迫性》(The Urgency of Interpretability)的文章,论证这是我们手头把黑箱网络变成可理解、可操控系统的最佳赌注之一,并设定了一个目标:在几年内能可靠地检测出大多数模型问题。《麻省理工科技评论》把机制解读性列为 2026 年十大突破性技术之一。Anthropic、DeepMind 和 OpenAI 都在运营公开的解读性项目,并不断从其中交付开放工件。这些都不会让这门科学完工。但所有这些都告诉你,严肃的注意力正流向哪里。
两类构建者正在形成,而这场分裂安静到大多数人还没注意到自己已经站了队。一类人会在接下来几年里变得非常擅长跟箱子的外部说话:更好的提示词、更大的上下文、更聪明的检索,他们会做得不错,因为这些技能是真实的,也不会消失。另一类人正在学习打开箱子、操作里面的东西。两者之间的差距,即将像 2022 年提示词差距那样拉开——那时一小撮人搞明白了某个东西,我们其余的人花了一年才赶上,而到那时,他们已经在以复合的方式领先了。
我知道我想站在哪一边。两年里我调箱子的外部,管它叫工程。有意思的部分从来都在里面。它现在打开了,而且不只是对实验室。那些在所有人之前学会读里面东西的人,会拥有一个纯提示词人群甚至看不到它正在来临的优势,因为你无法看到一个活在你从未看过的那一层里的优势。
这个周末怎么真正开始
你不需要许可,也不需要预算。三步。
从 Hugging Face 拉一个 DeepMind 的 Gemma Scope 自编码器,跑模型卡上的 SAELens Colab。如果想让它在一般硬件上跑得动,就从 Gemma 2 2B 和一个中间层开始;或者干脆跳过 GPU,在浏览器里通过 Neuronpedia 摆弄同样的特征。只要达到"能打印出某个提示词上激发的特征排序清单"这个点就行。看过一次,就会重塑你对模型的思考方式。
然后挑一个你真心讨厌的模型行为——跑偏的语气、误触发的拒绝、一个你能复现的幻觉——去猎捕它背后的特征。把它调高调低,直到那个行为移动。你会失败几次。那个失败就是技能本身。找到旋钮是大部分工作,转动它是容易的部分。
最后,读那两篇框定整个领域的文章:Dario Amodei 的《解读性的紧迫性》是为了那份雄心,而 2025 年那篇思维链可监控性的论文,是为了那个关于"你能多轻易弄瞎自己的窗户"的开放争论。带着雄心去构建。对争论保持诚实。那个组合比两者任何单独一个都更稀有,而它就是整个游戏。
提示词
PIRATE, HUMOR = 4201, 8891 # feature indices found by inspection
def gated_steer(resid, hook):
z = sae.encode(resid) # which concepts are live at this moment?
pirate_on = (z[..., PIRATE] > 0.75).unsqueeze(-1)
# Only amplify humor *when* the model is already in pirate mode:
resid = resid + 0.7 * pirate_on * sae.W_dec[HUMOR]
# Or hard-stop generation when an unwanted concept runs away:
if z[..., PIRATE].max() > 0.9:
raise StopGeneration
return resid
# Inference-Time Intervention (Li et al., NeurIPS 2023), as an idea.
# Find the "truthful" direction with a probe, then shift activations toward it.
truth_dirs = fit_truth_probes(model, truthful_vs_false_pairs) # per-head directions
def toward_truth(head_out, hook):
return head_out + alpha * truth_dirs[hook.layer] # shift, don't retrain
# The judge is not another model grading from the outside.
# The signal is a direction living inside the model itself.
from nnsight import LanguageModel
# Run the same read/steer loop on a model too big for your GPU.
# NDIF executes it remotely on the open weights, for free.
llm = LanguageModel("meta-llama/Llama-3.3-70B-Instruct")
with llm.trace("The Golden Gate Bridge is", remote=True):
resid = llm.model.layers[40].output[0]
resid += 8.0 * bridge_direction # steer inside a 70B model from a laptop
prediction = llm.lm_head.output.argmax(dim=-1).save()
import requests
# Illustrative; exact endpoint and fields are in Neuronpedia's API docs.
# No GPU: ask a hosted SAE which features a prompt lights up.
resp = requests.post(
"https://www.neuronpedia.org/api/activation/new",
headers={"x-api-key": NEURONPEDIA_API_KEY},
json={
"model": "gemma-2-2b",
"source": "20-gemmascope-res-16k",
"text": "Write a formal complaint to my landlord about the leak.",
},
)
for feat in resp.json()["activations"][:10]:
print(feat["index"], round(feat["maxValue"], 2), feat["description"])
import torch
from transformer_lens import HookedTransformer
from sae_lens import SAE
# Gemma 2 (2B) plus one of DeepMind's open Gemma Scope autoencoders. Both free.
model = HookedTransformer.from_pretrained("google/gemma-2-2b")
sae, cfg, sparsity = SAE.from_pretrained(
release="gemma-scope-2b-pt-res-canonical",
sae_id="layer_20/width_16k/canonical",
)
prompt = "Write a formal complaint to my landlord about the leak."
_, cache = model.run_with_cache(prompt, prepend_bos=True)
acts = cache["blocks.20.hook_resid_post"] # tangled residual stream at layer 20
features = sae.encode(acts) # smeared vector -> named concepts
top = features[0, -1].topk(10) # concepts firing on the last token
for value, idx in zip(top.values, top.indices):
print(round(value.item(), 2), f"feature #{idx.item()}")
# Example output, after you look each index up in a feature dashboard:
# 9.0 Setup phrases in jokes and narratives
# 7.0 Formal definition or description of a concept
# 6.0 Reptiles and reptilian characteristics
# You found this index by inspecting which feature lights up on formal text.
FORMAL = 12345
direction = sae.W_dec[FORMAL] # that concept's direction in activation space
def steer(resid, hook):
return resid + 8.0 * direction # add the concept back in, scaled
out = model.generate(
"Write a quick note to my landlord about the leak.",
fwd_hooks=[("blocks.20.hook_resid_post", steer)],
max_new_tokens=120,
)
print(out)
# The whole thing, against DeepMind's open Gemma Scope SAE:
acts = cache["blocks.20.hook_resid_post"] # smeared activations
features = sae.encode(acts) # -> named concepts (read)
features[..., FORMALITY] += 6.0 # turn one concept up (edit)
steered = sae.decode(features) # write it back (decode)
# ...then keep running the model forward from `steered`.
from repeng import ControlVector, ControlModel
model = ControlModel(base_model, layer_ids=list(range(-5, -18, -1)))
# Build one steering direction from contrasting examples. No SAE required.
formal = ControlVector.train(
model, tokenizer,
dataset=make_contrast_pairs(positive="formal, professional",
negative="casual, slangy"),
)
model.set_control(formal, coeff=1.5) # dial the direction up (negative suppresses)
print(generate(model, "Write a note to my landlord about the leak."))
标签:# X # AI # Claude # Games # Hardware # Guide # Chatgpt # Sonnet
相关文章
我是如何从每月 600 美元做到 14 美元的。ELON 的 GROK + KIMI 的大脑
关注并收藏这个——我是 [@starmexxx](https://x.com/starmexxx),我追踪 AI 工具如何创造出大多数人还没听说过的、新的收入来源。这一篇是整个构建。Grok Bot AI Hardware Claude
原文参考:https://maxed.wiki/posts/the-ai-skill-of-2026-that-almost-nobody-is-teaching/ (Maxed.wiki,本页为站内中文整理)