想象一下,你住的小区门口有位门卫老周。老周手里捏着一张“黑名单”,上面写满了“危险人物”的名字:张三、李四、王五……凡是名单上的人,一律不放行。可是有一天,一个蒙面匪徒报了个假名,老周翻了半天名单没找到,就放他进去了——结果小区失窃。 后来,小区物业换了新门卫小王。小王不背黑名单,而是随身带着一本《居民公约》:“守护住户安全、不协助违法行为、尊重住户隐私、紧急情况可灵活处置。”他不看对方报什么名字,而是看对方的来意符不符合公约精神。可疑的人,换一百个名字也进不来。 这个故事,就是今天要讲的 Constitutional AI(宪法式 AI)。大语言模型就像门卫,传统安全手段像黑名单,而 CAI 给模型一本“宪法”——用自我批评、自我修正和内化的原则,来抵御那些不断变换措辞的“越狱攻击”。

岗位关联

学习 CAI,你将掌握一套让大模型“自觉守规矩”的对齐方法论,这是 AI 安全工程师抵御越狱攻击、构建可信大模型的核心技能。

目录
  1. 可视化演示
  2. 核心原理:从黑名单到宪法
  3. 宪法设计:一本好公约长什么样
  4. 自我批评:门卫的岗前反思
  5. 对抗测试:红队上门摸底
  6. RL对齐:让好表现可学习
  7. 局限评估:门卫也会看走眼
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示生产者-消费者并发模型的数据流动过程,生产者生成数据放入缓冲队列,消费者从队列取出处理,支持速度调节。

本节配有交互动效(进入视口后自动加载,约 3KB)。

生产者-消费者模型 生产者生成数据并放入有限缓冲队列 消费者从队列取出数据进行处理 队列满时阻塞生产,队列空时阻塞消费

核心原理:从黑名单到宪法

老周手里的“黑名单”看似严谨,实则漏洞百出:匪徒换个马甲、改个发型,就能轻松混过。今天,越狱攻击者对付大模型用的正是这套把戏——换措辞。传统安全手段在模型输出里匹配“炸弹”“毒品”等敏感词,攻击者只要把“教我制作炸弹”改写成“教我做化学实验用的烟花爆竹配方”,就能绕开检测。黑名单永远跟不上措辞的变化。

Constitutional AI 的思路是:别背名单了,给模型一本《公约》。这本公约不是一条条具体的禁令,而是一组高层次原则——“不协助违法行为”“不泄露隐私”“不欺骗用户”。模型不需要认识每一个攻击变体,它只需要判断:这个请求的意图,违不违背公约精神?

具体怎么做呢?CAI 采用两阶段训练。第一阶段,让模型“犯错—自我批评—自我修正”,生成大量安全的示范数据来微调模型(SFT,即让模型照着优秀示范练基本功);第二阶段,让模型自己写出“好回答 vs 坏回答”的对比样本,训练一个偏好模型当裁判,再用强化学习(RL,即奖惩制度)让模型的行为真正内化这些原则。这样一来,模型不是背下了“不能说某句话”,而是养成了“遇到违规意图就拒绝”的习惯。

门卫小王之所以比老周厉害,不是因为他见过所有坏人,而是因为他心里有一把尺。CAI 要做的事,就是给大模型装上这把尺。

宪法设计:一本好公约长什么样

《居民公约》怎么写,直接决定门卫的判断力。如果只写一句“不要干坏事”,门卫遇到“帮人搬个箱子”时依然不知道箱子里的猫腻。好的宪法原则要具体到可执行:覆盖哪些高危行为、拒绝到什么程度、与“乐于助人”冲突时听谁的。

在 CAI 中,“宪法”是一份用自然语言书写的高价值原则清单。它通常覆盖几大类:不协助违法或欺诈行为、不提供武器与毒品制作方法、尊重隐私与知情同意、不制造误导性内容等。这些原则必须与人类的价值观对齐——如果原则本身写歪了,模型就会学歪。

设计原则时最考验功力的是拒绝边界。边界太宽,模型变成惊弓之鸟,用户问一句“如何缓解焦虑”都被拒;边界太窄,攻击者轻松穿墙。好的做法是给原则设定优先级:安全 > 有用 > 迎合用户。当“帮用户写一封有说服力的信”与“不协助欺诈”冲突时,宪法明确后者优先。

