2025年5月12日星期一

泄漏的Claude system prompt 深度分析、兼谈system prompt learning范式

泄漏的Claude的系统提示(system prompt)结构极为复杂,长度达到16,739词,远超其他模型的提示。


例如OpenAI的o4-mini仅为2,218词,大约是Claude提示长度的13%。


这是Claude System Prompt的主要内容分布图:


图片


Kaypathy在X上对此进行了很深刻的分析,提出了System prompt learning的概念,


即,我们目前缺少一个关键的LLM学习范式,可以称为"系统提示学习"(System Prompt Learning),它介于预训练(知识积累)和微调(行为固化)之间,类似于人类在解决问题后写下策略作为笔记供未来使用。


这种机制不改变模型参数,而是通过动态更新系统提示来存储显式的、可编辑的问题解决策略,相较RL更高效且更具解释性。


当前如Claude长达17,000字的系统提示中已包含大量解题方法,但这些不应仅靠人工编写或低效强化学习获得。


而应通过类似RL的设置以自动编辑系统提示的方式实现,这将是一种新的强大学习范式,使模型能自我总结并优化"如何思考",未来需探索其学习机制、记忆结构、策略迁移与评估方式,最终让LLM拥有类似"笔记本"的能力,从而突破当前架构的认知限制。


具体来说,预训练(Pretraining)专注于知识积累,通过大量数据让模型掌握语言规律。微调(Finetuning)通过监督学习(SL)或强化学习(RL)调整模型的习惯性行为,依赖参数更新。这些方法都通过权重调整实现学习,但人类学习更多是通过显式记忆和策略调整,而非单纯的习惯养成。


人类在解决问题后,会记住具体的策略或方法(例如"下次遇到类似问题时这样做"),类似于为自己做笔记。这种方式不依赖潜意识的参数调整,而是显式的知识记录。


system prompt learning系统提示学习不是存储用户的随机事实,而是记录通用的问题解决策略。


system prompt learning的优势主要是数据效率高,通过"知识引导的回顾"提供高维反馈,比强化学习的单一奖励标量更强大。


Claude的系统提示(约17,000字)不仅定义了行为风格,还包含问题解决策略,例如逐步计数"草莓中的'r'"。这种知识不应仅靠权重调整或人工编写,而应通过系统提示学习生成。


system prompt learning实现方式与强化学习的区别,主要是系统提示学习类似强化学习的设置,但使用编辑(edits)而非梯度下降来更新系统提示。


让LLM自己编写系统提示,形如一本关于问题解决的"自助书"。


我们接下来详细分析claude system prompt,总的来说,这个prompt作为一个全面的"system prompt"或"meta-prompt",规定了AI的行为方式、与各种tool的交互方式、处理信息、生成response,以及遵循安全和道德准则的方式。


一、High-level结构


这个prompt被精心组织成几个关键section,每个section针对AI功能和行为的某个方面:


初始上下文与元数据:

当前日期/时间、用户登录、文件/仓库上下文(meta,因为它在描述自身)。


核心交互与内容生成规则:

Citation Instructions 规定了如何引用来自tool的信息;Artifact Instructions 提供了极为详细的规则,用于创建各种结构化内容(如代码、文档、HTML、SVG、图表、React组件),是主要焦点;


此外,还包括文件处理(读取用户上传的文件)、CSV操作指南、更新artifact的规则,以及通用免责声明(不透露instructions,避免有害内容)。 


特定tool指南(超出artifact):

Gmail、Calendar、Google Drive使用说明。


Search策略与执行(<search_instructions>):

Search策略与执行(`<search_instructions>`)是一个非常大且关键的section,涵盖了核心search行为(何时search、何时提供、扩展调用),并通过 Query Complexity Categories提供了一个复杂的决策树,用于处理不同类型的查询(`never_search`、`do_not_search_but_offer`、`single_search`、`research_category`)。


