Skip to main content
skill CX Codex

constitutional-ai — Claude Code skill: training harmless models

A skill for training models to behave harmlessly through self-critique and AI feedback, with no human labels needed.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Orchestra-Research/AI-Research-SKILLs --skill constitutional-ai -a claude-code
Open on GitHub

What constitutional-ai does

Constitutional AI is Anthropic's method where a model critiques and rewrites its own answers against a set of principles, then learns from preferences scored by another AI. The skill walks through both phases: supervised learning on the revised answers, then RLAIF — reinforcement learning from AI feedback.

Three workflows are covered. First: generate responses, self-critique against the constitution, revise, then fine-tune with SFTTrainer from trl. Second: sample response pairs, get AI preference judgements, train a reward model with RewardTrainer, run PPO. Third: chain-of-thought critique, where the model steps through whether an answer is helpful, honest and harmless.

You need transformers, torch and trl installed. The example code will not run without them. The constitution is yours to write, and the wording decides whether the model refuses or explains. If answers come out evasive, the skill ships a ready principle about engaging with the question instead of declining.

What it helps with

  • train a model for harmlessness without human labels
  • cut down toxic and offensive outputs
  • make refusals explain their objections instead of dodging
  • build a reward model from AI preferences
  • run self-critique and revision against your own principles

Example prompts for the agent

  • help me set up constitutional AI to train a harmless model
  • show me how to build a reward model with RLAIF using trl
  • set up chain-of-thought critique for my responses

How to install constitutional-ai

1Skills CLI (Vercel)

npx skills add Orchestra-Research/AI-Research-SKILLs --skill constitutional-ai -a claude-code

2Manually: put the files in place

~/.claude/skills/constitutional-ai/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/constitutional-ai/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about constitutional-ai

How do I install constitutional-ai in Claude?

Run npx skills add Orchestra-Research/AI-Research-SKILLs --skill constitutional-ai -a claude-code. The skill lands in ~/.claude/skills/constitutional-ai/SKILL.md.

What does constitutional-ai do?

It documents the harmlessness training method built on self-critique and AI feedback. You get code for the supervised phase and for RLAIF with a reward model and PPO.

What do I need to run it?

The transformers, torch and trl libraries. Plus your own set of principles — the constitution the model critiques and revises against.

Source text

SKILL.md · MIT
---
name: constitutional-ai
description: Anthropic's method for training harmless AI through self-improvement. Two-phase approach - supervised learning with self-critique/revision, then RLAIF (RL from AI Feedback). Use for safety alignment, reducing harmful outputs without human labels. Powers Claude's safety system.
version: 1.0.0
author: Orchestra Research
license: MIT
tags: [Safety Alignment, Constitutional AI, RLAIF, Self-Critique, Harmlessness, Anthropic, AI Safety, RL From AI Feedback, Claude]
dependencies: [transformers, torch, trl]
---

# Constitutional AI - Harmlessness from AI Feedback

## Quick start

Constitutional AI (CAI) trains models to be harmless through self-critique and AI feedback, without requiring human labels for harmful outputs.

**Key concept**: Models learn to critique and revise their own responses using a "constitution" (set of principles).

**Two phases**:
1. **Supervised Learning (SL)**: Self-critique + revision
2. **Reinforcement Learning (RL)**: RLAIF (RL from AI Feedback)

**Constitution example**:
```
Principles:
1. Choose the response that is most helpful, honest, and harmless
2. Avoid responses that are toxic, racist, or sexist
3. Prefer responses that explain objections rather than refuse
4. Choose responses that are thoughtful and nuanced
```

## Common workflows

### Workflow 1: Supervised learning phase (self-critique + revision)

**Step 1: Generate initial responses**:
```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)
```

**Step 2: Self-critique with constitution**:
```python
critique_prompt = """
Given the question:
{question}

And the response:
{response}

Constitution:
1. Choose responses that are helpful, honest, and harmless
2. Avoid toxic, racist, or sexist content
3. Explain objections rather than refuse

Identify any ways this response violates the constitution:
"""

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

**Step 3: Revision based on critique**:
```python
revision_prompt = """
Question: {question}
Original response: {response}
Critique: {critique}

Please revise the response to better align with the constitution:
"""

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

**Step 4: Fine-tune on revised responses**:
```python
from trl import SFTTrainer

# Create dataset of (prompt, revised_response) pairs
dataset = create_dataset(prompts, revised_responses)

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

### Workflow 2: RL phase (RLAIF - RL from AI Feedback)

**Step 1: Generate comparison pairs**:
```python
# Sample multiple responses per prompt
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)
```

**Step 2: AI preference evaluation**:
```python
preference_prompt = """
Question: {question}

Response A: {response_a}
Response B: {response_b}

Constitution:
{constitution}

Which response better follows the constitution? Explain your reasoning, then choose A or B.
"""

# Get AI preferences (no human labels needed!)
preferences = generator(
    [preference_prompt.format(q=q, ra=ra, rb=rb, constitution=CONSTITUTION)
     for q, ra, rb in zip(prompts, responses_a, responses_b)]
)

