مدلهای زبانی بزرگ وقتی از آنها بخواهید همزمان کارهای زیادی انجام دهند، دچار لغزش میشوند. یک فایل PDF پنجاه صفحهای را در پنجره چت بیندازید و بخواهید در یک نفس، یک تحلیل ساختاریافته، ارزیابی ریسک و یک خلاصه مدیریتی ارائه دهد. نتیجه معمولاً سطحی، گیجکننده یا کاملاً غلط است. رویکرد بهتر، مکانیکی است. کار را به مراحل مجزا تقسیم کنید. خروجی مرحله اول را مستقیماً به مرحله دوم بدهید و به همین ترتیب ادامه دهید. Anthropic این الگو را prompt chaining مینامد. Google به آن sequential pipeline میگوید. هر دو نام توصیفکننده یک چیز هستند: یک خط تولید که در آن هر ایستگاه یک تغییر مشخص را انجام میدهد.
این موضوع در عمل چگونه به نظر میرسد
به جای یک پرامپت غولآسا، مجموعهای از مراحل کوچک و متمرکز میسازید. یک تیم انطباق (compliance) را تصور کنید که ارزیابیهای امنیتی تأمینکنندگان را پردازش میکند. مرحله اول، متن خام را از یک PDF اسکنشده استخراج میکند. مرحله دوم، هر اشاره به استانداردهای رمزنگاری و کنترلهای دسترسی را شناسایی میکند. مرحله سوم، آن یافتهها را با یک چکلیست داخلی تطبیق میدهد. مرحله چهارم، یک یادداشت کوتاه برای مدیر امنیت پیشنویس میکند. یک عامل (agent) PDF را به متن تبدیل میکند. عامل بعدی دادههای خاص را از آن متن بیرون میکشد. عامل نهایی بر اساس آن دادهها، خلاصهای مینویسد. هیچکدام از این مراحل پرزرقوبرق نیستند و هیچکدام همزمان چند کار انجام نمیدهند. هر بخش یک کار را به خوبی انجام میدهد.
به همین دلیل است که استعاره خط تولید پابرجا میماند. در یک کارخانه، یک کارگر کل خودرو را مونتاژ نمیکند. تخصص باعث میشود کیفیت بالا و حالتهای خطا محدود بماند. همین منطق در مورد مدلهای زبانی نیز صدق میکند. پرامپتی که فقط استخراج JSON را میخواهد، نسبت به پرامپتی که در همان درخواست، نظر و قالببندی را نیز میخواهد، کمتر احتمال دارد دچار توهم (hallucinate) شود.
به جای حدس و گمان، دروازه (Gate) بسازید
ضعیفترین نقطه در هر زنجیره، مرحله انتقال (handoff) است. یک مدل ممکن است یک رد کردن مؤدبانه، تکهای از markdown به جای JSON، یا یک پاسخ ناقص برگرداند. اگر آن زباله وارد مرحله دوم شود، کل زنجیره فرو میپاشد. راه حل، یک دروازه یا Gate است.
یک Gate، فراخوانی مدل نیست؛ بلکه یک کد ساده است. شما اسکریپت کوتاهی مینویسید که بین مراحل اجرا میشود. این اسکریپت ممکن است طول خروجی را بررسی کند تا مطمئن شود خالی نیست. ممکن است یک اعتبارسنجی JSON schema انجام دهد تا تأیید کند کلیدها با آنچه مرحله سوم انتظار دارد مطابقت دارند. یک بررسی regex میتواند تأیید کند که یک آدرس ایمیل یا فیلد تاریخ واقعاً وجود دارد، حتی قبل از اینکه پرامپت بعدی ساخته شود. این کار از بروز خطاها قبل از اینکه پول خود را صرف خروجیهای بد کنید، جلوگیری میکند. هزینه یک Gate، چند میکروثانیه پردازش است، اما یک فراخوانی ناموفق LLM در مراحل بعدی، هزینه توکن، تأخیر (latency) و آرامش ذهنی شما را دارد.
آن را به عنوان یک نقطه بازرسی کیفیت در کف کارخانه در نظر بگیرید. برای شمردن قطعات نیازی به هوش مصنوعی ندارید؛ به یک خطکش نیاز دارید.
چه زمانی زنجیره بسازیم و چه زمانی متوقف شویم
زنجیرهسازی پرامپت (Prompt chaining) برای هر مشکلی مناسب نیست. زمانی از آن استفاده کنید که کار دارای مراحل ثابت و تکرارپذیر باشد. گزارشهای مالی ماهانه، بررسی قراردادهای استاندارد و خط لولههای تحلیل لاگ (log analysis) نمونههای خوبی هستند. اگر بتوانید فرآیند را به صورت یک چکلیست بنویسید، احتمالاً میتوانید آن را زنجیرهسازی کنید. همچنین زمانی که برای کارهای پیچیده به دقت بالا نیاز دارید، باید به سراغ زنجیرهسازی بروید. تقسیم یک مسئله به مراحل، مدل را مجبور میکند که در هر بار فقط یک لایه منطقی را مدیریت کند. در نهایت، دیباگ کردن زنجیرهها نسبت به پرامپتهای یکپارچه (monolithic) آسانتر است. وقتی خلاصه اشتباه است، بخش استخراج را بررسی میکنید. وقتی استخراج اشتباه است، متن منبع را بررسی میکنید. شما مصنوعات (artifacts) میانی برای بررسی در اختیار دارید.
زمانی که مراحل را از قبل نمیدانید، از زنجیرهسازی پرامپت خودداری کنید. تحقیقات اکتشافی، طوفان فکری باز یا وظایف تحقیقاتی از یک خط مستقیم پیروی نمیکنند. همچنین وقتی سرعت تنها اولویت شماست، از آن صرفنظر کنید. زنجیرهها متوالی (serial) هستند؛ مرحله دوم نمیتواند تا زمانی که مرحله اول تمام نشده، شروع شود. اگر مراحل شما به یکدیگر وابسته نیستند، به جای آن آنها را به صورت موازی اجرا کنید. دلیلی ندارد که سه ترجمه مستقل از یک سند یکسان را زنجیرهسازی کنید.
تله انعطافناپذیری
هزینه تمام این ساختار، انعطافناپذیری (rigidity) است. یک زنجیره ثابت نمیتواند با موقعیتهای جدید سازگار شود. اگر یک تأمینکننده فرمی با شش فیلد بفرستد و دروازه اعتبارسنجی طرحواره شما انتظار پنج فیلد را داشته باشد، خط تولید متوقف میشود. اگر کاربر به جای PDF، یک سند Word آپلود کند، مرحله اول خراب میشود و بقیه زنجیره چیزی برای پردازش نخواهد داشت.
بدتر از آن، خطاها منتشر میشوند. اشتباهی که در ابتدا رخ میدهد، در کل زنجیره جریان مییابد. اگر استخراجکننده PDF یک علامت منفی را از یک رقم مالی حذف کند، هر مرحله بعدی آن عدد اشتباه را به عنوان