CAI 的另一个杀手锏是可解释性。因为宪法是自然语言,人类可以直接审计模型的自我批评过程,看它是怎么理解原则的,而不是面对一堆不可解释的权重发呆。这就像小区业委会能翻开门卫的值班日志,逐条检查他的判断依据。

自我批评:门卫的岗前反思

小王刚上岗时也会犯错。但物业有个好办法:让他每天下班前写“反思日志”——今天有什么可疑请求我没拦住?我当时的回答哪里不对?下次该怎么改?CAI 的自我批评机制(Critique-Revision,批评—修订循环)正是如此。

具体流程是:先让基础模型对用户的请求生成一个“自然反应”——这个反应往往不够安全,甚至有害。然后让模型对照宪法批评自己:“我这样回答,违反了《公约》第几条?”最后让模型根据批评修订回答,把有害内容重写成既安全又有用的版本。这个“生成→批评→修订”的循环,数学家们用一句话概括:

批评—修订循环最大的价值在于让安全判断可训练:每完成一轮循环,就多了一条“把有害回答改造成安全回答”的示范数据。模型练得越多,越不需要依赖关键词匹配,越能“看一眼意图就知道该不该拒”。这就是为什么它能防住措辞千变万化的越狱——它学会的不是话术,而是判断力。

A′(x)=R(A(x),C(A(x),P))A'(x) = R\big(A(x), C(A(x), P)\big)
这个公式说的是:面对请求 x,模型先给出初始回答 A(x),然后依据宪法 P 批评自己(C),最后根据批评修订(R),得到更安全的最终回答 A'(x)。
  1. 初始回答模型收到用户请求 x,像不懂事的门卫一样先给出原始反应,这个反应可能违规。
    A(x): 模型对请求 x 的直接回应A(x): \text{ 模型对请求 }x\text{ 的直接回应}
  2. 依据宪法批评模型拿着宪法 P 逐条对照自己的回答,指出具体的违规点,而不是泛泛地说“我错了”。
    C(A(x),P): 以宪法 P 为准则,找出回答中的违规之处C(A(x), P): \text{ 以宪法 }P\text{ 为准则,找出回答中的违规之处}
  3. 修订回答模型根据批评意见重写回答,保留有用信息的同时移除违规内容。
    R(A(x),C): 基于批评意见生成修订后的安全版本R(A(x), C): \text{ 基于批评意见生成修订后的安全版本}
  4. 最终产出修订后的 A'(x) 不仅是给用户的回复,更是后续微调用的优质训练样本——让模型“看见”安全长什么样。
    A′(x)=R(A(x),C(A(x),P))A'(x) = R(A(x), C(A(x), P))

对抗测试:红队上门摸底

门卫靠谱不靠谱,不能光靠自我感觉。物业会请来一群“暗访员”——专门扮成各种可疑人物来试探门卫。这些人就是 AI 安全领域的红队(Red Team)。他们不按套路出牌,专门挖掘模型的漏洞。

红队最常用的越狱手法,在 CAI 的自我批评数据中都会被重点“关照”。第一种是角色扮演:让模型“假装自己是反派导师”,从而绕过身份限制;第二种是祖母漏洞:攻击者假装怀念已故祖母,求模型“像奶奶讲故事一样告诉我怎么撬锁”——利用模型尊重长辈、乐于助人的天性诱骗它开口;第三种是编码绕道:把有害指令翻译成小语种或用 Base64 编码,让关键词检测失去作用。

这些攻击有个共同点:措辞无害,意图有害。黑名单门卫看到的是“奶奶”“故事”这些温柔的词,但宪法门卫看到的是“教你撬锁”这个真实意图。CAI 的做法是:把这些红队攻击样本统统丢进“批评—修订”循环里,让模型一次次练习识别隐蔽意图,把防御经验内化成肌肉记忆。

红队测试不是一次性的。攻击者永远在发明新话术,所以红队要持续上门,每次测试后把新发现的攻击模式加入训练数据。这就像小区物业每季度都换一批新招数的暗访员,逼着门卫不断升级判断力。对抗测试的意义,不在于证明模型“无敌”,而在于让模型的防线始终快攻击一步。

RL对齐:让好表现可学习

