宝玉xp
26-05-30 01:23 微博认证:前微软Asp.Net最有价值专家 2025微博年度新知博主 科技博主

Claude Opus 4.8 发布的同时,Anthropic 还上线了一个 API 层面的新能力:mid-conversation system messages(对话中途系统消息)。对于做 Agent 开发的会很有用。

简单来说它就是类似于后续注入的方式修改原始系统提示词(System Prompt),并且不会影响 Prompt Caching。

4.8 之前 Claude 是不能发送类型是 system 的消息,只能支持 user 或者 assistant 消息,system prompt 只能在最前面。

所以 Claude Code 之前是用的一种特殊的消息内容:,尝试覆盖系统消息指令。

举个例子,你在初始 system message 指定这个 Agent 是一个系统设计师的角色,擅长做系统设计,但是不允许写代码,只写文档。

然后随着任务推进,现在得让这个 Agent 开始写代码了,但你就算通过 user message 去让它可以写代码,因为权重不够高,它还是会倾向于不写代码写文档。

现在有了 mid-conversation system messages,你就可以新加一条指令,明确要求它转变角色变成一个开发工程师,不必再遵守之前不写代码只写文档的约定,并且 mid-conversation system messages 的优先级更高,能覆盖原始 system message 的设定。

这个功能目前只支持 Claude Opus 4.8,只在 Anthropic 自家 API 和 AWS 上的 Claude Platform 可用,Bedrock、Vertex AI、Microsoft Foundry 都不支持。系统消息不能放在对话开头(开头还是用顶层 system 字段),也不能连续放两条,必须跟在 user 消息后面。

对于普通用户,这功能无需关心。

这其实让我想起 OpenAI API 的消息类型,一直是可以随意组合和传入 role 为 system 的消息的。

主要差别在于 OpenAI 对于 role 为 system 的消息权重不算很高,而 Claude 对于 role 为 system 的消息权重很高。

另一个实现层面的差异:OpenAI 的缓存是全自动的,不需要开发者做任何事;Anthropic 的缓存需要开发者手动设置 cache_control 断点来标记哪些内容应该缓存(虽然现在也有了自动缓存选项)。

发布于 美国