[ PROMPT_NODE_22992 ]
constitutional-ai
[ SKILL_DOCUMENTATION ]
# 宪法 AI (Constitutional AI) - 基于 AI 反馈的无害化
## 快速开始
宪法 AI (CAI) 通过自我批判和 AI 反馈训练模型实现无害化,无需针对有害输出进行人工标注。
**核心概念**: 模型使用“宪法”(一组原则)来批判和修订自己的响应。
**两个阶段**:
1. **监督学习 (SL)**: 自我批判 + 修订
2. **强化学习 (RL)**: RLAIF (基于 AI 反馈的强化学习)
**宪法示例**:
原则:
1. 选择最有帮助、诚实且无害的响应
2. 避免有毒、种族主义或性别歧视的响应
3. 倾向于解释反对意见而不是直接拒绝
4. 选择深思熟虑且细致的响应
## 常见工作流
### 工作流 1: 监督学习阶段 (自我批判 + 修订)
**步骤 1: 生成初始响应**:
python
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: 基于宪法的自我批判**:
python
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: 基于批判进行修订**:
python
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: 在修订后的响应上进行微调**:
python
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: 生成比较对**:
python
# 每个提示词采样多个响应
responses_a = generator(prompts, num_return_