أنماط النقد الذاتي والمراجعة
حثّ النماذج على تقييم مخرجاتها وإعادة صياغتها وفقًا لدستور
أنماط النقد الذاتي والمراجعة درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
النقد الذاتي بوصفه أسلوبًا لكتابة المطالبات
حتى من دون عملية تدريب رسمية لـ CAI، يمكنكم توجيه أي نموذج LLM قادر إلى نقد مخرجاته وتحسينها بنفسه. ويحسّن هذا النمط من النقد الذاتي الجودة بدرجة كبيرة في المهام التي تهم فيها الدقة أو الاكتمال أو السلامة.
تتمثل الفكرة الأساسية في أن النماذج تمتلك معرفة أكبر مما تعرضه في المحاولة الأولى. وتُظهر مطالبة النقد تلك المعرفة.
النمط الأساسي لنقد الدقة
أبسط أشكال النقد الذاتي هو أن تطلبوا من النموذج مراجعة استجابته للتحقق من دقتها الواقعية وإصلاح أي أخطاء فيها.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def generate_and_self_critique(question):
# Step 1: Generate
r1 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
)
initial = r1.content[0].text
# Step 2: Accuracy critique
critique_prompt = (
f'Question: {question}\n\n'
f'Your previous answer: {initial}\n\n'
'Review your previous answer for factual accuracy. '
'Identify any errors, unsupported claims, or missing important nuances. '
'Then provide a corrected, improved answer.'
)
r2 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
)
return r2.content[0].text
result = generate_and_self_critique('What caused the fall of the Roman Empire?')
print(result[:300])نمط التحقق من الاكتمال
يطلب نقد الاكتمال من النموذج التحقق من أن استجابته تجيب إجابة كاملة عن كل جزء من السؤال. ويفيد ذلك خصوصًا في الأسئلة متعددة الأجزاء، إذ غالبًا ما تفوّت الاستجابات الأولى الأسئلة الفرعية.
COMPLETENESS_CRITIQUE = (
'Original question: {question}\n\n'
'Your previous answer: {answer}\n\n'
'Check if your answer fully addresses the question:\n'
'1. List each part or sub-question in the original question.\n'
'2. For each part, indicate whether your answer addressed it.\n'
'3. If any parts were missed or incomplete, provide a revised answer '
'that covers everything.'
)
def check_completeness(question, initial_answer, client):
prompt = COMPLETENESS_CRITIQUE.format(
question=question,
answer=initial_answer
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return response.content[0].textنمط نقد الضرر والسلامة
يطلب نقد الضرر من النموذج مراجعة استجابته بحثًا عن العواقب السلبية المحتملة قبل عرضها على المستخدمين. وهذا هو جوهر تطبيق مبادئ CAI في بيئة الإنتاج.
HARM_CRITIQUE_PROMPT = (
'Review the following assistant response for potential harms:\n\n'
'User message: {user_message}\n'
'Assistant response: {response}\n\n'
'Consider:\n'
'- Could this response enable harmful actions?\n'
'- Could it be misused by someone with bad intentions?\n'
'- Does it respect the privacy and dignity of individuals?\n'
'- Could it cause psychological harm to vulnerable users?\n\n'
'If the response has issues, explain them and provide a revised '
'version that addresses the concerns while still being helpful. '
'If the response is fine, say "Response is appropriate" and quote it back.'
)
def safety_check(user_message, response, client):
prompt = HARM_CRITIQUE_PROMPT.format(
user_message=user_message,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textالنقد متعدد المعايير
بالنسبة إلى المخرجات عالية الأهمية، انتقدوا المخرج وفق معايير متعددة في تمريرة واحدة، وذلك بسردها صراحةً. وهذا أكثر كفاءة من إجراء استدعاءات نقد منفصلة لكل معيار.
MULTI_CRITERIA_CRITIQUE = (
'Evaluate this response on three criteria:\n\n'
'Question: {question}\n'
'Response: {response}\n\n'
'Criteria:\n'
'1. ACCURACY: Are all facts correct and claims well-supported?\n'
'2. COMPLETENESS: Does it fully address the question?\n'
'3. CLARITY: Is it easy to understand for the target audience?\n\n'
'For each criterion, rate it Good/Fair/Poor and explain why.\n'
'Then provide an improved response that scores Good on all three.'
)
def multi_criteria_check(question, response, client):
prompt = MULTI_CRITERIA_CRITIQUE.format(
question=question,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textخطوة المراجعة: أفضل الممارسات
ينبغي أن تؤدي مطالبة المراجعة ثلاثة أشياء:
- تذكير النموذج بالطلب الأصلي (السياق)
- عرض نتائج النقد
- طلب استجابة مُراجعة تعالج المشكلات
لا تطلبوا من النموذج شرح النقد مرة أخرى أثناء المراجعة — بل اطلبوا منه إصلاحه فحسب. ويؤدي إبقاء مطالبة المراجعة موجهة نحو الإجراء إلى نتائج أفضل.
# Good revision prompt: action-oriented
GOOD_REVISION = (
'Given this critique of your response, please write an improved version.\n\n'
'Original question: {question}\n'
'Critique: {critique}\n\n'
'Write only the improved response — no preamble, no meta-commentary:'
)
# Bad revision prompt: too passive
BAD_REVISION = (
'Here is a critique of your response. Can you maybe consider '
'revising it somewhat based on the feedback below?\n'
'Critique: {critique}'
# Missing original question context!
# Wishy-washy language reduces revision quality
)تسلسل جولات مراجعة متعددة
غالبًا لا تكفي جولة واحدة من النقد والمراجعة عند وجود متطلبات جودة معقدة جدًا. ويمكنكم تسلسل جولات متعددة، تطبق كل منها مبدأً مختلفًا أو تتحقق من المشكلات المتبقية.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def multi_round_revision(question, n_rounds=2):
# Round 0: Initial generation
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
).content[0].text
principles = [
'factual accuracy and avoiding unsupported claims',
'completeness — ensuring all parts of the question are answered',
]
for i, principle in enumerate(principles[:n_rounds]):
critique_prompt = (
f'Question: {question}\n'
f'Current response: {response}\n\n'
f'Critique for {principle} and provide an improved version:'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
).content[0].text
print(f'Round {i+1} complete')
return responseالنقد الذاتي لتوليد التعليمات البرمجية
يكون النقد الذاتي فعالًا بصفة خاصة في توليد التعليمات البرمجية. إذ يكتب النموذج التعليمات البرمجية أولًا، ثم يراجعها بحثًا عن الأخطاء والحالات الحدية ومشكلات الأمان، وغالبًا ما يكتشف أخطاء لم يلاحظها في المرة الأولى.
CODE_CRITIQUE_PROMPT = (
'Review this Python code for correctness and security issues:\n\n'
'Task: {task}\n\n'
'Code:\n'
''''python\n'
'{code}\n'
''''\n\n'
'Check for:\n'
'1. Logic errors or off-by-one mistakes\n'
'2. Unhandled edge cases (empty input, None, division by zero)\n'
'3. Security issues (SQL injection, path traversal, etc.)\n\n'
'If issues exist, list them and provide a corrected version. '
'If the code is correct, say so and explain why it handles edge cases properly.'
)
def critique_code(task, code, client):
prompt = CODE_CRITIQUE_PROMPT.format(task=task, code=code)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textالاتساق الذاتي بوصفه بديلًا
الاتساق الذاتي هو منهج مختلف: توليد الاستجابة نفسها N مرات، ثم اختيارها بالتصويت بالأغلبية أو مطالبة النموذج بتركيب أفضل إجابة من مسودات متعددة.
استخدموا الاتساق الذاتي للأسئلة ذات الإجابات الصحيحة الواضحة. واستخدموا النقد والمراجعة عندما تكون الجودة متعددة الأبعاد (الدقة + النبرة + السلامة).
import anthropic
from collections import Counter
client = anthropic.Anthropic(api_key='sk-ant-...')
def self_consistency(question, n=5):
"""Generate N responses and pick the most common answer."""
responses = []
for _ in range(n):
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=100,
temperature=0.7,
messages=[{'role': 'user', 'content': question}]
)
responses.append(r.content[0].text.strip())
# Pick most common answer
vote = Counter(responses)
winner, count = vote.most_common(1)[0]
print(f'Consensus ({count}/{n}): {winner}')
return winner
result = self_consistency('What is the sum of angles in a triangle?')متى يضر النقد: مخاطر الإفراط في النقد
لا يكون النقد الذاتي مفيدًا دائمًا. انتبهوا إلى حالات الإخفاق التالية:
- النقد المتملق: يقول النموذج إن إجابته رائعة رغم كونها خاطئة
- الحذر المفرط: يزيل النموذج معلومات مفيدة أثناء المراجعة لأنها تبدو محفوفة بالمخاطر
- التصحيحات المُهلوسة: تضيف المراجعة أخطاء جديدة لم تكن موجودة في الأصل
يمكنكم الحد من ذلك باستخدام نموذج مختلف للنقد، وربط الانتقادات بوقائع محددة، والتحقق من المخرجات المُراجعة بمقارنتها بإجابات معروفة بصحتها.
قياس فعالية النقد
تتبّعوا ما إذا كان النقد يحسّن المخرجات فعلًا، وذلك بمقارنة الاستجابات الأولية والمُراجعة بمعيار مرجعي موثوق. ويبيّن لكم ذلك ما إذا كانت استدعاءات LLM الإضافية تستحق تكلفتها.
def measure_critique_lift(examples, generate_fn, critique_fn, metric_fn):
"""
Measure how much critique improves accuracy over initial generation.
"""
initial_scores = []
revised_scores = []
for ex in examples:
initial = generate_fn(ex.question)
revised = critique_fn(ex.question, initial)
initial_scores.append(metric_fn(ex.answer, initial))
revised_scores.append(metric_fn(ex.answer, revised))
avg_initial = sum(initial_scores) / len(initial_scores)
avg_revised = sum(revised_scores) / len(revised_scores)
print(f'Initial: {avg_initial:.1%}')
print(f'Revised: {avg_revised:.1%}')
print(f'Lift: +{avg_revised - avg_initial:.1%}')
return avg_revised - avg_initialاختبار معرفي: توقيت النقد الذاتي
ما النمط الأنسب لاكتشاف الأخطاء الواقعية في الاستجابة قبل عرضها على المستخدمين؟
المراجعة: أنماط النقد الذاتي والتنقيح
تطلب محفزات النقد الذاتي من النموذج مراجعة مخرجاته وفق معايير محددة — مثل الدقة، والاكتمال، والسلامة، أو الوضوح — ثم إنتاج نسخة منقحة ومحسّنة. ومن الأنماط الفعالة: نقد الدقة (مراجعة الأخطاء الواقعية)، والتحقق من الاكتمال (هل عالجت جميع الأجزاء؟)، ونقد الضرر (هل يمكن أن يسهّل هذا تنفيذ أفعال ضارة؟)، ومراجعة الشيفرة (التحقق من الأخطاء والحالات الطرفية). نفّذ جولات متعددة متسلسلة للمخرجات عالية المخاطر. وقِس التحسن الفعلي للتأكد من أن التكلفة الإضافية مبررة.
الأسئلة الشائعة
هل درس «أنماط النقد الذاتي والمراجعة» مجاني؟
نعم — نص درس «أنماط النقد الذاتي والمراجعة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
ماذا ستتعلم في «أنماط النقد الذاتي والمراجعة»؟
حثّ النماذج على تقييم مخرجاتها وإعادة صياغتها وفقًا لدستور تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟
لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «أنماط النقد الذاتي والمراجعة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مبادئ CAI ومطالبات النقد
- أنماط النقد الذاتي والمراجعة
- التوتر بين عدم الإضرار وتقديم المساعدة
- تطبيق CAI في التطبيقات