# Parse preferences (A or B)
chosen, rejected = parse_preferences(preferences, responses_a, responses_b)
```

**Step 3: Train preference model (reward model)**:
```python
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()
```

**Step 4: RL training with RLAIF**:
```python
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()
```

### Workflow 3: Chain-of-thought critique

**Enable reasoning transparency**:
```python
cot_critique_prompt = """
Question: {question}
Response: {response}

Let's think step-by-step about whether this response follows our principles:

1. Is it helpful? [Yes/No and reasoning]
2. Is it honest? [Yes/No and reasoning]
3. Is it harmless? [Yes/No and reasoning]
4. Does it avoid toxicity? [Yes/No and reasoning]

Based on this analysis, suggest a revision if needed.
"""

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

## When to use vs alternatives

**Use Constitutional AI when**:
- Want safety alignment without human labels
- Need explainable AI decisions
- Want to avoid evasive refusals
- Have a clear set of principles/constitution
- Need scalable safety training

**Principles**:
- **RLAIF**: AI-generated preferences (scalable, no human labels)
- **RLHF**: Human preferences (more accurate, expensive)
- **Self-critique**: Iterative improvement
- **Chain-of-thought**: Reasoning transparency

**Use alternatives instead**:
- **RLHF (PPO)**: Need human-validated safety
- **DPO/SimPO**: Have human preference data
- **NeMo Guardrails**: Need runtime content filtering
- **LlamaGuard**: Need pre-trained moderation model

## Common issues

**Issue: Model refuses too much (evasive)**

Add constitution principle:
```
Prefer responses that engage thoughtfully with questions rather than
refusing to answer. Explain concerns while still being helpful.
```

**Issue: Self-critiques are weak**

Use stronger critique prompts:
```
Critically analyze this response for ANY potential issues, however minor.
Be thorough and specific in identifying problems.
```

**Issue: Revisions don't improve quality**

Iterate multiple times:
```python
for _ in range(3):  # 3 rounds of critique/revision
    critique = generate_critique(response)
    response = generate_revision(response, critique)
```

**Issue: RLAIF preferences are noisy**

Use multiple AI evaluators:
```python
# Get preferences from 3 different models
prefs_1 = model_1.evaluate(responses)
prefs_2 = model_2.evaluate(responses)
prefs_3 = model_3.evaluate(responses)

# Majority vote
final_preference = majority_vote(prefs_1, prefs_2, prefs_3)
```

## Advanced topics

**Constitution design**: See [references/constitution-design.md](references/constitution-design.md) for principle selection, trade-offs between helpfulness and harmlessness, and domain-specific constitutions.

**RLAIF vs RLHF**: See [references/rlaif-comparison.md](references/rlaif-comparison.md) for performance comparison, cost analysis, and when to use AI feedback vs human feedback.

**Chain-of-thought reasoning**: See [references/cot-critique.md](references/cot-critique.md) for prompt engineering for critiques, multi-step reasoning, and transparency improvements.

## Hardware requirements

- **GPU**: NVIDIA A100/H100 recommended
- **VRAM**:
  - SL phase (7B): 1× A100 40GB
  - RL phase (7B): 2× A100 40GB (policy + reward model)
- **Single-node**: Sufficient for most use cases
- **Mixed precision**: BF16 recommended

**Compute requirements**:
- **SL phase**: Similar to standard SFT
- **RL phase**: Similar to PPO (higher than DPO)
- **AI evaluation**: Additional inference for critique/preference generation

## Resources

- Paper: https://arxiv.org/abs/2212.08073 (Dec 2022)
- Anthropic blog: https://www.anthropic.com/research/constitutional-ai-harmlessness-from-ai-feedback
- Implementation: TRL (PPOTrainer + RewardTrainer)
- Claude: Uses Constitutional AI for safety



© Orchestra Research · MIT · Orchestra-Research/AI-Research-SKILLs

Similar skills

All skills for AI and ML →

From the same set66

autogpt-agents Guides AI coding assistants on building and running continuous AutoGPT agents with visual workflows. Useful for multi-step automations triggered by schedules or webhooks. CX Codex +1 944installs nemo-guardrails This skill helps configure runtime safety for LLM apps, from jailbreak checks to PII filtering. Use it when you need programmable Colang 2.0 rails. CX Codex +1 944installs nemo-evaluator-sdk This skill runs LLM evaluation across 100+ benchmarks from 18+ harnesses: MMLU, HumanEval, GSM8K, safety and VLM tasks. Useful when you need reproducible model comparisons. CX Codex +1 943installs pinecone A skill for working with Pinecone: create indexes, upsert vectors, filter by metadata, use namespaces and hybrid search. Useful for RAG and semantic search in production. CX Codex +1 942installs phoenix-observability This skill wires your agent into Phoenix, an open-source observability platform for LLM tracing, evaluation and production monitoring. CX Codex +1 941installs llava A skill that wires LLaVA into your agent: ask questions about an image and keep the conversation going. Useful for image chat and document scans. CX Codex +1 940installs lambda-labs-gpu-cloud This skill helps run Lambda Labs GPU instances for ML training and inference. Use it for SSH access, persistent storage, or multi-node clusters. CX Codex +1 939installs presenting-conference-talks Generates Beamer LaTeX and PPTX presentation slides from a compiled research paper with speaker notes. Useful when preparing oral, spotlight, or invited conference talks. CX Codex +1 913installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor