وقتی یک وظیفه چندمرحله‌ای یا پیچیده است، معمولاً مطرح کردن تمام جزئیات در قالب یک پرامپت طولانی نتیجه خوبی نمی‌دهد. در این حالت، مدل ممکن است بخشی از دستورها را نادیده بگیرد یا نتواند همه مراحل را به‌درستی دنبال کند.
Prompt Chaining رویکردی است که این مشکل را حل می‌کند: به‌جای یک پرامپت بزرگ، مسئله را به چند زیرکار کوچک‌تر تقسیم می‌کنیم. هر زیرکار با یک پرامپت جداگانه انجام می‌شود و خروجی هر مرحله، به‌عنوان ورودی مرحله بعد مورد استفاده قرار می‌گیرد.

نکته مهم در Prompt Chaining این است که خروجی هر مرحله می‌تواند پردازش یا اصلاح شود و سپس به مرحله بعد منتقل شود. به این ترتیب، پاسخ نهایی به‌صورت تدریجی شکل می‌گیرد؛ برای مثال ابتدا اطلاعات مرتبط استخراج می‌شوند، سپس پاکسازی و خلاصه می‌شوند و در نهایت پاسخ نهایی تولید می‌شود.

می‌توان این روش را به آشپزی تشبیه کرد: ابتدا مواد اولیه را آماده می‌کنید، بعد آن‌ها را می‌پزید و در مرحله آخر غذا را تزئین می‌کنید. اگر همه این مراحل را هم‌زمان انجام دهید، احتمال خطا و خراب شدن نتیجه نهایی بسیار بیشتر است.


 چرا Prompt Chaining ارزش دارد؟

الف) کیفیت و پایداری بهتر

وقتی وظیفه را خرد می‌کنی، مدل روی هر مرحله تمرکز می‌کند و احتمال خطا کمتر می‌شود.

ب) شفافیت و کنترل‌پذیری بالاتر

چون مراحل جداست، دقیقاً می‌فهمی مشکل کجاست: مرحله استخراج؟ مرحله خلاصه‌سازی؟ مرحله تولید جواب؟ همین باعث می‌شود دیباگ و بهبود خیلی راحت‌تر شود.

ج) مناسب برای محصولات واقعی

این روش مخصوصاً برای ساخت دستیارهای مکالمه‌ای (چت‌بات‌ها) و بهتر کردن تجربه کاربر کاربردی است.

مثال کوتاه:
اگر می‌خوای یک متن تبلیغاتی بسازی:

  1. اول «پرسونای مخاطب» را استخراج کن
  2. بعد «مزیت‌های محصول» را از متن ورودی بیرون بکش
  3. بعد «۳ نسخه تبلیغ» بنویس
    این معمولاً بهتر از یک پرامپت خیلی بزرگ جواب می‌دهد.
    

3) چطور یک زنجیره خوب طراحی کنیم؟

برای نوشتن یک Prompt Chain ساده و قابل اتکا، این الگو معمولاً جواب می‌دهد:

گام ۱: خروجی نهایی را دقیق تعریف کن

مثلاً: «یک جواب کوتاه و دقیق به سؤال کاربر، با لحن دوستانه، مستند به متن».

گام ۲: زیرکارها را جدا کن

سؤال: «برای رسیدن به خروجی، چه مرحله‌هایی لازم است؟»

  • پیدا کردن بخش‌های مرتبط (retrieval/quotes)
  • تمیز کردن/کاهش نویز
  • ساخت جواب نهایی با لحن مشخص

گام ۳: برای هر مرحله، “قالب خروجی” تعیین کن

خیلی مهمه. چون مرحله بعد به این خروجی وابسته است.
مثلاً مرحله ۱ خروجی را داخل <quotes> ... </quotes> بدهد تا مرحله ۲ راحت parse کند.

گام ۴: شرط‌های خطا و حالت‌های خاص را بنویس

مثلاً اگر چیزی پیدا نشد: "No relevant quotes found!" (همین دقیقاً در مثال اصلی هم آمده).

گام ۵: یک مرحله “پاکسازی/کنترل کیفیت” اضافه کن (اختیاری ولی طلایی)

