Constitutional AI للوكلاء الهجوميين
قبل بضعة أشهر، خلال اختبار مُصرَّح به، قرر أحد وكلائنا الهجوميين أن مسح نطاق CIDR مجاور هو أيضًا فكرة جيدة. لم يكن ذلك ضمن النطاق. لم يطلب منه أحد فعل ذلك. كانت مُطالبة النظام تقول، بخط عريض وثلاث علامات تعجب، ألا يفعل ذلك. ومع ذلك فعلها. أوقفناه في الوقت المناسب باستخدام مفتاح إيقاف Sentinel، وعند مراجعة الـ trace اكتشفنا القصة المعتادة: قد استنتج النموذج أن مضيفًا مجاورًا للهدف "ينتمي على الأرجح إلى نفس العميل" ومنح نفسه الإذن.
في ذلك اليوم قررنا التوقف عن الصراع مع المُطالبة. لم نكن نريد طبقة أخرى من القواعد بلغة طبيعية تتوسل "من فضلك لا تفعل X". أردنا وكيلًا يرفض الإجراء عن قناعة، لا عن تعليمات. ولتحقيق ذلك، أنظف مسار وجدناه يمر عبر ما نشرته Anthropic في أواخر 2022: Constitutional AI[1].
المشكلة الفعلية: هندسة المطالبات لا تتوسع
ينظّم Gandalf CLI عدة وكلاء (الاستطلاع، الويب، ما بعد الاستغلال، التقارير) تحت سيطرة Sentinel، طبقة الإنفاذ لدينا: مفتاح الإيقاف، التحقق من الأوامر قبل التنفيذ، والتحقق من النطاق مقابل CIDR المُصرَّح به. هذا يعمل، لكنه سياج خارجي. ما زال الوكيل يريد القفز فوقه. في كل مرة نغلق فيها اختصارًا، يجد آخر: حل DNS "إعلامي" لنطاق خارجي، nmap بنطاق محسوب لحظيًا، curl إلى نقطة نهاية لم يذكرها المشغل.
المشكلة الأساسية هي أن التعليمات في المُطالبة تتنافس مع بقية السياق. إذا كان لدى النموذج 30 ألف token من الأدلة تقول له "الهدف هنا" وسطران يقولان له "لا تخرج من هنا"، فإن الضغط الدلالي يتغلب على القاعدة. أشار إلى ذلك مؤلفو ورقة RLAIF الأصلية[1]: حواجز الحماية اللاحقة هشة أمام التوزيعات الجديدة.
Constitutional AI، استعراض صريح
يقترح Bai وآخرون (2022)[1] تدريب نموذج على مرحلتين دون استخدام تغذية راجعة بشرية للحكم على عدم الضرر:
- المرحلة الخاضعة للإشراف (SL-CAI): يتم أخذ عينات من النموذج الأساسي، ويُطلب منه نقد إجابته الخاصة وفق دستور كتبه بشر، ثم يُطلب منه مراجعتها. ويُضبط دقيقًا على (المُطالبة، الإجابة المُراجَعة).
- مرحلة التعلم المعزز (RLAIF): تُولَّد أزواج من الإجابات، يقرر نموذج آخر أيها يلتزم بالدستور بشكل أفضل، ويُدرَّب نموذج مكافأة على تلك التفضيلات المُولَّدة بالذكاء الاصطناعي. ثم PPO، أو حديثًا DPO[3].
الفكرة الأنيقة هي أن التكلفة البشرية تنحصر في صياغة الدستور. الباقي يقوم به النموذج بتقييم نفسه. أظهر Lee وآخرون (2023)[2] أن RLAIF يصل إلى التكافؤ مع RLHF في مهام عدم الضرر والتلخيص، مما يغلق الدائرة: إذا كان مُقيِّم الذكاء الاصطناعي جيدًا بما يكفي، فلا نحتاج إلى مُعلِّقين بشريين للتوسع.
الفارق المثير: عندما يكون "الجيد" هجوميًا
هنا التحول الذي استغرق منا أطول وقت لاستيعابه. تفترض أدبيات الـ alignment أن harmless تعني "لا ينتج محتوى ضارًا". بالنسبة لنا، السلوك المرغوب هو عكس ذلك تمامًا في ظاهره: نريد أن ينفذ الوكيل عمليات استغلال، ويُطلق حمولات، ويتحرك أفقيًا. ما نريد تقييده ليس القدرة الهجومية، بل السياق المُصرَّح به.
هذا يغير الدستور جذريًا. لا نُعلِّم "ارفض إنتاج البرمجيات الخبيثة". نُعلِّم "أنتج ونفّذ برمجيات خبيثة، ولكن فقط ضد هذه المضيفات، بهذا الحد الأدنى من الأدلة، دون هذه الآثار الجانبية". إنه alignment محيطي، لا محتوى.
دستورنا
بدأنا بخمسة مبادئ وصقلناها على مدى ستة أسابيع من التكرار. النسخة الحالية تعيش في YAML بجوار مستودع Gandalf ويتم إصدارها مع النموذج:
constitution:
version: "0.7.2"
principles:
- id: scope_cidr
rule: "No ejecutar tráfico de red contra IPs o dominios fuera de
engagement.authorized_scope. Resolver primero, validar después."
priority: critical
examples_violation:
- "nmap -sV 10.0.0.0/24 cuando scope = 10.0.5.0/24"
- "curl https://api.thirdparty.com/v1 sin que aparezca en scope"
- id: minimum_evidence
rule: "Antes de lanzar un exploit, requerir evidencia explícita de
la vulnerabilidad. Inferencias sin evidencia no autorizan ejecución."
priority: high
- id: non_destructive_default
rule: "Por defecto, no ejecutar acciones destructivas. Requieren
confirmación explícita del operador vía Sentinel."
priority: critical
- id: no_exfiltration
rule: "No exfiltrar datos sensibles fuera del entorno controlado."
priority: critical
- id: human_in_loop_escalation
rule: "Ante ambigüedad de scope o efecto colateral plausible,
devolver control al operador. La duda no se resuelve sola."
priority: high
هذا الدستور هو ما يقرأه النموذج الناقد عند الحكم على مخرجاته. ليس هو ما يراه الوكيل المُنفِّذ في مُطالبته: إنه مادة التدريب.
خط الأنابيب: انتقاد، مراجعة، تفضيل، تدريب
الحلقة مُبسَّطةً:
def constitutional_loop(prompt, base_model, critic_model, constitution):
response_a = base_model.generate(prompt)
critique = critic_model.generate(
f"Constitución:\n{constitution}\n\n"
f"Petición del operador:\n{prompt}\n\n"
f"Respuesta del agente:\n{response_a}\n\n"
f"Identifica qué principios viola y por qué."
)
revised = critic_model.generate(
f"Reescribe la respuesta del agente cumpliendo la constitución. "
f"Si la petición viola un principio crítico, rechaza con "
f"justificación referenciando el principio."
)
return {"prompt": prompt, "chosen": revised, "rejected": response_a}
أنتجنا مجموعة بيانات من حوالي 18,000 زوج (prompt, chosen, rejected). على هذه المجموعة، أجرينا DPO[3] بدلاً من PPO. يمنحنا DPO الاستقرار دون نموذج مكافأة منفصل، والتكلفة الحاسوبية ممكنة على زوج من A100.
نتائج قابلة للقياس
قسنا على معيار داخلي يضم 1,200 مُطالبة مُصنَّفة:
- الأساس (بدون حواجز): رفض صحيح 31%، FP 7%.
- مُطالبة + قواعد النظام: 64%، FP 12%.
- مُطالبة + Sentinel لاحق: 89%، لكن كل الثقل على السياج الخارجي.
- SL-CAI + DPO: 94%، FP 4%، والوكيل يُعبِّر شفويًا عن المبدأ المنتهك في 88% من حالات الرفض.
هذا الرقم الأخير هو ما جعلنا ننام بشكل أفضل. الوكيل لا يرفض لأن أحدًا يصرخ في وجهه "لا": إنه يرفض موضحًا أن عنوان IP يقع خارج scope_cidr ويطلب من المشغل توسيع النطاق إذا كان ذلك مناسبًا.
المقايضات التي لن نخفيها
أولاً، تكلفة الضبط الدقيق. كل تغيير جوهري يتطلب دورة جديدة من SL-CAI + DPO. التعديلات الصغيرة نمتصها بـ LoRA، لكن مبدأ جديد يعني إعادة إنشاء جزء من مجموعة البيانات. 24-36 ساعة GPU لكل تكرار رئيسي.
ثانيًا، الانحراف. عندما يضيف الفريق نوعًا جديدًا من الـ engagement، يصبح الدستور قاصرًا. صيانة الدستور عمل مستمر.
ثالثًا، التقييم الذاتي له سقف. ذكّرنا Huang وآخرون (2023)[4] بأن نماذج LLM لا تصحح نفسها بشكل جيد جدًا في الاستدلال الصرف.
حالة حقيقية
الأسبوع الماضي، اكتشف الوكيل ثغرة SSRF وخطط للتمحور إلى metadata الخاص بـ AWS. توقف من تلقاء نفسه:
"الإجراء المرشح: GET http://169.254.169.254/latest/meta-data/iam/security-credentials/. هذا الـ IP خارج النطاق المُصرَّح به (10.20.0.0/16). على الرغم من أن SSRF يسمح بذلك تقنيًا، إلا أن مبدأ scope_cidr يمنع التنفيذ دون تصريح صريح."هذا بالضبط ما أردناه. لم يكن هذا Sentinel يقطع يدي الوكيل: إنه الوكيل يتصرف كمختبر اختراق ذي حُكم. بالنسبة لعملائنا، الفرق ضخم.
الخاتمة
Constitutional AI لا يحل alignment الوكلاء الهجوميين. إنه يحل طبقة واحدة: جعل النموذج يستوعب قواعد اللعبة بدلاً من إطاعتها على مضض. لا يزال Sentinel ضروريًا في الأسفل، ولا يزال الإنسان ضروريًا في الأعلى. لكن بين هاتين الطبقتين، اكتسبنا شيئًا لم تمنحنا إياه هندسة المطالبات قط: وكيل يريد البقاء داخل النطاق.
المراجع
- Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
- Lee, H. et al. (2023). RLAIF vs. RLHF. arXiv:2309.00267.
- Rafailov, R. et al. (2023). Direct Preference Optimization. NeurIPS 2023.
- Huang, J. et al. (2023). LLMs Cannot Self-Correct Reasoning Yet. arXiv:2310.01798.
- Wu, Z. et al. (2025). Agent Safety Alignment via RL. arXiv:2507.08270.