Prompt Engineering بالأرقام: ما الذي يغيّر المخرجات
60 تذكرة، الكلمات نفسها بستة ترتيبات، ودقة بين 26.7% و85.0%. ثم أربع حيل شائعة مع أشرطة خطأ لكل منها.
في هذه الصفحة
إليك تذكرة دعم، وأربع قوائم انتظار يمكن أن تُوجَّه إليها.
The label on the parcel has my old surname on it.
-> billing / technical / shipping / accountلتوجيهها تحتاج إلى ثلاثة أشياء في prompt: تعريفات قوائم الانتظار، والتذكرة، والتعليمة التي تطلب اختيار واحدة. ثلاث كتل. هناك ستة ترتيبات يمكنك وضعها بها، وتحتوي الكتل على الأحرف نفسها تمامًا في الستة كلها.
على ستين تذكرة ذات إجابات معروفة، تحرز الترتيبات الستة نتائج بين 26.7 % و55.0 %. انقل الكتلتين نفسيهما من دور المستخدم إلى دور النظام، من دون تغيير أي كلمة إطلاقًا، فيسجل النموذج نفسه 76.7 %. لفّ التذكرة بوسم على نمط XML فتصل إلى 85.0 %.
لم يتغير شيء في النموذج. لم يتغير شيء في المهمة. لم تُعد كتابة كلمة واحدة. تأرجح بمقدار ثمانٍ وخمسين نقطة خرج من ترتيب النص نفسه.
لهذا يوجد هذا الفصل، ولهذا أيضًا هو أكثر موضوع في المجال امتلاءً بطقوس منقولة بلا فهم. التأثيرات حقيقية وكبيرة، ما يجعل كل حكاية تبدو مؤكدة؛ وهي غير مستقرة عبر النماذج والمهام، ما يعني أن معظم النصائح لا تتجاوز كونها حكاية. لذلك لهذا الفصل قاعدة واحدة، وكل ما فيه تابع لها:
الـ prompt يُقاس ولا يُجادَل. أربعة تنويعات على عشرين حالة لا تثبت شيئًا.
الـ prompt هو الحالة كلها
رابط إلى القسم: الـ prompt هو الحالة كلهاقبل القياسات، هناك حقيقة واحدة تفسر بهدوء نصف ما يلي.
النموذج لا يملك ذاكرة. بين نداءين لا يحتفظ بأي شيء — لا بسؤالك الأخير، ولا بإجابته الأخيرة، ولا بالملف الذي أرفقته، ولا بحقيقة أنك سألته مرتين بالفعل. يبدأ كل نداء من آلة فارغة، والشيء الوحيد الذي تعرفه تلك الآلة هو تسلسل الـ tokens الذي سلّمته لها للتو.
ما يبدو ذاكرة في واجهة محادثة هو أن عميلك يعيد إرسال المحادثة كاملة، كل دور، من البداية. يقرأ النموذج كل ذلك من الصفر مرة أخرى، في كل مرة. قاس الفصل 13 تكلفة إعادة القراءة تلك في forward pass؛ ويحولها الفصل 16 إلى سطر على فاتورة. ما يهم هنا هو نتيجة التصميم: الـ prompt ليس رسالة إلى نظام لديه حالة. إنه الحالة.
هذا ينهي عائلة من الالتباسات. «نسي النموذج ما قلته له» تعني عادةً أن ذلك لم يُرسَل إليه أصلًا. «تجاهل تعليمتي السابقة» تعني عادةً أن التعليمة خرجت من النافذة عندما قُصَّ التاريخ. «تصرف بشكل مختلف في الإنتاج» تعني عادةً أن الإنتاج يجمّع prompt مختلفًا عن الذي اختبرته. لا شيء من هذا مشكلة نموذج، ولا يُصلَح أي منه بإعادة صياغة شيء.
منصة القياس
رابط إلى القسم: منصة القياسالقول إن «هذا prompt أفضل» هو قول عن توزيع، ولا يمكنك رؤية توزيع بالنظر إلى مخرج واحد. ما تحتاجه ممل: حالات ذات إجابات معروفة، وN من التنويعات، وفاصل.
الـ harness خمسون سطرًا من TypeScript بالشكل نفسه مثل العميل في الفصل 14 — طلب، وموعد نهائي، وبعض التوازي، وعدّاد. يظهر مجددًا في الفصل 19 لتقييم مسترجِع، وفي الفصل 29 بوصفه المجموعة الذهبية.
export type Case = { input: string; expected: string };
export type Variant = { name: string; build: (c: Case) => ChatMessage[] };
async function pooled<T, R>(xs: T[], n: number, f: (x: T) => Promise<R>) {
const out: R[] = new Array(xs.length);
let i = 0;
await Promise.all(
Array.from({ length: n }, async () => {
while (i < xs.length) {
const k = i++;
out[k] = await f(xs[k]);
}
}),
);
return out;
}
export async function runVariant(v: Variant, cases: Case[], concurrency = 6) {
const hits = await pooled(cases, concurrency, async (c) => {
const answer = await complete(v.build(c));
return answer.trim().toLowerCase() === c.expected;
});
return { name: v.name, hits, k: hits.filter(Boolean).length, n: cases.length };
}الرقم الذي يعود ليس النتيجة. هذه هي:
/** 95 % Wilson score interval for a proportion. Chapter 4 derives it. */
export function wilson(k: number, n: number, z = 1.96) {
const p = k / n;
const d = 1 + (z * z) / n;
const centre = (p + (z * z) / (2 * n)) / d;
const half = (z * Math.sqrt((p * (1 - p)) / n + (z * z) / (4 * n * n))) / d;
return [Math.max(0, centre - half), Math.min(1, centre + half)] as const;
}قدّم الفصل 4 الحجة، وهذا الفصل يصرفها. سبعة عشر صحيحًا من عشرين تساوي 85 %، ويمتد فاصلها عند 95 % من 64 % إلى 95 %. تنويعة تسجل 13 من 20 — أي 65 %، وهو ما يبدو أسوأ بوضوح — لها فاصل من 43 % إلى 82 %. هذان الفاصلان يتداخلان على معظم طولهما تقريبًا. عشرون حالة لا تستطيع تمييز prompt جيد من آخر متوسط، ومعظم نصائح prompt المنشورة صُدِّقت على أقل من ذلك.
ستون حالة، وهو ما يستخدمه هذا الفصل، لا تزال ليست كثيرة. لكنها تكفي لرؤية التأثيرات الكبيرة، وصادقة بما يكفي لتعترف عندما لا تستطيع رؤية التأثيرات الصغيرة — وستعترف بذلك عدة مرات أدناه.
الموضع: الكلمات نفسها، ستة ترتيبات
رابط إلى القسم: الموضع: الكلمات نفسها، ستة ترتيباتثلاث كتل — القواعد R، والتذكرة T، والتعليمة I — جُمعت في رسالة مستخدم واحدة. كل التبديلات الستة، بمحتوى مطابق على مستوى البايت، وستون حالة لكل منها.
| ترتيب الكتل الثلاث | صحيح | الدقة، Wilson 95 % |
|---|---|---|
| القواعد، التعليمة، التذكرة | 33/60 | 55.0 % [42.5, 66.9] |
| القواعد، التذكرة، التعليمة | 30/60 | 50.0 % [37.7, 62.3] |
| التذكرة، القواعد، التعليمة | 22/60 | 36.7 % [25.6, 49.3] |
| التعليمة، التذكرة، القواعد | 21/60 | 35.0 % [24.2, 47.6] |
| التعليمة، القواعد، التذكرة | 17/60 | 28.3 % [18.5, 40.8] |
| التذكرة، التعليمة، القواعد | 16/60 | 26.7 % [17.1, 39.0] |
من الأفضل إلى الأسوأ 28.3 نقطة، والفواصل لا تتداخل، لذا فهذه ليست قصة عن الضوضاء. وبما أن كل ذراع يُقيَّم على العناصر الستين نفسها، فالسؤال الأدق هو السؤال المقترن: في الحالات التي يختلف فيها ذراعان، إلى أي حد يميل الانقسام؟ الانتقال من أسوأ ترتيب إلى أفضل ترتيب قلب 21 حالة إلى صحيحة و4 إلى خاطئة — احتمال مقترن دقيق 0.0009.3
اقرأ الجدول لشكلِه لا لفائزه. الصفان الأفضل كلاهما ينتهيان بالتذكرة؛ والصفان الأسوأ كلاهما يدفنان التعليمة في الوسط أو يتركانها بعد البيانات. إنها الظاهرة نفسها التي سمّاها Liu وآخرون Lost in the Middle: المادة عند حواف prompt تُستخدم باعتمادية أكبر من المادة في الوسط.4 يسعّر الفصل 16 النافذة، ويقيس الفصل 24 التأثير كما ينبغي عند الطول، حيث ينهار الوسط كما وُصف ولا تظهر عودة التحسن في النهاية تمامًا. هنا تخرج القاعدة العملية وحدها: المهمة في الأعلى، البيانات في الأسفل، ولا شيء مهم في الوسط.
الآن انقل الكلمات نفسها بين الأدوار. أثبت الفصل 11 أن chat template ليس زخرفة حول النموذج بل جزء منه — <|im_start|>system و<|im_start|>user هما tokens حقيقية رآها النموذج ملايين المرات أثناء fine-tuning، في تلك المواضع تحديدًا. لذلك ينبغي أن يهم أي جانب من تلك العلامات تهبط عليه تعليماتك، وهذا يحدث فعلًا:
| أين تعيش الكلمات نفسها | صحيح | الدقة، Wilson 95 % |
|---|---|---|
| القواعد والتعليمة في دور النظام، والتذكرة وحدها في دور المستخدم | 46/60 | 76.7 % [64.6, 85.6] |
| القواعد في دور النظام، والتعليمة والتذكرة في دور المستخدم | 44/60 | 73.3 % [61.0, 82.9] |
| القواعد والتعليمة في دور النظام، والتعليمة مكررة بعد التذكرة | 42/60 | 70.0 % [57.5, 80.1] |
| الكتل الثلاث كلها في دور مستخدم واحد | 33/60 | 55.0 % [42.5, 66.9] |
نقل القواعد والتعليمة عبر حدّ القالب منح 21.7 نقطة — 19 حالة كسبت، و6 خسرت، واحتمال مقترن 0.0146 — من دون تغيير حرف واحد منها. هذه هي الإجابة الملموسة عن system prompt مقابل user prompt: إنهما ليسا طريقتين لقول الشيء نفسه. إنهما موضعان مختلفان للـ tokens في بنية تدرّب عليها النموذج، وموضع النظام هو حيث تنتمي التعليمات التي تنطبق على المحادثة كلها.
لاحظ الصف الثالث أيضًا. تكرار التعليمة بعد التذكرة — حيلة موصى بها على نطاق واسع — سجّل أقل من ذكرها مرة واحدة. على هذا النموذج، وفي هذه المهمة، كان قولها مرتين أسوأ من قولها مرة واحدة.
المحددات، والدرس الإحصائي المختبئ فيها
رابط إلى القسم: المحددات، والدرس الإحصائي المختبئ فيهاالـ prompt نفسه، بأفضل موضع، وستون حالة. الشيء الوحيد الذي يتغير هو ما يحيط بنص التذكرة.
| كيف حُدِّدت التذكرة | صحيح | الدقة، Wilson 95 % |
|---|---|---|
| وسم على نمط XML | 51/60 | 85.0 % [73.9, 91.9] |
| لا شيء إطلاقًا | 48/60 | 80.0 % [68.2, 88.2] |
| عنوان Markdown | 47/60 | 78.3 % [66.4, 86.9] |
تسمية، Ticket: | 46/60 | 76.7 % [64.6, 85.6] |
| أسوار hash | 45/60 | 75.0 % [62.8, 84.2] |
| triple backticks | 44/60 | 73.3 % [61.0, 82.9] |
| علامات اقتباس مزدوجة | 40/60 | 66.7 % [54.1, 77.3] |
انتشار بثماني عشرة نقطة من علامات ترقيم. لكن انظر إلى الفاصلين المتطرفين: [73.9, 91.9] و[54.1, 77.3]. إنهما يتداخلان. بالقراءة الخام — قارن أشرطة الخطأ، وإذا لامست بعضها فلا تقل شيئًا — لا يثبت هذا الجدول أي شيء.
القراءة الخام خاطئة هنا، وفهم السبب أثمن من الجدول. كل تنويعة قُيّمت على التذاكر الستين نفسها، لذا فالقياسان ليسا عينتين مستقلتين؛ إنهما مقترنان. معظم عرض كل فاصل يأتي من مصدر عدم يقين مشترك بين الذراعين — هل تمثل هذه التذاكر الستون الواقع؟ — وهذا المصدر يُلغى عندما تقارنهما ببعضهما. اسأل السؤال المقترن بدلًا من ذلك فتكون الإجابة حادة: الانتقال من علامات الاقتباس المزدوجة إلى وسم XML قلب 12 حالة إلى صحيحة و1 إلى خاطئة، واحتمال مقترن 0.0034. هذا فرق حقيقي.
ثم الاختبار نفسه يفرّغ العنوان من الهواء. تغلب وسم XML على تسمية Ticket: العادية بـ8.3 نقاط، وهو الرقم الذي كان منشور مدونة سيضعه في عنوانه. مقترنًا: 6 مكاسب، 1 خسارة، احتمال 0.1250. غير مثبت. سبع حالات فقط هي ما يستند إليه ذلك التحسن الشهير.
إذًا هناك سؤالان بأداتين مختلفتين، وخلطهما هو ما يجعل نصائح prompt تخطئ في الاتجاهين معًا:
ما مدى جودة هذا prompt؟ فاصل Wilson على دقته وحدها. واسع ما لم تكن لديك مئات الحالات. هذا هو الرقم الذي تعرضه على من يقرر الإطلاق.
هل B أفضل من A؟ الاختبار المقترن على الحالات التي يختلفان فيها. أكثر حساسية بكثير، لأن الصعوبة المشتركة للمجموعة تُلغى. هذا هو الرقم الذي تستخدمه للاختيار بين مرشحين.
النتيجة العامة — أن النماذج حساسة بقوة وبصورة غير قابلة للتنبؤ لاختيارات تنسيق لا تحمل أي محتوى دلالي — ليست جديدة. غيّر Sclar وآخرون الفواصل والمسافات وحالة الأحرف فقط عبر عشرات المهام، ووجدوا انتشارات في الدقة واسعة بما يكفي لعكس ترتيبات النماذج المنشورة.5 النتيجة العملية ليست «استخدم وسوم XML». إنها أن التنسيق hyperparameter، وأن مسحه لا يكلف شيئًا، وأن أي مقارنة بين نموذجين تثبّت تنسيقًا واحدًا تقارن التنسيقات بقدر ما تقارن النماذج.
كم مثالًا يكفي فعلًا
رابط إلى القسم: كم مثالًا يكفي فعلًاIn-context learning — إظهار أمثلة محلولة للنموذج داخل prompt وجعله يعمم منها من دون أي تحديث للأوزان — هي القدرة التي جعلت GPT-3 مشهورًا.6 السؤال العملي ليس أبدًا هل تعمل. بل كم مثالًا يستحق أن تدفع ثمنه.
تدخل الأمثلة كأدوار سابقة حقيقية، بالتناوب بين المستخدم والمساعد، لأن هذه هي البنية التي تدرّب عليها القالب. شُغّل كل k مع خمس سحوبات عشوائية مختلفة من مجموعة منفصلة من ست عشرة تذكرة موسومة:
| الأمثلة | متوسط الدقة | أسوأ وأفضل سحبة | الانتشار عبر السحوبات |
|---|---|---|---|
| 0 | 76.7 % | — | — |
| 1 | 78.7 % | 78.3 – 80.0 % | 1.7 نقطة |
| 2 | 83.7 % | 80.0 – 86.7 % | 6.7 نقاط |
| 4 | 81.7 % | 78.3 – 86.7 % | 8.3 نقاط |
| 8 | 83.7 % | 78.3 – 88.3 % | 10.0 نقاط |
| 16 | 89.3 % | 85.0 – 93.3 % | 8.3 نقاط |
اشترى مثالان سبع نقاط. الأمثلة الستة التالية لم تشترِ شيئًا قابلًا للقياس — 83.7، ثم 81.7، ثم 83.7، سلسلة تتجول داخل ضوضائها. اشترى ستة عشر مثالًا خمس نقاط ونصف أخرى. المنحنى ليس صعودًا ناعمًا؛ إنه درجة، ثم هضبة، ثم درجة.
العمود الأهم هو الأخير. عند k = 8، أي ثمانية أمثلة صادف أنك اخترتها حرّكت الدقة 10 نقاط — أكبر من كامل المكسب من الانتقال من مثالين إلى ثمانية. والصف الأخير هو النسخة الأوضح: عند k = 16 تكون المجموعة قد نُفدت، لذلك تحتوي التشغيلات الخمس كلها على الأمثلة الستة عشر نفسها تمامًا، ولا تختلف إلا في ترتيب ظهورها. الترتيب وحده حرّك الدقة 8.3 نقاط.
هذه هي النتيجة التي أبلغ عنها Lu وآخرون، وهي تصمد أينما بُحث عنها: ترتيب الأمثلة hyperparameter حقيقي بتأثيرات تقارن بعدد الأمثلة.7 لذلك فالنصيحة الصادقة عن few-shot prompting ليست رقمًا. إنها:
ابدأ من الصفر وأضف الأمثلة فقط مقابل قياس
رابط إلى القسم: ابدأ من الصفر وأضف الأمثلة فقط مقابل قياسالأولان غالبًا يستحقان ذلك. بعدهما أنت تخمّن، والتخمين يكلف tokens في كل نداء مفرد لبقية عمر المنتج.
عامِل الاختيار بوصفه جزءًا من الـ prompt
رابط إلى القسم: عامِل الاختيار بوصفه جزءًا من الـ promptمثالان مختاران جيدًا يهزمان ثمانية مختارة بإهمال. إذا جاءت أمثلتك من أعلى جدول بيانات، فهذا هو المتغير الذي ينبغي مسحه قبل إضافة المزيد.
امسح الترتيب مرة واحدة، ثم ثبّته
رابط إلى القسم: امسح الترتيب مرة واحدة، ثم ثبّتهإنه مجاني، وتأثيره حقيقي، وعلى عكس معظم هذا الفصل لا يحتاج إلى إعادة كتابة لتجربته.
تحقق من توازن الفئات
رابط إلى القسم: تحقق من توازن الفئاتأربعة أمثلة كلها بالوسم نفسه تعلّم النموذج الوسم، لا المهمة. انهيار هذا النموذج إلى أي قائمة انتظار ذُكرت أخيرًا هو الإخفاق نفسه بزي مختلف.
أربع جمل من الإنترنت
رابط إلى القسم: أربع جمل من الإنترنتوالآن الفولكلور. كل واحدة من هذه جملة واحدة تسبق system prompt مطابقًا فيما عدا ذلك، على الحالات الستين نفسها.
| الجملة المضافة إلى system prompt | صحيح | الدقة، Wilson 95 % | مقارنة مقترنة مع baseline |
|---|---|---|---|
| لا شيء مضاف | 46/60 | 76.7 % [64.6, 85.6] | — |
| «خذ نفسًا عميقًا واعمل على هذه المشكلة بعناية.» | 47/60 | 78.3 % [66.4, 86.9] | +4 / −3, p = 1.000 |
| «هذا مهم جدًا لمسيرتي المهنية.» | 46/60 | 76.7 % [64.6, 85.6] | +5 / −5, p = 1.000 |
| «أنت خبير عالمي المستوى في عمليات دعم العملاء بخبرة عشرين عامًا.» | 42/60 | 70.0 % [57.5, 80.1] | +3 / −7, p = 0.344 |
| «سأمنحك بقشيشًا قدره $200 إذا أجبت بشكل صحيح.» | 41/60 | 68.3 % [55.8, 78.7] | +1 / −6, p = 0.125 |
| «ستُعاقَب على كل تذكرة ترسلها إلى قائمة الانتظار الخاطئة.» | 25/60 | 41.7 % [30.1, 54.3] | +3 / −24, p < 0.001 |
أربع من الخمس لم تفعل شيئًا. ليس «فعلت قليلًا»؛ بل لا شيء تستطيع ستون حالة مقترنة رؤيته. persona الخبير والرشوة سجلا كلاهما أقل من baseline غير الممسوس، وحتى هذان الانخفاضان يفشلان في الاختبار المقترن — إنها ضوضاء تشير إلى الأسفل.
الصف الثالث هو الذي يستحق التوقف عنده. «هذا مهم جدًا لمسيرتي المهنية» أنتج الدقة نفسها تمامًا، 46 من 60 — وتغيّرت عشر من الإجابات الستين، خمس في كل اتجاه. كانت الإحصائية الملخصة متطابقة والسلوك لم يكن كذلك. إذا كان تقييمك رقمًا واحدًا على مجموعة صغيرة، فقد يبدو تغيير يعيد كتابة سدس مخرجاتك كتغيير لم يفعل شيئًا، وستطلقه معتقدًا أنه مجاني.
ثم التهديد، وهو الجملة الوحيدة التي حرّكت المؤشر وحرّكته 35 نقطة إلى الأسفل، فقلبت 24 حالة من صحيحة إلى خاطئة. ليس هذا أثر تقريب؛ إنه سلوك نموذج مختلف. الدرس ليس «لا تهدد نموذجًا أبدًا». بل إن التأطير العاطفي ليس خاملًا. إنه يزيح التوزيع، أحيانًا بقوة، في اتجاه لا يستطيع أحد التنبؤ به من قراءة الجملة — وهذا تحديدًا سبب وجوب قياسه لا الاستدلال عليه.
تحذير يدين لك به هذا الفصل: اختُبرت هذه الجمل الخمس على نموذج صغير واحد ومهمة واحدة. لبعضها دعم منشور في أماكن أخرى — «خذ نفسًا عميقًا» خرجت من ورقة بحثت عن تعليمات عالية الأداء بدل اختراعها، وهذا ادعاء مختلف وأفضل من الادعاء الذي انتشر لاحقًا.8 ما يعمم ليس الجمل. بل أن القائمة التي نجت في منشورات المدونات والقائمة التي تنجو في القياس قائمتان مختلفتان، والطريقة الوحيدة لمعرفة أيهما بين يديك هي تشغيل منصة القياس.
لماذا يفشل «لا تفعل»
رابط إلى القسم: لماذا يفشل «لا تفعل»قاعدة يكررها الجميع — قل ما تريد، لا ما لا تريد — مع الغياب المعتاد لأي رقم. إليك الرقم. متطلب التنسيق نفسه، مكتوبًا بثلاث طرق، مع توليد النموذج بحرية حتى يمكن ملاحظة الامتثال:
| كيف كُتبت قاعدة التنسيق | كان المخرج كلمة واحدة مسموحًا بها بالضبط | متوسط output tokens |
|---|---|---|
| «أجب بكلمة واحدة.» | 10/60 (16.7 %) | 2.6 |
| «لا تشرح نفسك. لا تكتب جملة. لا تضف علامات ترقيم.» | 1/60 (1.7 %) | 14.0 |
| الاثنان معًا | 41/60 (68.3 %) | 2.3 |
ثلاثة نواهٍ أدت أسوأ من تعليمة واحدة، وجعلت النموذج يكتب نصًا أكثر بخمس مرات — العكس الدقيق للثلاثة كلها دفعة واحدة. إعادة الجملة الإيجابية أنقذته إلى 68 %.
الآلية ليست غامضة عندما تتذكر الفصل 8. يختار النموذج next token من توزيع مشروط بكل ما قبله، والنهي يضع الشيء الممنوع داخل ذلك الشرط. لا يوجد عامل للنفي؛ يوجد سياق تظهر فيه كلمة الآن.
وهذا يمكن قياسه مباشرة. خذ baseline prompt وأضف سطرًا واحدًا: Do not use the shipping queue for software problems. ثم انظر فقط إلى التذاكر الخمس والأربعين التي ليست تذاكر شحن:
اختيار shipping | متوسط الاحتمال على shipping | الدقة الإجمالية | |
|---|---|---|---|
| baseline | 11.1 % من الحالات الـ45 | 0.131 | 76.7 % [64.6, 85.6] |
| بعد منعه بالاسم | 37.8 % | 0.374 | 51.7 % [39.3, 63.8] |
تسمية قائمة انتظار بهدف استبعادها جعلت النموذج يختارها ثلاث مرات أكثر، وكادت تضاعف كتلة الاحتمال التي أسندها إليها ثلاث مرات، وكلّفت 25 نقطة من الدقة الإجمالية — 16 حالة خاسرة مقابل 1 كاسبة، واحتمال مقترن 0.0003.
لا تفكر في فيل، لكن مقاسًا. إعادة الكتابة واحدة دائمًا: استبدل النهي بالقاعدة الإيجابية التي تجعله غير ضروري. ليس «لا تستخدم الشحن لمشاكل البرمجيات» بل «استخدم الشحن فقط عندما تكون هناك طرد مادي معني».
المثال المضاد الصادق: chain of thought يكلف ولا يرد الثمن
رابط إلى القسم: المثال المضاد الصادق: chain of thought يكلف ولا يرد الثمنبنى الفصل 12 chain of thought كما ينبغي — كتقنية prompting أولًا،910 ثم كشيء دُرّب عليه بمكافآت قابلة للتحقق — وانتهى بتحذير أجّله إلى هذا الفصل: إخبار نموذج بأن يفكر خطوة بخطوة يتوقف عن المساعدة عندما يكون النموذج يستدل من تلقاء نفسه، وقد يضر. إليك ذلك التحذير وتحته جدول، في مهمة يسهل افتراض أن المزيد من التفكير فيها لا بد أن يكون أفضل.
يُقرأ الذراعان بالأداة نفسها وفي الموضع نفسه. الفارق الوحيد هو ما إذا كانت chain of thought كتبها النموذج نفسه موجودة أولًا في السياق.
| الذراع | صحيح | الدقة، Wilson 95 % | output tokens إضافية لكل حالة |
|---|---|---|---|
| بلا chain of thought | 37/60 | 61.7 % [49.0, 72.9] | 0 |
| chain of thought، حتى 60 tokens | 34/60 | 56.7 % [44.1, 68.4] | 53.1 |
| chain of thought، حتى 200 tokens | 34/60 | 56.7 % [44.1, 68.4] | 97.7 |
انخفضت الدقة وارتفعت التكلفة، وتنطبق قاعدة هذا الفصل نفسها على نتيجة هذا الفصل نفسها: الانخفاض هو 7 حالات كاسبة مقابل 10 خاسرة، واحتمال مقترن 0.629، أي غير مثبت. ما ثبت هو أنه أنتج ثمانية وتسعين output tokens إضافية لكل نداء ولم يشترِ بها شيئًا قابلًا للقياس. عدم اليقين كله في جانب الفائدة. الفاتورة مؤكدة.
السلسلة التي تفشل أكثر إفادة من واحدة تنجح. عندما طُلب منه التفكير في «توقف تكامل Slack لديك عن نشر الرسائل بعد الثلاثاء»، كتب النموذج:
1. Check if the issue persists on Monday.
2. Verify if there are any updates or changes in your Slack setup that
might affect message posting.
3. If no update has been made since Tuesday, check for any recent system
restarts or downtime affecting Slack functionality.
4. If you have recently installed new software or updated your
environment, ensure it's compatible with Slack version.
5. Contact Slack support for further assistance or troubleshooting steps.هذه نصيحة استكشاف أعطال كفؤة، لكنها ليست المهمة. عندما طُلب منه التفكير، انجرف النموذج إلى النوع النصي الذي يشبهه «فكّر خطوة بخطوة في تذكرة الدعم هذه» في بيانات تدريبه — ثم أجاب عن سؤال تصنيف بخمسمئة حرف من الاستدلال غير ذي الصلة داخل سياقه. تساعد chain of thought في المسائل التي لها حالة وسيطة تستحق الحساب: الحساب، والبحث متعدد القفزات، وإرضاء القيود. توجيه جملة إلى واحد من أربعة صناديق لا يملك حالة وسيطة. لا يوجد شيء تحتفظ به السلسلة، لذا فكل ما تفعله هو إضافة نص معقول المظهر يجب أن ينجو منه القرار النهائي.
نتيجتان عمليتان. أولًا، بالنسبة إلى نموذج دُرّب على الاستدلال — نماذج RLVR في الفصل 12 — تكون التعليمة أسوأ من الزائدة: يمكنها أن تستبدل السلسلة الطويلة التي كان النموذج سينتجها بسلسلة قصيرة على شكل prompt. وأخذ عينات من عدة سلاسل والتصويت، وهو ما تفعله self-consistency،11 لا يستطيع إنقاذ مهمة لا يوجد فيها شيء يُختلف عليه: إنه يضاعف التكلفة بعدد العينات لكسر تعادلات غير موجودة. قاس الفصل 12 تلك المفاضلة حيث تنطبق. ثانيًا، لاحظ تكلفة هيكل المقارنة نفسه. فرض الإجابة في سطر Final queue: أنزل ذراع عدم الاستدلال من 76.7 % إلى 61.7 %. خمس عشرة نقطة دُفعت لجعل الذراعين قابلين للمقارنة. البنية الموجودة لراحتك ليست مجانية أيضًا.
النداء نفسه، مرتين
رابط إلى القسم: النداء نفسه، مرتينقياس أخير، لأنه السؤال الذي يطرحه الجميع بعد أول نتيجة مفاجئة. ستون prompt، وgreedy decoding، تُشغَّل مرارًا:
- النداء نفسه عند تكراره مع تثبيت كل شيء أعاد احتمالات مطابقة على مستوى البت. حتمي.
- النداء نفسه مجمعًا مع جيران مختلفين — أحجام دفعات 1 و4 و12 و30 و60 — أعاد احتمالات تختلف حتى 0.0128. لم يتغير الوسم المختار أبدًا، في 0 من 60 حالة.
صمد الوسم لأن لديه هامشًا: عبر الحالات الستين كان أضيق فرق بين أعلى قائمتَي انتظار 0.0459، أي ثلاثة أضعاف ونصف الانجراف. لم يكن الاستقرار خاصية للخوارزمية. كان هامشًا، والهوامش تنفد. الفصل 17 هو حيث يعيش السبب الحسابي، وحيث تُفكك مقابض العيّنة التي توسع تلك الفجوات وتضيقها. سبب زرعه هنا هو أنه يحدّد ما يمكن أن يعنيه أي قياس prompt: تقيس منصة القياس نظامًا لا يُعاد إنتاجه إلا ضمن سماحية، وفرق نقطتين بين تنويعات يقع داخل تلك السماحية في يوم سيئ.
توقفوا عن إطلاق الآراء وابدأوا البحث
رابط إلى القسم: توقفوا عن إطلاق الآراء وابدأوا البحثكل ما سبق هو إنسان يختار تنويعة وآلة تصححها. الخطوة التالية البديهية هي ترك الآلة تختار التنويعات أيضًا.
APE يفعل ذلك بالضبط: يقترح نموذج تعليمات مرشحة، تُسجَّل على أمثلة محجوزة، وتبقى الأفضل.8 التعليمات التي يجدها كثيرًا ما تكون مما لا يكتبه إنسان، وهذا هو المقصود — البحث على ما يحقق النتيجة، لا على ما يبدو مهنيًا.
DSPy يذهب أبعد، وهو الفكرة الأكثر فائدة للمنتج.12 تصرّح بما تأخذه كل خطوة في pipeline وما تعيده، ويجمع الإطار ذلك في prompts، منتقيًا demonstrations ومحسنًا التعليمات مقابل مقياسك. غيّر النموذج فتُعيد التجميع بدل إعادة الكتابة. يتوقف الـ prompt عن كونه source code يضبطه شخص يدويًا، ويصبح artefact مولّدًا مقابل مقياس، وهذا ما كان ينبغي أن يكون عليه منذ البداية.
لا يزيل أي منهما الحاجة إلى منصة القياس. كلاهما يجعلها الشيء الوحيد الذي تحتاجه، لأن optimizer بلا مقياس لا يحسّن شيئًا.
يبقى الانضباط. تنتمي prompts إلى version control، في ملفات، بجانب الكود الذي يرسلها — لا في صف قاعدة بيانات عدّله شخص يوم الثلاثاء. تحتاج إلى معرّف نسخة مخزن بجانب كل مخرج أنتجته، وإلا في اليوم الذي يتراجع فيه شيء لن تستطيع معرفة ما تغيّر. تحتاج إلى منصة القياس في continuous integration، لأن prompt هو الجزء الوحيد من نظامك الذي يستطيع بائع إبطاله بصمت بإطلاق نموذج جديد. وتحتاج إلى حالات: لا مئة حالة ذكية، بل العشرون المملة التي انكسرت في الربع الماضي، محفوظة إلى الأبد. منصة القياس هي deliverable. الـ prompt ناتج جانبي لها.
إلى أين نذهب بعد ذلك
رابط إلى القسم: إلى أين نذهب بعد ذلككل شيء في هذا الفصل قيس بالدقة. وكل واحدة من تلك التنويعات لها سعر أيضًا.
الـ system prompt الذي اشترى 21.7 نقطة يُرسَل في كل نداء، إلى الأبد. المثالان اللذان اشتريا سبع نقاط يُرسلان في كل نداء، إلى الأبد. الستة عشر التي اشترت اثنتي عشرة نقطة تُرسل في كل نداء، إلى الأبد، وهي تقريبًا عشرة أضعاف طول السؤال الذي طرحه المستخدم فعلًا. chain of thought التي لم تشترِ شيئًا أنتجت ثمانية وتسعين token إضافيًا لكل طلب، وoutput tokens هي النوع المكلف.
لا يظهر شيء من ذلك في جدول دقة، وكلّه يظهر على فاتورة.
الفصل 16 عن الوحدة التي تُقوَّم بها هذه القرارات فعلًا. الـ token كوحدة فوترة، والـ context window كميزانية لا كذاكرة، ولماذا تكلف محادثة من أربعين دورًا أكثر بكثير من أربعين ضعف الدور الأول، وما الذي يدفع عنه prompt caching وما الذي لا يدفع عنه، ولماذا يقرر ترتيب prompt هل تصيب cache أصلًا — وهو ما يتضح أنه سبب اقتصادي ثانٍ تمامًا لوضع المادة الثابتة أولًا والمادة المتغيرة أخيرًا.
المصادر والطريقة
رابط إلى القسم: المصادر والطريقةأُنتجت منصة القياس وكل جدول باستخدام Qwen/Qwen2.5-0.5B-Instruct تحت greedy decoding، لذلك تُعاد إنتاجها بالضبط. توثيق Hugging Face حول chat templates هو المرجع لما تتوسع إليه علامات القالب في الفصل 11 فعلًا، ولحقيقة أن شحن نموذج بالقالب الخطأ إخفاق حقيقي ومتكرر. أما تأثيرات الموضع والتنسيق على نطاق الإنتاج لا المختبر، فالمراجع أعلاه هي المصادر الأساسية؛ وأدلة prompting لدى البائعين مفيدة لأمثلتها وينبغي قراءتها مع العلم بأن أيًا منها لا ينشر فاصلًا.
المراجع
رابط إلى القسم: المراجع-
Anthropic, Effective context engineering for AI agents (29 September 2025)، لتمييز prompt مقابل context المستخدم في هذا الفصل والمطوّر في الفصل 24. ↩
-
Zhao, Z., Wallace, E., Feng, S., Klein, D. and Singh, S. Calibrate Before Use: Improving Few-Shot Performance of Language Models. arXiv:2102.09690 (2021). انحياز majority-label والحداثة وcommon-token، ولماذا الدوران في منصة قياس هذا الفصل ليس اختياريًا. ↩
-
McNemar, Q. Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika 12(2), pp. 153–157 (1947). تستخدم المقارنات المقترنة في هذا الفصل صيغة binomial الدقيقة بدل تقريب chi-squared، لأن أعداد الاختلاف صغيرة. ↩
-
Liu, N. F. et al. Lost in the Middle: How Language Models Use Long Contexts. arXiv:2307.03172 (2023). ذُكرت هنا لتأثير الموضع؛ وقِيسَت عند الطول في الفصل 24. ↩
-
Sclar, M., Choi, Y., Tsvetkov, Y. and Suhr, A. Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design. arXiv:2310.11324 (2023). الفواصل والمسافات وحدها تحرك الدقة بما يكفي لإعادة ترتيب لوحات صدارة النماذج. ↩
-
Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). الورقة التي قدّمت in-context learning كقدرة لا كفضول؛ القسم 3 هو مصدر مفردات zero-shot / one-shot / few-shot التي يستخدمها الجميع الآن. ↩
-
Lu, Y., Bartolo, M., Moore, A., Riedel, S. and Stenetorp, P. Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786 (2021). النتيجة المعاد إنتاجها في جدول few-shot أعلاه. ↩
-
Zhou, Y. et al. Large Language Models Are Human-Level Prompt Engineers. arXiv:2211.01910 (2022). prompt engineering آلي بالاقتراح والتسجيل. التعليمة كثيرة الاقتباس «خذ نفسًا عميقًا» تأتي من Yang, C. et al., Large Language Models as Optimizers, arXiv:2309.03409 (2023)، التي وجدتها بالبحث على مهمة واحدة وبنموذج واحد — ادعاء لم ينجُ سليمًا في رحلته إلى منشورات المدونات. ↩ ↩2
-
Wei, J. et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903 (2022). ↩
-
Kojima, T., Gu, S. S., Reid, M., Matsuo, Y. and Iwasawa, Y. Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916 (2022). نتيجة «لنفكر خطوة بخطوة»، وتستحق القراءة لمعرفة ضيق الشروط. ↩
-
Wang, X. et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171 (2022). قيس مع تكلفته المرفقة في الفصل 12. ↩
-
Khattab, O. et al. DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines. arXiv:2310.03714 (2023). ↩