مثلاً بعد از استخراج نقل‌قول‌ها، یک پرامپت کوتاه بگذار:

  • «نقل‌قول‌های تکراری را حذف کن»
  • «ارجاعات [27] را پاک کن» (خود راهنما هم پیشنهاد می‌دهد این می‌تواند یک تمرین/مرحله اضافه باشد).


مثال : سؤال‌جواب از روی یک سند (Document QA)

به جای اینکه مدل یک‌جا از روی یک سند بزرگ جواب بدهد، مرحله ۱ فقط «نقل‌قول‌های مرتبط» را دربیاورد، و مرحله ۲ با تکیه بر همان‌ها جواب نهایی را بسازد.

مرحله ۱: استخراج نقل‌قول‌های مرتبط

 «اول فقط شواهد را جمع کن، هنوز جواب نده.»

Prompt  :

تو یک دستیار مفید هستی. وظیفه‌ات کمک به پاسخ دادن به یک سؤال بر اساس یک سند است.
قدم اول: نقل‌قول‌های مرتبط با سؤال را از سندی که بین #### آمده استخراج کن.
خروجی را به صورت لیست داخل <quotes></quotes> بده. اگر چیزی پیدا نشد دقیقاً بنویس: "No relevant quotes found!"

###
{{document}}

###

سؤال: {{question}}

✅ خروجی نمونه :

<quotes>
- "Prompt chaining... task is split into subtasks..."
- "Besides achieving better performance... increases controllability..."
</quotes>

مرحله میانی : پاکسازی نقل‌قول‌ها

اگر نقل‌قول‌ها شلوغ‌اند، این مرحله کمک می‌کند:

Prompt 1.5 (پاکسازی):

نقل‌قول‌های داخل <quotes> را تمیز کن: موارد تکراری را حذف کن، خیلی طولانی‌ها را کوتاه کن، و فقط بخش‌های واقعاً مرتبط را نگه دار. خروجی را همان قالب <quotes> بده.

مرحله ۲: تولید پاسخ نهایی با تکیه بر شواهد

طبق راهنما، مرحله دوم «نقل‌قول‌ها + سند اصلی» را می‌گیرد و جواب دقیق و خوش‌لحن می‌سازد.

Prompt 2 (نسخه فارسی‌شده):

با توجه به نقل‌قول‌های مرتبط (بین <quotes></quotes>) و سند اصلی (بین ####)، به سؤال پاسخ بده. مطمئن شو پاسخ دقیق است، لحن دوستانه دارد، و کاربردی است.

###

{{document}}

###

سؤال: {{question}}

نتیجه: جواب نهایی معمولاً دقیق‌تر می‌شود چون مدل «اول شواهد» را دیده و بعد «جمع‌بندی» کرده.


نکات طلایی

  • قالب خروجی مرحله‌ها را ثابت نگه دار (مثل <quotes>). این ساده‌ترین راه برای جلوگیری از خراب شدن زنجیره است.
  • مرحله‌ها را خیلی بزرگ نکن: هر مرحله یک کار مشخص.
  • هندل کردن “هیچی پیدا نشد” را جدی بگیر (مثل همان "No relevant quotes found!").
  • اگر خروجی نهایی حساس است، یک مرحله آخر بگذار: «پاسخ را از نظر تناقض/نامرتبط بودن چک کن».

اشتباهات رایج

  • همه‌چیز را دوباره در مرحله ۲ از مدل بخواهی (پس مرحله ۱ بی‌اثر می‌شود).
  • خروجی مرحله ۱ ساختار نداشته باشد و مرحله ۲ نتواند درست ازش استفاده کند.
  • نداشتن مرحله پاکسازی وقتی داده‌ها noisy هستند.

جمع‌بندی

Prompt Chaining یعنی تقسیم یک مسئله بزرگ به چند پرامپت کوچکِ پشت‌سرهم که خروجی هرکدام ورودی بعدی می‌شود؛ نتیجه‌اش معمولاً قابل‌کنترل‌تر، قابل‌دیباگ‌تر و قابل‌اعتمادتر است.  قسمت بعد این تکنیک پرامپت نویسی را در ورک فلو های هوشیار24 میبینیم.

 

دسته بندی شده در: