我在 DeepSeek 敲了一个 ,它开始自己跟自己说话

内容分享22小时前发布
0 0 0
全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

这两天看到一个挺有意思的现象。

有人在 DeepSeek 的输入框里敲了几个字符,<think>,然后什么问题都没问,直接按回车。

DeepSeek 给它吐回来一段八竿子打不着的内容。有时候是数学题,刷新一下变成小说开头,再刷新,又开始算日子。

每次都不一样。

我在 DeepSeek 敲了一个 ,它开始自己跟自己说话

看到这种截图,许多人第一句就是,完了,模型疯了。再往下一想,又会怀疑是不是漏了训练数据。

实则都不是。

这类问题有个名字,Special Token Injection。

把输入框后面那点东西摊开看,LLM 在内部不是用我们看到的「问答」格式跟用户交流的,它有自己一套对话协议。打开 DeepSeek 的 tokenizer 配置,你能看到一堆这样的字符。

<|begin▁of▁sentence|> 表明对话开始。

<|User|> 后面接的是用户说的话。

<|Assistant|> 后面接的是模型要回的话。

<think> 和 </think> 中间,是模型推理的草稿。

这些字符叫 special token,是模型训练时用来区分谁在说话、在做什么动作的分隔符。它们在词表里都被分配了独立的 ID,模型看到这些 ID,就会切到对应的模式里。

平时我们敲一个「你好」,DeepSeek 看到的并不是这两个字。它看到的是一段拼好的模板,类似 <|begin▁of▁sentence|><|User|>你好<|Assistant|>,然后从最后那个 <|Assistant|> 之后开始往下说。

坑就在这里。

如果用户直接把 <think> 打进输入框,而模板层又没把它当普通文字关起来,tokenizer 就可能把它认成真的控制 token。

这样一来,DeepSeek 看到的就像一块后台路牌,被人塞进了用户留言里。

按训练时的样子,模型应该看到「用户问了一个问题,我要回答」。目前模型看到的是 <think> 直接出目前用户位置,然后什么问题都没有。它的训练数据里没有这种结构,但它必须继续生成下去。

它没去数据库里捞东西。前缀给到这里断了,也没有问题作锚点,它只能顺着训练分布往下接。于是你看到的就是一堆碎片,一会儿数学,一会儿小说,这跟训练数据泄露没关系。

到这里就能看出来了,麻烦不在模型脑子里,在模板那层字符串胶水里。它没把控制 token 当普通文字锁住。

我在 DeepSeek 敲了一个 ,它开始自己跟自己说话

这也不是 DeepSeek 一家的毛病。许多模型都有自己的对话格式,早期 ChatML 有 <|im_start|>,Claude 旧格式也用过 Human / Assistant 这种分隔。

只是有些商业 API 把这层包起来了,用户摸不到原始模板。DeepSeek 把权重和配置放出来,这些后台路牌就明晃晃摆在文件里。

Trend Micro 去年的红队报告里有个更危险的例子。他们测的是 671B 的 DeepSeek-R1,问题出在 R1 默认就把思考过程放在 <think> 标签里展示。结果最终回答里没泄密,思考区反而把系统提示里的 API key 带了出来。

所后来面再看到模型突然抽风,我可能会先去翻它前面的模板。许多怪事,就卡在那层字符串胶水里。

那一行 <think> 撬开的,就是这一层。

© 版权声明

相关文章

暂无评论

none
暂无评论...