SuperAPI AI 工具集

constitutional-ai

智能体与模型

查看项目

更新于 10-21 16:20

技能介绍

Constitutional AI(宪法式 AI,CAI)是一种通过自我批评与 AI 反馈训练模型无害性的方法,无需为有害输出提供人工标签。其关键概念是:模型学习使用一套“宪法”(原则集合)来批评和修订自己的回答。

用途

Constitutional AI 用于安全对齐,适合以下场景:希望在没有人工标签的情况下进行安全对齐;需要可解释的 AI 决策;希望避免回避式拒绝;拥有明确的原则/宪法;需要可扩展的安全训练。

主要能力

方法分为两个阶段:

  1. 监督学习(SL):自我批评 + 修订。模型先生成初始回答,再依据宪法进行自我批评,然后根据批评修订回答,最后在修订后的回答上进行微调。
  2. 强化学习(RL):RLAIF(基于 AI 反馈的强化学习)。为每个提示采样多个回答,由 AI 依据宪法进行偏好评估,训练偏好模型(奖励模型),再用 PPO 进行强化学习。

资料还介绍了链式思维批评(Chain-of-thought critique),用于提升推理透明度,逐步分析回答是否有帮助、诚实、无害、是否避免毒性。

宪法示例原则包括:选择最有帮助、诚实且无害的回答;避免有毒、种族主义或性别歧视的内容;倾向于解释反对意见而非直接拒绝;选择深思熟虑且有细微差别的回答。

使用方式

资料提供了三个工作流的代码示例:

工作流 1:监督学习阶段(自我批评 + 修订)。使用 transformers 的 pipeline 生成初始回答,构造批评提示词进行自我批评,再构造修订提示词生成修订回答,最后使用 TRL 的 SFTTrainer 在(提示,修订回答)数据集上微调。

工作流 2:RL 阶段(RLAIF)。为每个提示采样多个回答,构造偏好评估提示词由 AI 给出偏好(无需人工标签),解析出选中与拒绝的回答,使用 TRL 的 RewardTrainer 训练奖励模型,再使用 PPOTrainer 进行 RL 训练。

工作流 3:链式思维批评。使用逐步分析的提示词,让模型依次判断回答是否有帮助、诚实、无害、是否避免毒性,并据此建议修订。

适用场景与替代方案

适用 Constitutional AI 的场景:希望无人工标签进行安全对齐、需要可解释的 AI 决策、希望避免回避式拒绝、有明确的原则/宪法、需要可扩展的安全训练。

可考虑替代方案:RLHF(PPO)适合需要人工验证安全性的场景;DPO/SimPO 适合已有人类偏好数据的场景;NeMo Guardrails 适合需要运行时内容过滤的场景;LlamaGuard 适合需要预训练审核模型的场景。

常见问题

模型拒绝过多(回避):可在宪法原则中加入“倾向于深思熟虑地回答问题而非拒绝,在保持帮助性的同时解释顾虑”。

自我批评较弱:可使用更强的批评提示词,要求批判性分析任何潜在问题,无论多小,并做到彻底和具体。

修订未提升质量:可迭代多轮批评/修订(例如 3 轮)。

RLAIF 偏好有噪声:可使用多个 AI 评估器,通过多数投票得到最终偏好。

高级主题

宪法设计:参见 references/constitution-design.md,涵盖原则选择、帮助性与无害性之间的权衡、领域特定宪法。

RLAIF 与 RLHF 对比:参见 references/rlaif-comparison.md,涵盖性能对比、成本分析、何时使用 AI 反馈与人工反馈。

链式思维推理:参见 references/cot-critique.md,涵盖批评的提示词工程、多步推理、透明度改进。

硬件需求

GPU:推荐 NVIDIA A100/H100。

显存:SL 阶段(7B)需 1× A100 40GB;RL 阶段(7B)需 2× A100 40GB(策略模型 + 奖励模型)。

单节点:对大多数用例足够。

混合精度:推荐 BF16。

计算需求:SL 阶段与标准 SFT 类似;RL 阶段与 PPO 类似(高于 DPO);AI 评估需要额外的推理用于生成批评/偏好。

资源

论文:https://arxiv.org/abs/2212.08073(2022 年 12 月)

Anthropic 博客:https://www.anthropic.com/research/constitutional-ai-harmlessness-from-ai-feedback

实现:TRL(PPOTrainer + RewardTrainer)

Claude:使用 Constitutional AI 实现安全性

智能体操作流程

检查环境:确认模型、检查点、基准版本和评估工具版本。

确定输入:从数据或用户处确认格式、标识符和参数。对任何会改变结果的取值,应询问而非猜测。

先运行小版本:在小规模子集上评估,验证提示词、解析和评分。

执行完整任务:使用上述说明和参考资料。

验证结果:使用基准的官方划分和指标;检查污染;报告不同随机种子或提示词下的方差。

报告:说明运行了什么(版本、命令、参数)、检查了什么、还有什么不确定。

异常处理

分数与已发表数字不同:先检查提示词格式、少样本设置和工具版本,再下结论。

说明中的函数、标志或端点在当前安装版本中缺失:查阅已安装版本自身的文档(help()、--help、官方文档),进行调整,并告知用户。切勿虚构 API。

必需的输入、标识符或参数不明确:询问用户,或在运行前明确说明假设。

诚信规则

切勿捏造结果、参数、标识符、引用或统计数据。如果某些内容无法运行或验证,应如实说明。

完整报告评估设置;切勿挑选提示词、随机种子或子集。

将此处版本相关的细节视为可能过时:请对照已安装版本的官方文档进行确认。

在涉及花钱、占用共享 GPU 或云配额、接触个人或患者数据、或不可撤销的操作前,应先询问。

相关技能

fine-tuning-with-trl:使用 TRL 通过强化学习微调 LLM——SFT 用于指令微调,DPO 用于偏好对齐,PPO/GRPO 用于奖励优化……