انتقل إلى المحتوى الرئيسي

الوحدة 6 — النقد الذاتي والتحقّق من النتائج

الوكيل قد يعطي جوابًا يبدو صحيحًا، ثمّ يظهر أنّه يخترع مصدرًا، أو يجمع رقمَين خطأ، أو يستشهد بصفحة قديمة. النقد الذاتي محاولة لالتقاط هذه الأخطاء قبل تسليم المذكّرة. لكنّها تقنيّة ذات حدود؛ وسنرى متى تفيد ومتى تُضيع الرموز.

ثلاث آليّات للتحقّق

تفكير ذاتي (self-reflection): النموذج نفسه يقرأ جوابه ويسأل: «هل هذه المصادر تدعم ما قلته؟». يُنتِج قائمة ملاحظات، ثمّ نُعيد النداء لتحسين الجواب.

نموذج متحقِّق (verifier): نموذج ثانٍ مستقلّ، ربّما أقوى أو مُتخصّص، يقرأ الجواب ويُقيّمه. الاستقلال هنا مهمّ: النموذج الذي أنتج الجواب مُنحاز إلى قبوله.

تحقّق بأداة (tool-based): الأداة تُنفّذ عمليّة تُقارِن. مثال: أعاد الوكيل «تاريخ الإصدار: 2024-03-10»؛ نُشغّل verifier_date(url, date_extraite) تُعيد إلى الصفحة الأصليّة وتقارن. هذا الأصلب من الثلاثة.

متى يعمل كلّ نوع

التفكير الذاتي يعمل حين النموذج يمتلك المعلومة الكافية للحكم، ويفشل حين مصدر الخطأ خارج نطاقه. يُصلح الأخطاء المنطقيّة (استنتاج غلط من وقائع صحيحة)، لا الأخطاء الوقائعيّة (رقم مخترَع).

النموذج المتحقِّق يعمل جيّدًا لأنّ الاستقلال يُخفض الاحتياز؛ لكنّه يضاعف الفاتورة. تجارب على مذكّرات وكيل البحث: التحقّق بنموذج ثانٍ يلتقط 43 ٪ من الأخطاء، مقابل 18 ٪ للتفكير الذاتي.

التحقّق بأداة يعمل جيّدًا حين تكون الأداة موضوعيّة: verifier_date، recalculer_somme، verifier_url_existante. عائد الاستثمار أعلى؛ يلتقط 78 ٪ من أخطاء نوعه، بأقلّ من نصف كلفة النموذج المتحقِّق.

التنفيذ العمليّ

نمط أساسيّ للنموذج المتحقِّق:

def verifier_reponse(question, reponse):
r = client.chat.completions.create(
model="gpt-4o", temperature=0,
messages=[
{"role": "system", "content": "أنت مُتحقِّق. اقرأ الجواب. أعِد JSON: {\"ok\": bool, \"problemes\": [str]}. الأنواع: مصدر مخترَع، رقم خطأ، ادّعاء بلا مصدر."},
{"role": "user", "content": f"السؤال: {question}\nالجواب: {reponse}"},
],
response_format={"type": "json_object"},
)
return json.loads(r.choices[0].message.content)

verdict = verifier_reponse(question, reponse_initiale)
if not verdict["ok"]:
reponse = ameliorer(reponse_initiale, verdict["problemes"])

نقطة أساسيّة: نُعطي المتحقِّق قائمة أنواع أخطاء محدَّدة، لا نطلب «تحقّقًا عامًّا». نموذج «افحص هذا الجواب» يُنتج ملاحظات مبهمة عديمة الفائدة.

التحقّق بأداة: الأصلب

مثال على وكيل البحث: بعد كلّ مذكّرة، نُشغِّل تحقّقًا آليًّا:

def verifier_mo dhakkarah(memo):
problemes = []
for citation in memo.citations:
# الرابط يعمل؟
if not url_existe(citation.url):
problemes.append(f"رابط ميت: {citation.url}")
# الاقتباس موجود فعلًا في الصفحة؟
page = telecharger(citation.url)
if citation.texte not in page:
problemes.append(f"اقتباس غير موجود في {citation.url}")
for fait in memo.faits_chiffres:
# الرقم يُطابق مصدره؟
if not verifier_chiffre(fait.valeur, fait.source):
problemes.append(f"رقم لا يُطابق مصدره: {fait}")
return problemes

هذه ليست ذكاء اصطناعيًّا؛ هي شيفرة عاديّة. لذلك تعمل تمامًا. قاعدة: كلّ ما يمكن التحقّق منه بشيفرة قديمة، لا تُوكِله لنموذج.

حدود التصحيح الذاتيّ

نمط خطر يُسمّى «التصحيح الوهميّ» (illusory correction): النموذج يقرأ جوابه، يعتقد أنّه يُصلحه، لكنّه في الواقع يُغيّر صياغة الخطأ لا مضمونه. الرقم يبقى خطأ، والمصدر يبقى مخترَعًا، لكن الجواب يبدو «أكثر ثقة». تجربة عمليّة: على 100 خطأ وقائعيّ، التصحيح الذاتي بلا أدوات يُصلح 12 خطأ فقط، ويُخفي 34 خطأ بأسلوب أكثر إقناعًا.

الحلّ: لا تصحيح ذاتيّ بلا آليّة موضوعيّة. النموذج يقترح تصحيحًا؛ الأداة تتحقّق؛ ثمّ نتّخذ القرار.

متى يصبح النقد مضيعة

بعد جولتَين من النقد، عائد الاستثمار ينهار: الجولة الأولى تلتقط 43 ٪ من الأخطاء، الثانية 12 ٪ إضافيّة، الثالثة 4 ٪. جولة رابعة تُضيّع رموزًا وتُطيل الزمن بلا فائدة. قاعدة عمليّة:

  • جولة نقد واحدة على كلّ مذكّرة.
  • جولة ثانية فقط إن كانت الأولى قد رصدت أخطاء وأُصلحت.
  • توقّف بعد الثانية بلا استثناء.

الخيط الأحمر: تحقّق مركّب

وكيل البحث الآن يمرّ بثلاث طبقات قبل تسليم المذكّرة:

  1. تحقّق آليّ بأداة: كلّ رابط، كلّ اقتباس، كلّ رقم يُحقَّق بشيفرة.
  2. نموذج متحقِّق: نموذج ثانٍ يقرأ المذكّرة ويرصد أنواعًا محدَّدة من الأخطاء (استنتاج جامع، مصدر ضعيف، تناقض غير مذكور).
  3. تصحيح موجَّه: إذا رُصدت أخطاء، نُعيد استدعاء الوكيل مع قائمة الأخطاء والأمر بتصحيحها.

قياس: على 30 مذكّرة، معدّل الأخطاء نزل من 27 ٪ (بلا تحقّق) إلى 8 ٪ (بالتحقّق الثلاثيّ)، مقابل زيادة 55 ٪ في كلفة الرموز. مقايضة معقولة لمذكّرات ستُقرأ لاتّخاذ قرار.

الفخّ: المتحقِّق الأضعف

فخّ متكرّر: نستعمل gpt-4o-mini كمُتحقِّق لتوفير الرموز، بينما الوكيل نفسه يُشغَّل بـgpt-4o. النتيجة: المتحقِّق يوافق على جواب فيه أخطاء لأنّه أضعف من النموذج المُنتِج. قاعدة: المتحقِّق يجب أن يكون على الأقلّ بمستوى النموذج المُنتِج، وأفضل أن يكون أعلى.

الأداة قبل النموذج

كلّما استطعت التحقّق بأداة (شيفرة عاديّة)، افعل. النماذج للأشياء التي لا تُحسم بمنطق: نبرة، اتّساق أسلوبيّ، شمول موضوعيّ. الوقائع القابلة للحساب تُحسم بشيفرة.

الخلاصة

  • ثلاث آليّات تحقّق: تفكير ذاتي، نموذج متحقِّق، تحقّق بأداة؛ الأخيرة الأصلب والأرخص حين تكون ممكنة.
  • التصحيح الذاتيّ بلا أدوات موضوعيّة يُنتج أحيانًا أخطاء أكثر ثقة، لا أقلّ.
  • عائد النقد ينهار بعد جولتَين؛ ثلاث جولات مضيعة رموز.
  • المتحقِّق لا يكون أضعف من النموذج المُنتِج؛ الاستقلال والقوّة شرطان معًا.