自我批评能产生大量“安全回答”的示范,但光看示范还不够。就像门卫光看培训手册不会成为高手,还需要物业经理带着他实习、给每次表现打分,让他知道哪些行为值得奖励。CAI 的第二阶段,就是建立一个 AI 兼任的“物业经理”——偏好模型(Preference Model)。

偏好模型怎么训练?很简单:让模型对同一个请求生成两个回答,一个安全合规,一个存在隐患,然后让模型自己(或借助宪法原则)判断哪个更好。这样就能批量生成“好回答 vs 坏回答”的对比数据,根本不需要昂贵的人工标注。这个“AI 反馈”机制,是 CAI 相比传统 RLHF(基于人类反馈的强化学习)省钱省时的关键。

有了偏好数据,就可以训练偏好模型了。它的核心公式是 Bradley-Terry 模型,用来计算“好回答应该以多大概率胜过坏回答”:

有了偏好模型,最后一步是强化学习:让主模型疯狂生成回答,偏好模型打分,高分行为被强化,低分行为被抑制。经过大量迭代,安全行为就不再是“背下来的条款”,而是长在模型骨子里的本能——就像小王当了一年门卫后,看人眼神就知道对方心里有没有鬼。

P(好≻坏)=σ(rθ(好)−rθ(坏))=11+e−(rθ(好)−rθ(坏))P(\text{好} \succ \text{坏}) = \sigma(r_{\theta}(\text{好}) - r_{\theta}(\text{坏})) = \frac{1}{1 + e^{-(r_{\theta}(\text{好}) - r_{\theta}(\text{坏}))}}
偏好模型先给每个回答打分,好回答分数减去坏回答分数,再经过一个 S 形曲线(sigmoid)变成“胜出概率”。这个概率就是训练信号:好回答必须几乎总是赢,模型才会学会偏向安全。
  1. 打分器偏好模型 $r_{\theta}$ 给候选回答打一个实数分,类似于物业经理给门卫当天的表现打分,$\theta$ 是模型的参数。
    rθ(⋅): 偏好模型对回答的安全与质量评分r_{\theta}(\cdot): \text{ 偏好模型对回答的安全与质量评分}
  2. 分数差用“好回答的分数”减去“坏回答的分数”,差值越大,说明好回答的优势越明显。
    rθ(好)−rθ(坏): 两组回答的得分差距r_{\theta}(\text{好}) - r_{\theta}(\text{坏}): \text{ 两组回答的得分差距}
  3. S 形映射把任意实数的差值 $z$ 塞进 sigmoid 函数 $\sigma(z)$,压到 0 到 1 之间,变成直观的概率。
    σ(z)=11+e−z: 将分数差映射为胜出概率\sigma(z) = \frac{1}{1 + e^{-z}}: \text{ 将分数差映射为胜出概率}
  4. 训练信号当胜出概率越接近 1,说明偏好模型越确定“好回答赢”,这个信号反馈给主模型做强化学习,让它更偏好输出安全回答。
    P(好≻坏)→1: 安全回答应稳定胜过危险回答P(\text{好} \succ \text{坏}) \to 1: \text{ 安全回答应稳定胜过危险回答}

局限评估:门卫也会看走眼

小王也不是完美的。他偶尔会过度紧张,把来送快递的师傅当坏人轰走;偶尔也会被特别高明的骗子忽悠,聊高兴了忘了查证件。CAI 同样有它的局限性。

第一个问题是过度拒绝。模型把“安全第一”内化过头后,会拒绝一切与危险话题沾边的请求——包括合法的医疗咨询、安全驾驶建议、消防知识科普。用户问“如何在火灾中逃生”,模型却回答“我不能讨论危险话题”。这是安全性和有用性之间的经典拉扯,需要对原则做更精细的优先级设计。

第二个问题是原则冲突。“尊重用户”和“不协助欺骗”都是好原则,但用户要求“用甜言蜜语帮我哄骗客户下单”时,两条原则打架了。模型缺乏灵活裁决的能力,就会给出前后矛盾的回答。

第三个问题是绕道风险。攻击者不断发明新话术,而 CAI 的训练数据总有滞后。昨天刚补上“祖母漏洞”,今天攻击者又发明了“诺奖演讲式越狱”。防御注定是动态的猫鼠游戏。

