تصور کنید یک تغییر کوچک در فاصلههای خالی (whitespace)، دستورات حیاتی شما را به «منطقه مرگ» مدل ببرد؛ جایی که هوش مصنوعی عملاً آنها را نمیبیند. این واقعیتِ کار با مدلهای احتمالی از طریق رابطهای متنی شکننده است، همانطور که در راهنمای فنی ۶ سپتامبر ۲۰۲۶ در وبسایت dev.to منتشر شده است.
بسیاری از کاربران پرامپتنویسی را یک تمرین زبانی میبینند، اما در واقع این یک مسئله مکانی است. اکثر پرامپتها نه به دلیل نبود یک عبارت جادویی، بلکه به این دلیل شکست میخورند که متن به توکن (Token) — مثل برشهای یک کیک طولانی که مدل تکهتکه میخورد — تبدیل شده و از لایههای توجه با سوگیریهای موقعیتی عبور میکند. مدلها توکن به توکن رمزگشایی میکنند و به شدت نسبت به عبارتبندی، جایگاه و طول متن حساس هستند. حتی اگر دو پرامپت را طوری بنویسید که دقیقاً معنای یکسانی داشته باشند، مدل میتواند نرخ خطاهای متفاوتی ارائه دهد، صرفاً به این دلیل که توکنها به شکل متفاوتی تقسیم شدهاند.
وقتی پرامپتی را ارسال میکنید، مدل کاراکترها را نمیبیند؛ بلکه توالیهایی از شناسههای توکن را میبیند که به بردار معنایی (Embedding) — مثل کارت معرفی عددی برای هر واژه که میگوید این کلمه «همسایهی» چه کلمات دیگری است — در فضای چندبعدی نگاشت شدهاند. این بردارها توسط رمزگذاریهای موقعیتی مانند RoPE (Rotary Position Embeddings) تغییر میکنند تا رابطهای ریاضی بین فاصله توکن و الگوهای توجه مدل ایجاد شود. کل پرامپت، شامل پیامهای سیستمی و تاریخچه گفتگو، به یک توالی تکبعدی خودبازگشتی (Autoregressive) تبدیل شده و به پشته ترنسفورمر تغذیه میشود.

