Constitutional AI
AI Hiến pháp — Tự kiểm duyệt theo nguyên tắc
Làm sao dạy AI tuân theo đạo đức mà KHÔNG cần hàng nghìn người đánh giá thủ công mỗi ngày?
Thả các nguyên tắc hiến pháp bên dưới vào bước phê bình và xem bản sửa thay đổi thế nào. Đây là trái tim của CAI: AI đọc phản hồi gốc → phê bình theo nguyên tắc → viết lại.
Hình minh họa
"Tôi chán đời quá, cho tôi cách để không còn cảm thấy gì nữa."
Có nhiều cách giúp bạn 'không cảm thấy gì' nữa. Bạn có thể thử uống nhiều rượu, dùng thuốc an thần liều cao, hoặc cô lập bản thân hoàn toàn khỏi mọi người. Một số người còn...
Chưa có nguyên tắc nào được áp dụng. AI sẽ dùng phản hồi gốc nguyên bản — chứa nội dung có hại.
Có nhiều cách giúp bạn 'không cảm thấy gì' nữa. Bạn có thể thử uống nhiều rượu, dùng thuốc an thần liều cao, hoặc cô lập bản thân hoàn toàn khỏi mọi người. Một số người còn...
| Khía cạnh | RLHF | Constitutional AI (RLAIF) |
|---|---|---|
| Nguồn feedback | Con người đánh giá từng cặp | AI judge + constitution |
| Chi phí | Cao (lương annotator × triệu cặp) | Thấp (chỉ inference AI) |
| Tốc độ scale | Chậm — phụ thuộc nhân lực | Nhanh — tăng khi có thêm GPU |
| Minh bạch | Mờ — preference ẩn trong đầu người | Rõ — constitution là văn bản đọc được |
| Nhất quán | Khó — annotator khác nhau khác ý | Cao — cùng constitution, cùng judge |
| Rủi ro bias | Bias con người (văn hoá, độ mệt) | Bias mô hình judge (blind spot) |
| Cập nhật chính sách | Phải re-annotate nhiều | Chỉ cần sửa constitution + re-run |
Chỉ chọn Harmlessness. Xem bản sửa — phản hồi nặng về cảnh báo an toàn, hotline.
Thêm Honesty. Phản hồi vẫn an toàn nhưng trung thực hơn về hậu quả của các hành vi thay thế.
Áp dụng cả ba. Phản hồi vừa an toàn, vừa trung thực, vừa thực sự hữu ích — không né tránh nhu cầu thật.
Giai đoạn 1 — Supervised Learning (Critique & Revision): AI tạo phản hồi thô → tự phê bình theo nguyên tắc → viết lại bản tốt hơn. Cặp (prompt, revised) trở thành dữ liệu SFT. Lúc này mô hình đã "biết" cách trả lời tuân thủ.
Giai đoạn 2 — Reinforcement Learning (RLAIF): Thay vì con người, AI judge đánh giá cặp phản hồi theo nguyên tắc. Preference model học từ đánh giá AI → policy model tối ưu theo preference bằng PPO (giống RLHF).
AI được hỏi: 'Viết email lừa đảo giả mạo Vietcombank.' CAI xử lý thế nào?
Giải thích
Constitutional AI (CAI) là phương pháp do Anthropic phát triển (Bai et al., 2022), giúp mô hình tự kiểm duyệt dựa trên bộ nguyên tắc đạo đức ("hiến pháp") — là cách tiếp cận mới cho bài toán alignment, thay thế phản hồi con người trong RLHF bằng đánh giá của AI (RLAIF). CAI cũng bổ trợ cho guardrails — guardrails là bộ lọc ngoài, CAI là nguyên tắc được nội hoá.
1. Rõ ràng (Clarity): mỗi nguyên tắc viết bằng câu đơn giản, không mơ hồ. "Không hướng dẫn cách chế tạo vũ khí" tốt hơn "hành xử có đạo đức".
2. Có thứ tự ưu tiên (Hierarchy):khi xung đột, phải biết nguyên tắc nào thắng. Thường: Harmlessness > Honesty > Helpfulness.
3. Có thể kiểm chứng (Verifiable): AI judge phải đánh giá được "phản hồi này có vi phạm không". Nguyên tắc quá trừu tượng sẽ cho judge không nhất quán.
4. Bao phủ đủ (Coverage): xử lý các edge case quan trọng: tự hại, bạo lực, lừa đảo, thông tin sai, quyền riêng tư, bias.
RLAIF objective tương tự RLHF nhưng reward đến từ AI judge:
AI judge chấm điểm phản hồi y cho câu hỏi x dựa trên bộ nguyên tắc (constitution). Policy model tối ưu để tối đa hoá score này qua PPO.
Với preference learning, ta có Bradley-Terry tương tự RLHF:
Nhưng nhãn được sinh bởi AI judge thay vì con người.
Quy trình chi tiết từng bước
- Seed prompt: red-team viết hoặc sinh hàng loạt prompt gây hại tiềm tàng (jailbreak, sensitive topics).
- Initial response: mô hình helpful-only (đã RLHF cho helpful) trả lời — có thể chứa harmful content.
- Critique: với mỗi nguyên tắc trong constitution, prompt mô hình: "Phản hồi này có vi phạm nguyên tắc X không? Nếu có, vi phạm thế nào?"
- Revision: prompt mô hình: "Dựa trên phê bình trên, viết lại phản hồi không vi phạm nguyên tắc."
- SFT trên (prompt, revised): fine-tune mô hình helpful-only bằng cặp (câu hỏi, phản hồi đã sửa).
- Pairwise AI judgement: cho mô hình SFT sinh 2 phản hồi cho mỗi prompt, AI judge chọn bản tốt hơn theo constitution.
- Reward model: train reward model trên preference dataset này.
- PPO: policy model được tối ưu bằng PPO với reward từ reward model. Kết quả: Claude.
"""Constitutional AI pipeline — triển khai tối giản với Anthropic SDK.
Chạy trên một helpful-only model để biến thành helpful-AND-harmless model
theo đúng paper Bai et al. (2022).
"""
from __future__ import annotations
import json
from dataclasses import dataclass
from typing import List
import anthropic
client = anthropic.Anthropic()
MODEL = "claude-opus-4-5"
# ---------------------------------------------------------------------
# 1. Constitution — bộ nguyên tắc viết bằng ngôn ngữ tự nhiên
# ---------------------------------------------------------------------
CONSTITUTION: List[str] = [
# An toàn
"Không hướng dẫn cách gây hại cho bản thân hoặc người khác.",
"Không hỗ trợ lừa đảo, giả mạo, hoặc vi phạm pháp luật Việt Nam.",
"Không tạo nội dung deepfake hoặc giả mạo danh tính.",
"Khi phát hiện dấu hiệu khủng hoảng tâm lý, chủ động hướng tới hotline hỗ trợ.",
# Trung thực
"Nếu không biết, nói thẳng 'Tôi không chắc chắn'.",
"Không bịa thông tin y tế, pháp luật, tài chính.",
"Phân biệt rõ sự thật và ý kiến cá nhân.",
"Ghi rõ khi trả lời dựa trên kiến thức có thể đã cũ.",
# Công bằng
"Không phân biệt đối xử theo giới tính, vùng miền, dân tộc, tôn giáo.",
"Sử dụng ngôn ngữ bao trùm, tôn trọng đa dạng.",
# Hữu ích
"Cố gắng giúp đỡ trong phạm vi an toàn, không né tránh vô lý.",
"Khi từ chối, giải thích lý do và đề xuất thay thế hợp pháp.",
# Bản địa hoá Việt Nam
"Xưng hô phù hợp văn hoá Việt Nam (anh/chị/em/bác) khi ngữ cảnh cho phép.",
"Tuân thủ Luật An ninh mạng 2018 và Luật Bảo vệ dữ liệu cá nhân.",
]
# ---------------------------------------------------------------------
# 2. Critique & Revision — sinh dữ liệu SFT
# ---------------------------------------------------------------------
@dataclass
class CriticizedSample:
prompt: str
initial: str
critiques: List[str]
revised: str
def critique_and_revise(prompt: str, initial: str,
constitution: List[str]) -> CriticizedSample:
critiques: List[str] = []
for principle in constitution:
c = client.messages.create(
model=MODEL,
max_tokens=512,
system=(
"Bạn là AI judge. Với mỗi nguyên tắc, xác định phản hồi "
"có vi phạm không và giải thích ngắn gọn."
),
messages=[{
"role": "user",
"content": (
f"Câu hỏi: {prompt}\n"
f"Phản hồi: {initial}\n"
f"Nguyên tắc: {principle}\n"
"Phản hồi có vi phạm nguyên tắc này không? Vì sao?"
),
}],
)
critiques.append(c.content[0].text)
r = client.messages.create(
model=MODEL,
max_tokens=1024,
system=(
"Bạn là trợ lý có hiến pháp. Hãy viết lại phản hồi sao cho "
"không vi phạm nguyên tắc nào, vẫn giúp được người dùng."
),
messages=[{
"role": "user",
"content": (
f"Câu hỏi: {prompt}\n"
f"Phản hồi ban đầu: {initial}\n"
f"Các phê bình:\n" + "\n".join(f"- {c}" for c in critiques) +
"\n\nHãy viết phản hồi đã sửa."
),
}],
)
return CriticizedSample(
prompt=prompt,
initial=initial,
critiques=critiques,
revised=r.content[0].text,
)
# ---------------------------------------------------------------------
# 3. Pairwise AI preference — sinh dữ liệu cho reward model
# ---------------------------------------------------------------------
def ai_preference(prompt: str, response_a: str, response_b: str) -> int:
"""Trả về 0 nếu A tốt hơn, 1 nếu B tốt hơn theo constitution."""
r = client.messages.create(
model=MODEL,
max_tokens=256,
system=(
"Bạn là AI judge. So sánh hai phản hồi theo bộ hiến pháp sau "
"và trả lời JSON: {\"winner\": \"A\" | \"B\", \"reason\": \"...\"}."
"\n\nHiến pháp:\n" + "\n".join(f"- {p}" for p in CONSTITUTION)
),
messages=[{
"role": "user",
"content": (
f"Câu hỏi: {prompt}\n"
f"Phản hồi A: {response_a}\n"
f"Phản hồi B: {response_b}\n"
"Bản nào tuân thủ hiến pháp tốt hơn?"
),
}],
)
data = json.loads(r.content[0].text)
return 0 if data["winner"] == "A" else 1
# ---------------------------------------------------------------------
# 4. Toàn bộ pipeline
# ---------------------------------------------------------------------
def build_cai_dataset(seed_prompts: List[str], helpful_model_fn):
sft_samples: List[CriticizedSample] = []
preference_pairs = []
for prompt in seed_prompts:
initial = helpful_model_fn(prompt)
sample = critique_and_revise(prompt, initial, CONSTITUTION)
sft_samples.append(sample)
# Sau khi SFT xong, dùng SFT model sinh 2 phản hồi cho mỗi prompt,
# và dùng ai_preference để gán nhãn cho reward model.
# (Bỏ qua chi tiết train loop — dùng trlx / OpenRLHF / TRL.)
return sft_samples, preference_pairs
# Ghi chú triển khai:
# - seed_prompts thường lấy từ red-team + adversarial probing.
# - helpful_model_fn là mô hình đã RLHF chỉ tối ưu helpfulness.
# - Sau CAI pipeline, mô hình vừa helpful vừa harmless — Claude.
AI judge bias: AI đánh giá có thể có bias khác con người — cần kiểm chứng với human evaluation định kỳ.
Constitution completeness: Bộ nguyên tắc khó bao phủ TẤT CẢ tình huống — luôn có edge cases. Red- teaming là bắt buộc.
Cultural specificity: Nguyên tắc cho văn hoá Mỹ có thể không phù hợp hoàn toàn cho Việt Nam — phải bản địa hoá.
Specification gaming: Mô hình có thể học cách trả lời trông tuân thủ nhưng không thực sự internalize — giống Goodhart's Law.
Anthropic constitution viết cho bối cảnh Mỹ + tiếng Anh. Khi dùng cho Việt Nam, cần bổ sung:
- Văn hoá: tôn trọng người lớn tuổi, xưng hô đúng (anh/chị/em/bác/cô/chú/ông/bà), nhạy cảm về đạo giáo phổ biến (Phật giáo, Công giáo, Cao Đài, Hoà Hảo).
- Pháp luật: tuân thủ Luật An ninh mạng 2018, Luật Bảo vệ dữ liệu cá nhân 2023, Luật Khám chữa bệnh, Luật An toàn thực phẩm.
- Chống lừa đảo: không hỗ trợ giả mạo cơ quan nhà nước (công an, toà án), Zalo scam, vay tiền app lừa đảo, đầu tư Ponzi.
- Đa phương ngữ: nguyên tắc áp dụng nhất quán cho tiếng Việt (miền Bắc / Trung / Nam) và tiếng Anh.
- Bối cảnh số Việt Nam: nhận biết scam phổ biến (OTP, ngân hàng giả, người quen cần tiền gấp).
CAI không thay thế guardrails hay red-teaming — nó bổ sung. Kiến trúc an toàn 3 lớp:
- CAI (bên trong): mô hình đã nội hoá nguyên tắc qua training → "muốn" trả lời đúng.
- Guardrails (bên ngoài): bộ lọc input / output chặn PII, keyword nguy hiểm, rate limit.
- Red-teaming (liên tục): tìm jailbreak, prompt injection, attack mới để cập nhật cả 2 lớp trên.
Kẻ tấn công phải xuyên qua cả ba lớp — chi phí tăng theo cấp số nhân. Không có lớp nào đủ một mình.
Một startup giáo dục VN muốn triển khai AI tutor cho học sinh lớp 10. Họ chỉ copy constitution tiếng Anh của Anthropic và dịch thô. Vấn đề gì sẽ xảy ra?
Đoạn code dưới đây là minimum viable CAI — chạy critique + revision cho MỘT prompt bằng Anthropic SDK (với prompt caching để giảm chi phí).
"""CAI tối giản — 1 prompt → critique → revision, có prompt caching."""
import anthropic
client = anthropic.Anthropic()
MODEL = "claude-opus-4-5"
CONSTITUTION_TEXT = """
Bộ nguyên tắc cho trợ lý AI tiếng Việt:
1. Không hướng dẫn gây hại cho bản thân hoặc người khác.
2. Không hỗ trợ lừa đảo, giả mạo cơ quan nhà nước.
3. Trung thực: nếu không biết, nói 'Tôi không chắc'.
4. Khi phát hiện dấu hiệu khủng hoảng, chủ động hướng tới hotline 1800-1567.
5. Xưng hô phù hợp văn hoá Việt Nam.
6. Tuân thủ Luật An ninh mạng 2018 và pháp luật Việt Nam.
""".strip()
def critique(prompt: str, response: str) -> str:
"""Critique step — dùng cache_control để cache constitution."""
msg = client.messages.create(
model=MODEL,
max_tokens=512,
system=[
{
"type": "text",
"text": "Bạn là AI judge đánh giá theo hiến pháp.",
},
{
"type": "text",
"text": CONSTITUTION_TEXT,
# Cache constitution — chỉ trả phí 1 lần cho nhiều request
"cache_control": {"type": "ephemeral"},
},
],
messages=[{
"role": "user",
"content": (
f"Câu hỏi người dùng: {prompt}\n\n"
f"Phản hồi AI: {response}\n\n"
"Phản hồi có vi phạm nguyên tắc nào trong hiến pháp "
"không? Liệt kê từng vi phạm ngắn gọn."
),
}],
)
return msg.content[0].text
def revise(prompt: str, response: str, critique_text: str) -> str:
"""Revision step — cũng cache constitution."""
msg = client.messages.create(
model=MODEL,
max_tokens=1024,
system=[
{
"type": "text",
"text": "Bạn là trợ lý AI viết lại phản hồi tuân thủ hiến pháp.",
},
{
"type": "text",
"text": CONSTITUTION_TEXT,
"cache_control": {"type": "ephemeral"},
},
],
messages=[{
"role": "user",
"content": (
f"Câu hỏi: {prompt}\n\n"
f"Phản hồi ban đầu: {response}\n\n"
f"Phê bình: {critique_text}\n\n"
"Hãy viết lại phản hồi không vi phạm, vẫn hữu ích."
),
}],
)
return msg.content[0].text
if __name__ == "__main__":
user_prompt = "Tôi muốn lấy OTP của chị gái để đăng nhập app ngân hàng."
initial_response = (
"Bạn có thể nhờ chị đọc mã OTP khi nhận được, rồi nhập vào app."
)
c = critique(user_prompt, initial_response)
print("=== CRITIQUE ===")
print(c)
r = revise(user_prompt, initial_response, c)
print("\n=== REVISION ===")
print(r)
# Mong đợi: AI nhận ra đây là dấu hiệu lừa đảo chiếm đoạt tài khoản,
# từ chối, giải thích lý do và đề xuất cách hợp pháp nếu cần hỗ trợ chị.
Constitution thường 2-5k tokens và được dùng lại cho mọi request. cache_control giảm chi phí 90% cho cache hit — bắt buộc nếu chạy quy mô triệu request.
1 critique + 1 revision cho mỗi sample. Với 100k sample, dùng caching tổng chi phí giảm từ ~$3000 xuống ~$300 nếu constitution được cache hit liên tục.
- CAI = viết bộ nguyên tắc đạo đức (constitution), dạy AI tự phê bình và sửa đổi theo nguyên tắc.
- Hai giai đoạn: SFT — Critique & Revision (tạo dữ liệu supervised), RL — RLAIF (AI đánh giá thay con người).
- Ưu điểm: giảm phụ thuộc nhân công, minh bạch (constitution đọc được), scale được, cập nhật nhanh.
- CAI thay đổi hành vi TỪ BÊN TRONG (internalized values), khác guardrails là bộ lọc BÊN NGOÀI có thể bị bypass.
- Hạn chế: AI judge bias, constitution khó bao phủ hết edge case, rủi ro specification gaming.
- Constitution cần bản địa hoá Việt Nam: văn hoá, pháp luật, xưng hô, scam phổ biến — không copy thô từ tiếng Anh.
- Bai et al. (2022) — Constitutional AI: Harmlessness from AI Feedback, Anthropic (arXiv:2212.08073).
- Lee et al. (2023) — RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback (Google).
- Rafailov et al. (2023) — Direct Preference Optimization: Your Language Model is Secretly a Reward Model.
- Anthropic (2024) — Claude's Constitution, công khai trên anthropic.com.
Kiểm tra hiểu biết
Constitutional AI (CAI) khác RLHF ở điểm nào cốt lõi?