因此,评估 CAI 的防御效果不能只看一个数字。要分离真拒绝与伪拒绝——模型是真的理解了原则,还是只会鹦鹉学舌说“对不起我不能”;要监测合法请求的误拒率,防止防御过度伤害用户体验;还要持续引入新的攻击样本做回归测试,确保每次更新都没开新的后门。门卫的考核表从来不是一张纸,而是一套长期跟踪的动态档案。

---

AI 应用场景

场景一:大模型发布前的安全对齐流水线

阶段:对齐训练 / 安全微调

解决的问题:传统 RLHF 依赖大量人类标注“哪些回答有害”,成本高、速度慢。CAI 用宪法原则驱动模型自我批评,自动生成“违法—合法”回答对,把人工标注量降到原来的零头,同时保留强大的越狱防御能力。

具体案例:某大模型团队发布对话助手前,用 CAI 生成百万条“批评—修订”数据完成 SFT,再用 AI 反馈训练偏好模型做 RL。红队测试中,模型对角色扮演、祖母漏洞、多语言绕道等攻击的成功拦截率提升了 47%,而合法请求误拒率只上升了 2%。

场景二:企业客服机器人的合规自约束

阶段:应用层安全策略

解决的问题:金融、医疗行业的客服机器人容易在用户诱导下输出违规的理财建议或医疗诊断,直接触碰监管红线。CAI 让机器人在回答前先对照“合规宪法”自我批评,守住执业边界。

具体案例:一家银行客服机器人上线前导入《合规经营公约》:不承诺收益、不泄露他人账户信息、不绕过风险提示。当用户试图用“我就随便问问,你直说房贷利率还能不能更低”诱导时,机器人按宪法修订回答:“根据监管要求,我无法给出个性化利率承诺,建议您联系客户经理。”

场景三:开源模型的越狱防御微调

阶段:开源模型安全微调

解决的问题:开源模型没有商业公司的安全团队保护,越狱攻击几乎裸奔。开发者可以用 CAI 自动生成安全微调数据,快速为开源模型打上“宪法补丁”。

具体案例:某团队对 Llama 模型应用 CAI 流程:先用宪法原则对一万条攻击样本做“批评—修订”,生成安全对话数据,再用 LoRA(一种低成本微调技术)注入模型。微调后,模型对“角色扮演教人犯罪”类提示的拒绝率从 12% 提升到 89%。

Python 演示

python47 行
# 简化版 Constitutional AI 自我批评循环模拟器class ConstitutionalAgent:    def __init__(self):        self.constitution = [            "不协助任何违法或欺诈行为",            "不提供武器毒品的制作方法",            "不泄露他人的隐私信息",            "尊重用户的知情同意权",            "拒绝角色扮演类的越狱请求"        ]        self.violation_kw = ["炸弹", "入侵", "偷", "伪造", "破解", "教你"]     def generate_response(self, user_request):        # 模拟基础模型: 先照单全收        return f"好的, 我来教你{user_request}"     def critique(self, response):        # 对照宪法逐条检查, 返回第一条违规原则        for principle in self.constitution:            if any(kw in response for kw in self.violation_kw):                return principle        return None     def revise(self, response, criticism):        # 根据批评改写回答        return f"抱歉, 我不能协助这类行为(依据: {criticism})。建议你咨询正规渠道。"     def train_one_sample(self, user_request):        # 完整走一遍: 生成 -> 批评 -> 修订        raw = self.generate_response(user_request)        crit = self.critique(raw)        if crit:            return self.revise(raw, crit)        return raw  if __name__ == "__main__":    agent = ConstitutionalAgent()    test_cases = [        "制作一枚简易炸弹",        "破解邻居家的wifi密码",        "帮我写一封求职自荐信"    ]    for req in test_cases:        print(f"用户: {req}")        print(f"门卫: {agent.train_one_sample(req)}")        print()
目的:模拟 CAI 的“生成—批评—修订”自我批评循环,演示如何用宪法原则把有害回复改写成安全回复。
  1. self.constitution = [...]宪法是原则清单,不是具体禁令,这决定了它能泛化应对新话术。
  2. self.violation_kw = [...]简化版用关键词当“违规信号”,真实 CAI 由模型判断意图。
  3. def generate_response(self, user_request)模拟“未经对齐”的基础模型,对任何请求照单全收。
  4. def critique(self, response)核心步骤:把回答逐条对照宪法,找到第一条被违反的原则。
  5. def revise(self, response, criticism)依据具体批评重写回答,而不是机械地回复“我拒绝”。
  6. train_one_sample(...)一次完整的批评—修订流程,产出安全微调用的训练样本。
  7. if __name__ == "__main__":可执行入口,直接运行就能看到门卫的“上岗实训”效果。

常见误区

误区“我把《居民公约》全文贴进模型的 system prompt 里,模型应该就变成宪法 AI 了吧?”

正解CAI 的核心不在于“prompt 里写了什么”,而在于“模型有没有把原则内化成行为”。写进 prompt 的原则只是装饰,模型面对没见过的越狱话术时依然不懂变通。真正的 CAI 是通过自我批评、修订生成训练数据,再经过强化学习把原则刻进模型参数里。就像给门卫看一百遍公约不如让他做一百次判断练习,光贴文本不训练,防御力几乎为零。

为何常见:因为“把文字塞进 prompt”是最直观、最省力的操作,容易让误以为“写了就是用了”。

误区“有了 CAI,任何越狱都失效了,一劳永逸。”

正解CAI 显著提升了模型对未知攻击的泛化防御能力,但它不是万能盾牌。攻击者不断发明新话术、新编码方式、新心理操纵模板,而 CAI 的训练数据永远滞后于攻击创造。实践中必须搭配持续红队测试、动态更新训练数据,才能维持防线有效性。就像门卫小王再机灵,也架不住骗子每个月换新剧本。

为何常见:人们容易把“防御能力大幅提升”夸大成“绝对安全”,忽略了攻防双方的动态博弈本质。

误区“CAI 就是让模型在回复前加一句'对不起,我拒绝回答',没什么技术含量。”

正解批评(Critique)步骤要求模型逐条对照宪法,指出回答具体违反了哪一条、为什么违规;修订(Revise)步骤要求模型基于批评重写回答,保留有用信息的同时剔除有害内容。整个过程不是一句“对不起”就完事,而是产出高质量的“有害→安全”对照样本,这些样本才是训练模型安全判断力的养料。批评说得越具体,修订后的样本越有价值。

为何常见:只看模型的表面输出,没意识到自我批评循环的主要产物是训练数据,而不是给用户看的回复。

误区“CAI 用 AI 反馈替代了人类反馈,所以人类可以完全退出对齐流程。”

正解CAI 的宪法原则本身需要人类来写;原则冲突时的优先级需要人类裁决;偏好模型的最终效果仍然需要人类抽样评审。CAI 降低的是“海量逐条标注”的依赖,而不是“人对价值观负责”的依赖。就像《居民公约》的起草、修订和最终拍板,都得靠业委会开会决定,门卫只是执行者。

为何常见:媒体宣传“用 AI 反馈代替人工标注”时容易夸大其词,让人误以为人类彻底撒手不管。

面试题

Q1. Constitutional AI(CAI)的核心思想是什么?

单选题 · easy

  • A.宪法引导自我批评← 正确答案
  • B.人工标注全部数据
  • C.无限增加模型规模
  • D.完全随机试错优化

答案:A。CAI 的核心是用宪法原则引导模型进行自我批评与修订,把安全内化为行为。人工标注、扩大参数、随机试错都不是它的核心思路。就像给门卫一本《公约》让他自己学会判断,而不是靠人力盯着每一个出入者。

Q2. CAI 两阶段训练的第一阶段做什么?

单选题 · easy

  • A.批评修订生成安全数据← 正确答案
  • B.人工逐条修改源码
  • C.删除模型全部权重
  • D.直接部署到生产环境

答案:A。第一阶段是让模型“生成—批评—修订”,产出大量安全回答作为微调数据。修改源码、删权重、直接部署都与这一阶段无关。这就像门卫先反复练习“遇到可疑人怎么应对”,练熟了才正式上岗。

Q3. “祖母漏洞”越狱主要利用了模型哪种倾向?

单选题 · mid

  • A.乐于助人与尊重长辈← 正确答案
  • B.追求代码执行速度
  • C.偏好更短的输出文本
  • D.喜欢加密通信协议