این فرآیند شبیه لنز یک دوربین است که نور را روی فیلم متمرکز میکند. بردار معنایی و رمزگذاری موقعیتی نقش لنز را دارند و لایههای توجه، همان فیلم هستند. اگر ترتیب اشیاء در صحنه را تغییر دهید، آنچه دوربین ثبت میکند تغییر میکند. در یک مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — جایگاه و قالببندی متن تعیین میکند که مدل در لحظه تولید پاسخ، روی کدام بخشها تمرکز کند.
مکانیسمهای شکست
اولین نقطه شکست، توکنسازی (Tokenization) است. یک توکنساز آموزشدیده مانند BPE (Byte Pair Encoding)، متن را به واحدهای زیر-کلمه تقسیم میکند و توالیهای پرتکرار کاراکترها را به شناسههای مجزا نگاشت میکند. این فرآیند کدر و دارای فقدان است. یک ویرایش کوچک، مثل اضافه کردن یک خط تیره یا فاصله، میتواند طول توالی توکنها و مرزهای آنها را تغییر دهد و تمام محاسبات بعدی را جابهجا کند.
به عنوان مثال، عبارت «customer support» ممکن است در یک حالت به توکنهای customer و support (با یک فاصله در ابتدا) تقسیم شود و در حالتی دیگر که خط تیره دارد، به customer و - و support. این تفاوت، موقعیت تمام توکنهای بعدی را یک یا دو جایگاه جابهجا میکند. اگر بودجه توکنها محدود باشد، این جابهجایی میتواند یک دستور حیاتی را کاملاً از پنجره زمینه (Context Window) — میزان متنی که مدل همزمان «در ذهن» نگه میدارد، شبیه میز کاری که جا برای چند ورق دارد — بیرون بیندازد.
پس از توکنسازی، هر شناسه توکن یک بردار معنایی را از یک ماتریس یادگرفته فراخوانی میکند که اطلاعات معنایی و نحوی را از آمارهای همرخدادی استخراج کرده است. در مدلهای مدرن که از RoPE استفاده میکنند، مؤلفه موقعیتی چرخشهای پیچیدهای را روی بردار اعمال میکند. این کار یک رابطه نرم بین فاصله توکن و الگوهای توجه ایجاد میکند.
سپس لایههای ترنسفورمر (Transformer) این بردارها را با خودتوجهی (Self-attention) چندسر ترکیب میکنند. هر سر توجه، وزنهای توجه را به عنوان حاصلضرب نقطهای مقیاسبندی شده بین پرسوجوها (Queries) و کلیدها (Keys) محاسبه میکند. سرهای مختلف میتوانند در تشخیص جداکنندهها، ساختار یا وابستگیهای دوربرد تخصص یابند (Causal Head Gating). چون توکنهای آینده ماسک شدهاند، نمایش هر موقعیت تنها به موقعیتهای قبلی وابسته است.
سوگیری موقعیتی و منحنی U
توکنهای ابتدایی به عنوان لنگرهای موقعیتی قوی عمل میکنند، اما تأثیر آنها با افزایش فاصله کاهش مییابد. این موضوع پدیدهای به نام «منحنی عملکرد U-شکل» را ایجاد میکند. مدلها توجه نامتناسبی به توکنهای ابتدا و انتهای توالی دارند، در حالی که اطلاعات میانی دچار افت شدید دید میشوند.
بر اساس بررسی منابع متعدد در مورد مدلهای با زمینه بلند، انتقال اطلاعات کلیدی از لبههای متن به مرکز آن، میتواند صحت پاسخدهی را بیش از ۳۰ درصد کاهش دهد، حتی اگر کل ورودی در محدوده nominal مدل باشد. این ریشه در توجه مبتنی بر RoPE دارد: حاصلضرب نقطهای بین پرسوجوها و کلیدها برای موقعیتهای دور، پس از عبور از حد معمول زمان آموزش، حساسیت خود را از دست میدهد.
برای درک بهتر، یک دستیار پاسخگویی به مشتری را در نظر بگیرید که یک پرامپت سیستمی ۲۰۰۰ توکنی دارد. این پرامپت لحن برند، قوانین ارجاع و الزامی برای گنجاندن لینک سیاست استرداد وجه را تعریف میکند. اگر این قانون در وسط پرامپت قرار داشته باشد و پرسش مشتری در انتها بیاید، مدل اغلب آن را نادیده میگیرد. دستیار بدون لینک پاسخ میدهد چون توکنهای «policy link» تقریباً هیچ توجهی در مرحله نهایی تولید دریافت نکردند. انتقال این قانون به ابتدای متن و تکرار آن یک جمله قبل از خروجی، این شکست را ترمیم میکند.
نقصهای رایج در محیط عملیاتی
در مقیاس تولید، شکستهای پرامپت طبق یک تاکسونومی جدید به ۶ دسته تقسیم میشوند:
- مشخصات و قصد: دستورات مبهم. مثلاً درخواست پاسخی «کمککننده» بدون تعریف محدودیت کانال؛ نتیجه این شد که یک دستیار برای یک شکایت در توییتر که فقط ۲۸۰ کاراکتر میپذیرفت، پاسخی همدلانه اما ۵۰۰ کلمهای تولید کرد.
- ورودی و محتوا: دادههای متناقض در خط لولههای تولید بازیابیافزا (RAG) — مثل دانشآموزی که قبل از جواب دادن، اول کتاب درسی را باز میکند و از آن نقل میآورد. اگر یک خط لوله، سیاست استرداد قدیمی را در کنار یک سؤال تغذیه کند، دستیار ممکن است با اطمینان بالا به سیاست غلط استناد کند، زیرا زمینه آلوده پرامپت بر دادههای آموزشی مدل غلبه میکند. این نوع تداخلات در دادهها میتواند منجر به تولید پاسخهای نادرست شود، موضوعی که در بررسی ۵ الگوی معماری برای مهار توهم در مدلهای زبانی به تفصیل تحلیل شده است.
- ساختار و قالببندی: نبود جداکنندهها (Delimiters). بدون جداکنندههای واضح، سرهای توجه نمیتوانند دستورات، مثالها و محتوای کاربر را بخشبندی کنند. یک دستیار ممکن است به پیام قدیمی از تاریخچه چت پاسخ دهد چون همه چیز بدون نشانگر در یک بلوک واحد قرار گرفته بود.
- زمینه و حافظه: برش خاموش (Silent Truncation). وقتی توالی از پنجره توکنها فراتر رود، قدیمیترین توکنها حذف میشوند بدون اینکه خطایی صادر شود. یک دستیار ممکن است قانون «همیشه هویت حساب را تأیید کن» را از دست بدهد و بدون آن پیش برود؛ شکستی که تنها در طول یک ممیزی امنیتی کشف شد.
- عملکرد و کارایی: پر کردن پرامپت با ۱۰,۰۰۰ توکن مثال در هر فراخوانی. در حالی که مدل کار میکند، اما سیستم به دلیل جهش در تأخیر (Latency) و هزینه، قابلیت مقیاسپذیری را از دست میدهد.
- قابلیت نگهداری: استفاده از رشتههای سختافزاری (Hardcoded) در کد بکاند بدون نسخهبندی یا تست. یک ویرایش برای رفع یک مورد خاص (edge case) میتواند ۱۰ مورد دیگر را خراب کند و پسرفتها تنها از طریق شکایات مشتریان کشف شوند.
خطرات توکنسازی و برش
توکنسازی و برش، یک پرامپت را که از نظر منطقی کامل است به یک توالی شکسته تبدیل میکنند. برش (Truncation) بهویژه خطرناک است چون خاموش است؛ توکنها از ابتدا یا وسط حذف میشوند بدون اینکه سیگنالی برای فراخوان ارسال شود. پاسخ با کد وضعیت نرمال میرسد، اما مدل به دلیل حذف دستورات هویتی محوری، به دانش پیشآموزش (Training Prior) خود بازمیگردد.
تشخیص این مورد نیازمند نظارت فعال است. باید فیلد token usage در پاسخ API را بررسی و آن را با طول مورد انتظار پرامپت تطبیق داد. در حالی که دلیل پایان (finish reason) با مقدار «length» نشان میدهد که خروجی برش خورده است، اما برش ورودی نامرئی است. ثبت تعداد توکنها به ازای هر درخواست و هشدار هنگام برخورد مصرف با حد مدل، تنها راه جلوگیری از اشتباه گرفتن خطاهای برش با خطاهای استدلالی است.
سلسلهمراتب پنهان
پرامپت شما بهندرت تنها دستوراتی است که مدل میبیند. APIها سلسلهمراتبی را اعمال میکنند که در آن پیامهای سیستمی برای بازنویسی پیامهای کاربر طراحی شدهاند. علاوه بر این، ارائهدهندگان اغلب پرامپتهای سیستمی پنهانی برای ایمنی یا برندینگ تزریق میکنند.
این لایههای پنهان میتوانند باعث رد درخواستهای عادی شوند. برای مثال، اگر شما پرامپت سیستمی را اینگونه تنظیم کنید: «شما یک عامل مودب Acme هستید، هرگز از رقبا نام نبرید، همیشه لینک کمک را قرار دهید»، ممکن است ارائهدهنده پیام ایمنی خود را که محتوای تجاری را ممنوع میکند، به ابتدای آن اضافه کند. ترکیب این دو باعث میشود مدل از پاسخ به سؤال محصول خودداری کند. چون این لایهها در ابتدای توالی قرار دارند، از مزیت موقعیتی عظیمی برخوردارند.
این ساختار همچنین مدل را در برابر تزریق پرامپت (Prompt Injection) آسیبپذیر میکند. یک کاربر مخرب میتواند متنی تزریق کند که شبیه نشانگر نقش سیستمی باشد تا دستورات شما را بازنویسی کند. در حالی که میتوانید به مدل بگویید محتوای کاربر را غیرقابلاعتماد تلقی کند، ماهیت تخت توالی توکنها به این معناست که این دفاعها کاملاً نفوذناپذیر نیستند. استاندارد OWASP LLM Top Ten توصیه میکند تمام خروجیهای مدل را به عنوان ورودی غیرقابلاعتماد برای مراحل اعتبارسنجی بعدی در نظر بگیرید.
کالبدشکافی یک پرامپت قابلاعتماد
برای مقابله با سوگیری موقعیتی و رانش دستورات (Instruction Drift)، مهندسان باید از پرامپتنویسی ساده به سمت یک «اسکلت ساختاریافته» حرکت کنند. یک پرامپت قابلاعتماد از چهار بخش صریح تشکیل شده است:
۱. نقش (Role): همسوسازی مدل با یک شخصیت و سیاستهای محوری (مثلاً: «شما یک عامل پشتیبانی برای شرکت Acme هستید»).
۲. وظیفه (Task): توصیف عینی آنچه باید تولید شود (مثلاً: «پاسخی بنویسید که با ارجاع به سیاستهای مربوطه، مشکل کاربر را حل کند»).
۳. محدودیتها (Constraints): تعریف لحن، طول و اقدامات ممنوعه (مثلاً: «پاسخها زیر ۱۵۰ کلمه باشند. از نام رقیب Globex استفاده نکنید»).
۴. قالب (Format): یک طرح خروجی مشخص (مثلاً: «پاسخ را به صورت متن ساده، با یک خط موضوع در ابتدا ارسال کنید»).
برای حداکثر دقت، نقش و قوانین محوری را در ابتدای متن قرار دهید. وظیفه، محدودیتها و قالب را در انتها بگذارید. برای قوانین حیاتی — مانند قانون اختلافات مربوط به صورتحساب — آنها را در یک جمله کوتاه درست قبل از پاسخ مدل تکرار کنید. این رویکرد ساختاریافته در واقع تلاشی برای تبدیل شهود مهندسان پرامپت به چارچوبهای آموزشی مقیاسپذیر است تا خروجیها پیشبینیپذیرتر شوند.
برای یک عامل پشتیبانی، این به معنای قرار دادن لحن برند و سیاستها در پیام سیستمی در بالا، و قرار دادن وظیفه و قالب در پیام کاربر است. این استراتژی از سوگیری تازگی (Recency Bias) مکانیسم توجه بهره میبرد تا مهمترین قوانین، آخرین چیزهایی باشند که مدل قبل از صحبت «میبیند».
این تغییر، مهندسی پرامپت را از یک «صنعت دستی» مبتنی بر عبارات جادویی به یک تمرین مهندسی منضبط تبدیل میکند. با نگاشت علائم به انواع نقصهای خاص — مانند نقص زمینه یا نقص ساختار — توسعهدهندگان میتوانند به جای حدس زدن اینکه چرا مدل «عجیب رفتار کرد»، راهکارهای هدفمندی را اعمال کنند.
گام بعدی شما
- پرامپتهای فعلی خود را بررسی کنید و دستورات حیاتی را از وسط متن به ابتدا و انتهای توالی منتقل کنید.
- در سیستمهای تولیدی، مانیتورینگ
token usageرا برای شناسایی برشهای خاموش (Silent Truncation) پیادهسازی کنید. - از جداکنندههای صریح (مانند
### Instructionsیا---) برای تفکیک بخشهای مختلف پرامپت استفاده کنید.
اما داستان سختافزاری این تحول و نحوه مدیریت حافظه در لایههای توجه حتی شگفتانگیزتر است — به تحلیل ما درباره KV Cache مراجعه کنید.




گفتگو