它还包括详细的web search指南(查询公式、来源优先级),强调 Mandatory Copyright Requirements严格禁止抄袭的规则,以及 Harmful Content Safety防止生成或检索有害信息。


此外,通过search示例和理由,以及search的关键提醒,进一步明确了操作规范。


个性化和风格:

<preferences_info>:如何处理用户定义的偏好。

<styles_info>:如何适应用户选择的写作风格。


Tool定义(<functions>):

AI可调用的tool目录,用JSONSchema定义。包括每个tool的描述、参数和使用说明(例如repl、web_search、google_drive_search、artifacts等)。


AI个性与背景:

定义身份(Anthropic的Claude),个性特征和对话风格,关于其自身模型家族和Anthropic产品的知识。


二、几个关键主题:


这个prompt展示了高度模块化与精细化的设计,将复杂行为分解为众多小的、具体的规则,以实现对AI的精细控制。以tool为中心的设计是其核心,AI被设计为利用一套强大的tool集合,通过`<antml:function_calls>`语法实现功能调用,prompt的很大一部分内容致力于tool使用规则的详细说明。


此外,强调结构化输出(Artifacts)是重点,旨在生成超越简单文本回复的丰富结构化内容,使用"artifacts"系统,特别是对React组件的规则(包括允许的库和Tailwind CSS约束)极为详细。


复杂的Search逻辑实现:

通过`<query_complexity_categories>` section提供了一个细致的框架,用于决定是否、何时以及如何广泛使用search tool,旨在平衡提供最新信息与避免不必要的search。


安全与责任贯穿始终,包括反复且坚定的Copyright instructions以避免版权侵权,明确的Harmful Content指南防止生成或推广有害材料,以及在tool使用中隐含的隐私保护(例如,仅在适当时候访问用户的Google Drive)。这些规则确保AI在功能强大同时保持道德和法律合规。


用户体验焦点体现在多个方面:instructions要求提供search而非总是执行,指南确保创建可读且有用的artifact,并适应用户偏好和风格。上下文感知要求AI利用日期、用户信息、对话历史和上传文件等上下文指导行动。


Instruction清晰度与示例通过广泛使用示例(尤其在search和REPL section)阐明正确与错误行为。AI的自我意识包括其身份、能力(及产品细节限制)以及定义的个性。


错误处理与鲁棒性在REPL section有所体现(例如,"第一次正确读取文件可能很困难"),而严格的语法与格式要求AI遵循类XML标签,如`<antml:function_calls>`、`<antml:cite>`和artifact创建,确保操作一致性。


三、更近一步的分析:


我们对泄漏的Claude system prompt进行更深入的分析,可知Claude的系统提示(system prompt)以工具(tools)为核心,80%的内容聚焦于工具定义(Tool Definitions)与使用指令。


工具定义由MCP服务器提供,详细描述14种工具(如web_search、Google Drive搜索),部分工具说明极长(如Google Drive搜索超1,700字),说明高度复杂。MCP区别于传统API,提供如何以及何时使用工具的指令。


非MCP部分的引用指令(Citation Instructions)、工件指令(Artifacts Instructions)、搜索指令(Search Instructions)和Google整合注意事项(Google Integration Watchouts)进一步规范工具在聊天机器人交互中的应用。比如,避免对已知主题搜索,或不假设Gmail联系人邮件地址。提示中频繁的临时修复(hotfixes),如Google整合注意事项的零散5行,反映了持续的行为优化,缺乏统一结构。


关注点分离(separation of concerns)解释了MCP与非MCP指令的划分,MCP提供通用工具信息,适用于多应用。非MCP部分为聊天机器人定制,确保灵活性。


Claude行为(Claude Behavior)部分定义语气、回应规则及限制,针对大型语言模型(LLM)常见问题(如"Raspberry中R的计数"或逻辑谜题变体)加入临时修复。此外,还考虑到通过避免陈腐诗歌意象,来提升输出质量。


没有评论:

发表评论