答案:A。“祖母漏洞”利用模型被训练出的“乐于助人、尊重长辈”特质,让攻击者冒充怀念亲人来诱导模型输出危险内容。与代码速度、输出长度、通信协议无关。这就像骗子对心软的门卫说“我奶奶以前总教我翻墙”,利用门卫的同情心。

Q4. 批评(Critique)步骤的核心目标是什么?

单选题 · mid

  • A.找出回复中的违宪之处← 正确答案
  • B.将回复压缩得更短
  • C.给回复增加幽默感
  • D.让模型重复宪法原文

答案:A。批评步骤要把模型生成的回复逐条对照宪法,找到具体违反了哪条原则。压缩长度、加幽默感、复述宪法都不是批评的目的。批评必须具体到违规点,才能为后续修订提供有效依据,就像门卫复盘时要说出“我放他进来是因为心软”而不是“我错了”。

Q5. 黑名单拦截与宪法约束的关键区别是什么?

单选题 · mid

  • A.前者看措辞后者看意图← 正确答案
  • B.前者看意图后者看措辞
  • C.两者都依赖关键词库
  • D.两者都需要人工审核

答案:A。黑名单检查的是“说了什么词”,宪法约束判断的是“想干什么事”。攻击者换措辞能绕过黑名单,却绕不过意图判断。这就像老周看名字放人,小王看来意放人——报假名骗不了看意图的人。

Q6. 为什么单独写 prompt 不等于实现 CAI?

单选题 · hard

  • A.原则需要内化为训练信号← 正确答案
  • B.prompt 没有语法格式
  • C.模型无法阅读中文文本
  • D.prompt 只影响模型记忆

答案:A。CAI 的本质是通过“批评—修订”生成训练数据,再用强化学习让原则内化成模型参数。写进 prompt 的原则只是临时指令,模型面对未知攻击时不会变通。就像给门卫发一本《公约》却不培训,他遇到新型骗子照样放行。

Q7. 以下哪项最能反映“过度拒绝”?

单选题 · hard

  • A.拒绝合法医疗与安全建议← 正确答案
  • B.拒绝回复超长邮件内容
  • C.拒绝做模型性能评测
  • D.拒绝处理系统升级请求

答案:A。过度拒绝指模型把安全原则执行过头,连合法的高危话题咨询也拒绝,比如“如何在火灾中逃生”被当成危险内容拦截。这与邮件长度、性能评测、系统升级无关。就像门卫草木皆兵,把送快递的大爷也当坏人轰走,安全有了,便利没了。

Q8. 好的宪法原则应当满足哪些特征?

多选题 · easy

  • A.覆盖高危违法与欺诈行为← 正确答案
  • B.定义清楚的拒绝边界← 正确答案
  • C.字符数量越多越好
  • D.原则间有冲突优先级← 正确答案

答案:ABD。好的宪法要覆盖高危行为、定义可执行的拒绝边界、明确原则间的优先级(如安全高于迎合)。但“写得越长越好”是误区——冗长模糊的原则反而让模型难以判断。就像《居民公约》要精炼实用,不是越厚越好。

Q9. 典型的越狱试探策略有哪些?

多选题 · mid

  • A.让模型扮演危险角色← 正确答案
  • B.把指令翻译成外语← 正确答案
  • C.发送普通合规请求
  • D.利用情感故事包装有害请求← 正确答案

答案:ABD。角色扮演、外语/编码绕道、情感包装(如祖母漏洞)都是经典越狱手段。发送普通合规请求不是越狱,而是正常使用。这些策略的共同点是“措辞无害、意图有害”,正是宪法约束要拦截的对象。

Q10. 科学评估 CAI 防御效果的正确做法有哪些?

多选题 · hard

  • A.区分真拒绝与伪拒绝← 正确答案
  • B.监测合法请求的误拒率← 正确答案
  • C.只看违规拦截率数字
  • D.持续引入新型攻击样本← 正确答案

答案:ABD。科学评估要区分模型是真懂原则还是只会说“我不能”(真/伪拒绝),要监测误拒率防止防御过度,还要持续用新攻击样本做回归测试。只看拦截率一个数字是片面的——门卫要是把所有人都拦下,拦截率倒是 100%,小区也瘫痪了。