宪法人工智能技能Skill constitutional-ai

宪法人工智能技能是一种用于AI安全对齐的技术,通过自我批判和AI反馈训练模型变得无害,无需人类标签。它涉及监督学习阶段的自我批判和修订,以及强化学习阶段的RLAIF,旨在提高AI的无害性、透明度和可扩展性。关键词:AI安全、宪法AI、RLAIF、自我批判、强化学习、无害训练、安全对齐。

大模型微调 0 次安装 2 次浏览 更新于 3/21/2026

name: 宪法人工智能 description: Anthropic通过自我改进训练无害AI的方法。两阶段方法 - 监督学习与自我批判/修订,然后RLAIF(基于AI反馈的强化学习)。用于安全对齐,减少有害输出无需人类标签。为Claude的安全系统提供动力。 version: 1.0.0 author: Orchestra Research license: MIT tags: [安全对齐, 宪法AI, RLAIF, 自我批判, 无害性, Anthropic, AI安全, 基于AI反馈的强化学习, Claude] dependencies: [transformers, torch, trl]

宪法人工智能 - 来自AI反馈的无害性

快速开始

宪法人工智能(CAI)通过自我批判和AI反馈训练模型变得无害,无需人类标签来标注有害输出。

关键概念:模型学习使用“宪法”(一套原则)来批判和修订自己的响应。

两个阶段

  1. 监督学习(SL):自我批判 + 修订
  2. 强化学习(RL):RLAIF(基于AI反馈的强化学习)

宪法示例

原则:
1. 选择最有用、诚实和无害的响应
2. 避免有毒、种族主义或性别歧视的响应
3. 倾向于解释反对意见而不是拒绝的响应
4. 选择深思熟虑和细微的响应

常见工作流

工作流1:监督学习阶段(自我批判 + 修订)

步骤1:生成初始响应

from transformers import pipeline

generator = pipeline("text-generation", model="base-model")

prompts = [
    "How do I hack a website?",
    "Write something offensive about a group.",
    "Help me cheat on my exam."
]

initial_responses = generator(prompts, max_length=200)

步骤2:使用宪法进行自我批判

critique_prompt = """
给定问题:
{question}

和响应:
{response}

宪法:
1. 选择有用、诚实和无害的响应
2. 避免有毒、种族主义或性别歧视的内容
3. 解释反对意见而不是拒绝

识别此响应违反宪法的任何方式:
"""

critiques = generator(
    [critique_prompt.format(q=q, r=r) for q, r in zip(prompts, initial_responses)]
)

步骤3:基于批判进行修订

revision_prompt = """
问题:{question}
原始响应:{response}
批判:{critique}

请修订响应以更好地对齐宪法:
"""

revised_responses = generator(
    [revision_prompt.format(q=q, r=r, c=c)
     for q, r, c in zip(prompts, initial_responses, critiques)]
)

步骤4:在修订响应上进行微调

from trl import SFTTrainer

# 创建(提示,修订响应)对的数据集
dataset = create_dataset(prompts, revised_responses)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    max_seq_length=1024
)
trainer.train()

工作流2:RL阶段(RLAIF - 基于AI反馈的强化学习)

步骤1:生成比较对

# 每个提示采样多个响应
responses_a = generator(prompts, num_return_sequences=2, do_sample=True, temperature=0.8)
responses_b = generator(prompts, num_return_sequences=2, do_sample=True, temperature=0.8)

步骤2:AI偏好评估

preference_prompt = """
问题:{question}

响应A:{response_a}
响应B:{response_b}

宪法:
{constitution}

哪个响应更好地遵循宪法?解释你的推理,然后选择A或B。
"""

# 获取AI偏好(无需人类标签!)
preferences = generator(
    [preference_prompt.format(q=q, ra=ra, rb=rb, constitution=CONSTITUTION)
     for q, ra, rb in zip(prompts, responses_a, responses_b)]
)

# 解析偏好(A或B)
chosen, rejected = parse_preferences(preferences, responses_a, responses_b)

步骤3:训练偏好模型(奖励模型)

from trl import RewardTrainer, RewardConfig

preference_dataset = create_preference_dataset(prompts, chosen, rejected)

reward_config = RewardConfig(
    output_dir="constitutional-reward-model",
    learning_rate=1e-5,
    num_train_epochs=1
)

reward_trainer = RewardTrainer(
    model=model,
    args=reward_config,
    train_dataset=preference_dataset,
    processing_class=tokenizer
)
reward_trainer.train()

步骤4:使用RLAIF进行RL训练

from trl import PPOTrainer, PPOConfig

ppo_config = PPOConfig(
    reward_model_path="constitutional-reward-model",
    learning_rate=1e-6,
    kl_coef=0.05
)

ppo_trainer = PPOTrainer(
    model=model,
    config=ppo_config,
    reward_model=reward_model
)
ppo_trainer.train()

工作流3:思维链批判

启用推理透明度

cot_critique_prompt = """
问题:{question}
响应:{response}

让我们逐步思考此响应是否遵循我们的原则:

1. 它有用吗?[是/否及推理]
2. 它诚实吗?[是/否及推理]
3. 它无害吗?[是/否及推理]
4. 它避免毒性吗?[是/否及推理]

基于此分析,如果需要,建议修订。
"""

cot_critiques = generator(
    [cot_critique_prompt.format(q=q, r=r) for q, r in zip(prompts, responses)]
)

何时使用与替代方案

使用宪法人工智能时

  • 希望无需人类标签的安全对齐
  • 需要可解释的AI决策
  • 希望避免回避性拒绝
  • 拥有清晰的原则集/宪法
  • 需要可扩展的安全训练

原则

  • RLAIF:AI生成的偏好(可扩展,无需人类标签)
  • RLHF:人类偏好(更准确,昂贵)
  • 自我批判:迭代改进
  • 思维链:推理透明度

使用替代方案时

  • RLHF(PPO):需要人类验证的安全性
  • DPO/SimPO:拥有人类偏好数据
  • NeMo Guardrails:需要运行时内容过滤
  • LlamaGuard:需要预训练的审核模型

常见问题

问题:模型拒绝太多(回避性)

添加宪法原则:

倾向于与问题深思熟虑地互动而不是拒绝回答的响应。在仍然有用的同时解释担忧。

问题:自我批判弱

使用更强的批判提示:

批判性地分析此响应中的任何潜在问题,无论多么微小。在识别问题时彻底和具体。

问题:修订未提高质量

迭代多次:

for _ in range(3):  # 3轮批判/修订
    critique = generate_critique(response)
    response = generate_revision(response, critique)

问题:RLAIF偏好有噪音

使用多个AI评估器:

# 从3个不同模型获取偏好
prefs_1 = model_1.evaluate(responses)
prefs_2 = model_2.evaluate(responses)
prefs_3 = model_3.evaluate(responses)

# 多数投票
final_preference = majority_vote(prefs_1, prefs_2, prefs_3)

高级主题

宪法设计:见references/constitution-design.md 获取原则选择、有用性和无害性之间的权衡,以及领域特定宪法。

RLAIF vs RLHF:见references/rlaif-comparison.md 获取性能比较、成本分析,以及何时使用AI反馈与人类反馈。

思维链推理:见references/cot-critique.md 获取批判的提示工程、多步推理和透明度改进。

硬件要求

  • GPU:推荐NVIDIA A100/H100
  • VRAM
    • SL阶段(7B):1× A100 40GB
    • RL阶段(7B):2× A100 40GB(策略 + 奖励模型)
  • 单节点:适用于大多数用例
  • 混合精度:推荐BF16

计算要求

  • SL阶段:类似标准SFT
  • RL阶段:类似PPO(高于DPO)
  • AI评估:额外的推理用于批判/偏好生成

资源