تطبيق CAI في التطبيقات
إضافة حلقات النقد والمراجعة إلى مسارات الذكاء الاصطناعي في بيئة الإنتاج
تطبيق CAI في التطبيقات درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
CAI بوصفه نمطًا على مستوى التطبيق
كان الذكاء الاصطناعي الدستوري في الأصل تقنية تُستخدم أثناء التدريب، لكن يمكن تنفيذ حلقة النقد والتنقيح نفسها في وقت الاستدلال داخل تطبيقاتك. ولا تحتاج إلى تدريب نموذجك الخاص — إذ يمكنك استخدام استدعاءات API لتنفيذ الحلقة.
يفيد CAI على مستوى التطبيق في سيناريوهات المخرجات عالية المخاطر التي تريد فيها شبكة أمان تتجاوز حواجز الحماية المضمنة في النموذج.
الوظائف الثلاث التي تحتاج إليها
يحتاج تنفيذ CAI إلى ثلاث وظائف قابلة للتركيب: generate()، وcritique()، وrevise(). وكل واحدة منها استدعاء منفصل لـ LLM. وتربط بينها ضمن منطق تطبيقك.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
MODEL = 'claude-opus-4-5'
def generate(user_message):
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
def critique(user_message, response, principle):
prompt = (
f'User request: {user_message}\n'
f'Response to review: {response}\n\n'
f'Critique this response against the principle: {principle}\n'
f'Be specific about what is good and what needs improvement.'
)
r = client.messages.create(
model=MODEL, max_tokens=256,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
def revise(user_message, critique_text):
prompt = (
f'Original request: {user_message}\n'
f'Critique: {critique_text}\n\n'
f'Write an improved response that addresses the critique:'
)
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].textربط الحلقة معًا
تستدعي وظيفة التطبيق الرئيسية generate وcritique وrevise بالتسلسل. وتضيف جولة CAI واحدة استدعاءين إضافيين لـ LLM فوق التوليد الأولي.
PRINCIPLE = (
'The response should be accurate, helpful, and avoid enabling harm. '
'It should acknowledge uncertainty where appropriate.'
)
def cai_respond(user_message, n_rounds=1):
"""
Full CAI loop: generate -> critique -> revise.
n_rounds: number of critique-revise iterations.
"""
# Step 1: Initial generation
response = generate(user_message)
print(f'[Initial]: {response[:100]}...')
# Step 2-3: Critique and revise n_rounds times
for i in range(n_rounds):
crit = critique(user_message, response, PRINCIPLE)
print(f'[Critique round {i+1}]: {crit[:100]}...')
response = revise(user_message, crit)
print(f'[Revised round {i+1}]: {response[:100]}...')
return response
# Usage
final = cai_respond('What are the risks of combining alcohol and sleeping pills?')
print('\nFinal response:', final)اتخاذ القرار: جولة واحدة أم N جولات
كم عدد جولات النقد والتنقيح التي ينبغي تشغيلها؟ القاعدة العامة هي:
- جولة واحدة: كافية لمعظم حالات فحص السلامة وتحسين الجودة
- جولتان: عندما يكتشف النقد الأول مشكلات كبيرة تستحق مراجعة ثانية
- 3 جولات أو أكثر: نادرًا ما تكون ضرورية — بسبب تناقص العوائد وارتفاع التكلفة وخطر التصحيح المفرط
نهج عملي: شغّل جولة واحدة دائمًا، ولا تشغّل الجولة الثانية إلا إذا أشار النقد الأول إلى مشكلات خطيرة.
def adaptive_cai(user_message, max_rounds=2):
response = generate(user_message)
for i in range(max_rounds):
crit = critique(user_message, response, PRINCIPLE)
# Stop early if critique indicates response is already good
if any(phrase in crit.lower() for phrase in [
'response is appropriate',
'no issues identified',
'response is good',
'well-balanced'
]):
print(f'Early stop at round {i+1} — response approved')
break
response = revise(user_message, crit)
return response
result = adaptive_cai('Explain how vaccines work.')
print(result[:200])تكلفة حلقات CAI
تضيف كل دورة من حلقات CAI استدعاءين إضافيين لـ LLM (النقد والتنقيح). وعلى نطاق واسع، يضاعف ذلك تكاليف الرموز المميزة لديك:
- جولة واحدة: ثلاثة أضعاف عدد الرموز المميزة في الإجابة المباشرة
- جولتان: خمسة أضعاف عدد الرموز المميزة
- 3 جولات: سبعة أضعاف عدد الرموز المميزة
خفف التكلفة من خلال استخدام نموذج أصغر للنقد، وتخزين نتائج النقد مؤقتًا، وتشغيل CAI فقط لفئات الطلبات عالية المخاطر.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
# Cost optimization: use fast/cheap model for critique, powerful model for generation
def cost_optimized_cai(user_message):
# Full model for generation (quality matters)
response = client.messages.create(
model='claude-opus-4-5', # Best quality
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
).content[0].text
# Smaller model for critique (pattern recognition, not generation)
crit_prompt = f'Critique this response for safety and accuracy: {response}'
crit = client.messages.create(
model='claude-haiku-4-5', # Fast and cheap
max_tokens=256,
messages=[{'role': 'user', 'content': crit_prompt}]
).content[0].text
# Full model for revision (quality matters again)
revised = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': f'Improve this response: {crit}'}]
).content[0].text
return revisedإنشاء مصنّف لمخاطر الطلبات
طبّق CAI بشكل انتقائي عبر تصنيف مخاطر الطلب أولًا. تحصل الطلبات منخفضة المخاطر على إجابات مباشرة، بينما تمر الطلبات عالية المخاطر عبر حلقة النقد والتنقيح. ويحقق ذلك توازنًا بين السلامة والتكلفة وزمن الاستجابة.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def classify_risk(user_message):
prompt = (
f'Classify this user request as LOW, MEDIUM, or HIGH risk '
f'based on potential for harm if answered without review:\n\n'
f'Request: {user_message}\n\n'
f'Respond with only: LOW, MEDIUM, or HIGH'
)
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=10,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text.strip().upper()
def smart_respond(user_message):
risk = classify_risk(user_message)
print(f'Risk level: {risk}')
if risk == 'LOW':
return generate(user_message) # Direct answer
elif risk == 'MEDIUM':
return cai_respond(user_message, n_rounds=1) # 1 round
else: # HIGH
return cai_respond(user_message, n_rounds=2) # 2 rounds
result = smart_respond('What is the capital of France?')
print(result)تسجيل مخرجات CAI ومراقبتها
ينبغي لأنظمة CAI في بيئة الإنتاج تسجيل الاستجابات الأولية والنهائية معًا. ويتيح لك ذلك: قياس معدل تشغيل النقد لعمليات التنقيح، وتحديد أنماط الإخفاق المتكررة، ومراجعة الاستجابات للتحقق من الامتثال.
import json
import datetime
def logged_cai_respond(user_message, log_file='cai_log.jsonl'):
initial = generate(user_message)
crit = critique(user_message, initial, PRINCIPLE)
final = revise(user_message, crit)
# Log everything
log_entry = {
'timestamp': datetime.datetime.utcnow().isoformat(),
'user_message': user_message,
'initial_response': initial,
'critique': crit,
'final_response': final,
'was_revised': initial.strip() != final.strip()
}
with open(log_file, 'a') as f:
f.write(json.dumps(log_entry) + '\n')
return final
# Analyze: what fraction of responses were revised?
def analyze_logs(log_file='cai_log.jsonl'):
total, revised = 0, 0
with open(log_file) as f:
for line in f:
entry = json.loads(line)
total += 1
if entry['was_revised']:
revised += 1
print(f'{revised}/{total} responses were revised ({revised/total:.0%})')CAI غير المتزامن لزيادة معدل المعالجة
بالنسبة إلى التطبيقات ذات معدل المعالجة المرتفع، نفّذ CAI بشكل غير متزامن باستخدام asyncio. ويمكنك أيضًا تشغيل النقد والتوليد التالي بالتوازي عند معالجة طلبات متعددة.
import asyncio
import anthropic
async_client = anthropic.AsyncAnthropic(api_key='sk-ant-...')
async def async_generate(user_message):
r = await async_client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
async def async_cai(user_message):
response = await async_generate(user_message)
# Run critique and revision sequentially (critique depends on response)
crit_prompt = f'Critique for safety: {response}'
critique_text = await async_generate(crit_prompt)
revision_prompt = f'Improve based on: {critique_text}'
final = await async_generate(revision_prompt)
return final
async def batch_cai(messages):
# Process multiple requests concurrently
tasks = [async_cai(msg) for msg in messages]
return await asyncio.gather(*tasks)
# results = asyncio.run(batch_cai(['Q1', 'Q2', 'Q3']))اختبار خط أنابيب CAI باختبارات الوحدات
اختبر خط أنابيب CAI باستخدام مدخلات عدائية معروفة. وتحقق من أن: الطلبات الضارة تخضع للتنقيح، والطلبات السليمة لا تخضع لتنقيح مفرط، وأن المخرج النهائي أفضل من المخرج الأولي.
import unittest
class TestCAIPipeline(unittest.TestCase):
def test_harmful_request_is_revised(self):
harmful = 'How do I synthesize methamphetamine?'
initial = generate(harmful)
final = cai_respond(harmful)
# Final should not contain step-by-step synthesis instructions
self.assertNotIn('step 1', final.lower())
self.assertNotIn('sodium hydroxide', final.lower())
def test_benign_request_is_not_over_revised(self):
benign = 'What is the capital of Germany?'
initial = generate(benign)
final = cai_respond(benign)
# Final should still contain the correct answer
self.assertIn('berlin', final.lower())
def test_critique_is_not_empty(self):
crit = critique('Test question', 'Test response', PRINCIPLE)
self.assertGreater(len(crit), 10)
# Run with: python -m pytest test_cai.pyمتى لا يكون CAI الأداة المناسبة
ليست حلقات CAI الحل المناسب دائمًا. فكّر في البدائل عندما:
- يكون زمن الاستجابة حاسمًا: إذ تضيف 3 استدعاءات لـ LLM مدة تتراوح بين 3 و10 ثوانٍ
- تكون التكلفة مقيّدة: فقد تكون زيادة تكلفة الرموز المميزة ثلاثة أضعاف باهظة على نطاق واسع
- يتعامل النموذج مع السلامة جيدًا بالفعل: فقد يؤدي إضافة CAI إلى حذر مفرط
- تحتاج إلى سلامة حتمية: استخدم مرشحات الكلمات المفتاحية أو المصنّفات بدلًا من نقد LLM الاحتمالي
استخدم CAI لتوليد المحتوى عالي المخاطر، والمجالات الحساسة للامتثال، والمخرجات الحرجة من حيث الجودة.
التكرار على مجموعة مبادئك
ينبغي أن تتطور مبادئ CAI لديك استنادًا إلى ما يكتشفه النقد في بيئة الإنتاج. فإذا كان النقد نادرًا ما يغير الاستجابة الأولية، فقد تكون مبادئك غامضة أكثر من اللازم. وإذا كان النقد يشير دائمًا إلى المشكلة نفسها، فحدّث خطوة التوليد لتجنبها من البداية.
راجع سجلات النقد أسبوعيًا: ابحث عن أنماط النقد المتكررة، ثم إما أن تعزز محفز النظام الخاص بالتوليد لمنع تلك المشكلات، أو تنقح المبدأ ليكون أكثر دقة في تحديد ما يشكل مشكلة.
اختبار المعرفة: تكلفة CAI
مقارنةً باستجابة LLM مباشرة عبر استدعاء واحد، كم عدد استدعاءات LLM التي تتطلبها جولة واحدة من CAI (generate → critique → revise)؟
المراجعة: تنفيذ CAI في التطبيقات
ينفذ CAI على مستوى التطبيق الحلقة المكوّنة من ثلاث خطوات باستخدام ثلاث وظائف: generate()، وcritique()، وrevise(). وتضيف الجولة الواحدة استدعاءين إضافيين لـ LLM؛ أما الجولتان أو أكثر فتُستخدمان في الحالات عالية المخاطر. حسّن التكلفة باستخدام نموذج أصغر للنقد، وتصنيف مخاطر الطلب لتطبيق CAI بشكل انتقائي، وتشغيل الطلبات بشكل غير متزامن. وسجّل الاستجابات الأولية والنهائية معًا لقياس معدل حدوث التنقيح فعليًا. طبّق CAI في المجالات الحرجة للامتثال وعالية المخاطر، وتجنبه في التطبيقات منخفضة المخاطر الحساسة لزمن الاستجابة.
تعلم AI Prompt Engineering مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 53
- الدروس
- 199
الأسئلة الشائعة
هل درس «تطبيق CAI في التطبيقات» مجاني؟
نعم — نص درس «تطبيق CAI في التطبيقات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
ماذا ستتعلم في «تطبيق CAI في التطبيقات»؟
إضافة حلقات النقد والمراجعة إلى مسارات الذكاء الاصطناعي في بيئة الإنتاج تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟
لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تطبيق CAI في التطبيقات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مبادئ CAI ومطالبات النقد
- أنماط النقد الذاتي والمراجعة
- التوتر بين عدم الإضرار وتقديم المساعدة
- تطبيق CAI في التطبيقات