deepseek v4的系统指令原来是放在最新一条user消息的最后!

标题有点开玩笑了别介意。其实是最后一条user消息的最后插入system prompt可以极大概率影响思维链,导致看上去就是完美扮演了system prompt该有的作用。不过遵从概率并不是百分之百,而且最好是始终遵从系统指令放在最后的格式,如果中途崩坏有可能永远都救不回来了。 感觉这个dsv4的新...
deepseek v4的系统指令原来是放在最新一条user消息的最后!
deepseek v4的系统指令原来是放在最新一条user消息的最后!

标题有点开玩笑了别介意。其实是最后一条user消息的最后插入system prompt可以极大概率影响思维链,导致看上去就是完美扮演了system prompt该有的作用。不过遵从概率并不是百分之百,而且最好是始终遵从系统指令放在最后的格式,如果中途崩坏有可能永远都救不回来了。

感觉这个dsv4的新特性非常有意思,我已经有很多关于用这个新特性做agent的奇思妙想了,所以说旧的ClaudeCode、OpenCode这种系统指令放在最开头的agent已经不适配dsv4了?希望后续dsv4更新不要去掉这个特性,这个特性感觉完美适配ds100%命中缓存并且缓存不要钱并且1m上下文的特性,在agent里可以无限切换角色,直接把plan和当前status作为rp提示词注入到思维链中。

注意:

  • 此方法大概率可以解决工具调用的问题。
  • 并不是100%遵从,如果上下文有点冲突并且转换太快,有可能当前对话轮次不生效。
  • 多次注入系统指令后,永远以最新注入的那条生效,但是长上下文下注意力存在崩坏的可能,可能会以最后注意到的那条生效。
  • 并不是每条都必须注入,只是我演示的对话里每条都有而已,注入一次以后就可以稳定对话了,需要变更角色的时候再注入新的,然后后续不再注入依然可以稳定对话,已测试过。

两个对话都是deepseek v4 pro,未注入官方的max提示词,未测试过flash。

【对话1】尝试把指令摆放在中间和开头,导致模型完全不再遵从rp注入

https://chat.deepseek.com/share/4tbj0ypla0pd6iwze5

【对话2】重新手动fork,永远遵从系统指令在最后的情况,这次遵从性很好,但是有一次转变太快导致模型没有立即遵从。

https://chat.deepseek.com/share/rj0r0ig080gcxdb6if


ReAct注入

Pasted image 20260430094653

ClaudeCode的compact模拟

Pasted image 20260430094755

改变注入格式开始导致崩坏:系统提示放在中间位置了,虽然本次遵从了,但是下一次就开始崩坏,和对话2里那种转变太快的情况一致,都是在下一次才遵从。思维链我没展开,确实按要求没带入双方角色,如果不强调禁止带入,ds会自动带入助手角色进行分析(我自己单独开测试测过这个),之前看论文好像说如果带入的话评估会作弊。

Pasted image 20260430094828

开始崩坏,但不知道是我的提示词放在开头了导致的还是上一轮格式不对导致的

Pasted image 20260430095348

后续满足格式依然崩坏,注入系统指令完全失效

Pasted image 20260430095458

对话2中某个注入仅在第二轮次生效:我以前测过,是能直接生效的,不知道为什么现在又不生效了,可能太短了。

Pasted image 20260430095623

后续对话里全部满足指令在最后的格式,未出现崩坏情况:但是我才发现,他这个压缩用了之前的规则,也就是意图理解不到位,这种场景要显式要求他理解到本次输出不能默认引用以前的上下文。

Pasted image 20260430095758

5 个帖子 - 3 位参与者

阅读完整话题

来源: linux.do查看原文