آموزش هوش مصنوعی

مهندسی زمینه؛ در هر مرحله چه اطلاعاتی به مدل بدهیم؟

پیشرفته مطالعه در ۹ دقیقه
mahdyar

مهندسی زمینه پاسخ به یک وسوسه‌ی رایج است: اینکه همه‌ی تاریخچه و همه‌ی اسناد را به مدل بدهیم تا «همه‌چیز را بداند». اما پنجره‌ی زمینه‌ی مدل محدود است و هر چیزی که در آن می‌گذارید، روی پاسخ اثر دارد. اطلاعات قدیمی، نامرتبط یا متناقض پاسخ را بدتر می‌کنند، نه بهتر.

در این قسمت از مجموعه‌ی آموزش هوش مصنوعی تخته سبز، مهندسی زمینه را از پایه یاد می‌گیریم. پنج نوع زمینه را می‌شناسیم، راهبردهای برنامه‌ریزی و مدیریت زمینه را مرور می‌کنیم و چهار خرابی رایج زمینه را با راه‌حلشان می‌بینیم. در پایان برای دانشجویی که نظرش را عوض می‌کند، زمینه‌ی درستی می‌سازیم.

مهندسی زمینه چیست؟

برای ایجنت، زمینه همان چیزی است که برنامه‌ریزی و اقدامش را هدایت می‌کند. مهندسی زمینه یعنی مطمئن شویم ایجنت اطلاعات درست را برای انجام قدم بعدی دارد. پنجره‌ی زمینه اندازه‌ی محدودی دارد؛ پس سازنده‌ی ایجنت باید تصمیم بگیرد چه اطلاعاتی وارد شود، چه اطلاعاتی حذف شود و چه اطلاعاتی فشرده شود.

مهندسی زمینه در برابر مهندسی پرامپت

مهندسی پرامپت روی مجموعه‌ای ثابت از دستورالعمل‌ها تمرکز دارد؛ همان چیزی که در قسمت‌های اول این مجموعه یاد گرفتیم. مهندسی زمینه فرایندی پویاست. در هر مرحله از کار ایجنت، زمینه‌ی تازه‌ای ساخته می‌شود که از منابع مختلف می‌آید.

به زبان ساده، مهندسی پرامپت می‌پرسد «دستور را چطور بنویسم؟». مهندسی زمینه می‌پرسد «در این لحظه، از میان همه‌ی اطلاعاتی که دارم، کدام را به مدل بدهم؟».

پنج نوع زمینه

زمینه فقط یک چیز نیست. اطلاعاتی که ایجنت لازم دارد از پنج منبع می‌آید:

  • دستورالعمل‌ها: پیام سیستمی، نمونه‌ها و قواعد رفتار ایجنت.
  • دانش: واقعیت‌ها، اطلاعات پایگاه داده، اسناد بازیابی‌شده و حافظه‌ی بلندمدت.
  • ابزارها: تعریف توابع، APIها و سرورهای MCP، همراه نتیجه‌ی اجرای آن‌ها.
  • تاریخچه‌ی گفت‌وگو: گفت‌وگوی جاری که به‌مرور طولانی‌تر می‌شود و جای بیشتری می‌گیرد.
  • ترجیحات کاربر: علاقه‌ها و محدودیت‌هایی که در طول زمان یاد گرفته شده‌اند.

هر پنج نوع با هم برای یک جای محدود رقابت می‌کنند. کار مهندسی زمینه، تقسیم عادلانه‌ی همین جاست.

راهبردهای مهندسی زمینه

مهندسی زمینه‌ی خوب دو بخش دارد: برنامه‌ریزی پیش از ساخت و مدیریت عملی هنگام اجرا.

برنامه‌ریزی؛ سه پرسش پیش از ساخت

پرسش اول: نتیجه‌ی روشن چیست؟ باید بتوانید بگویید وقتی ایجنت کارش تمام شد، دنیا چه شکلی دارد. پرسش دوم: ایجنت برای رسیدن به این نتیجه به چه اطلاعاتی نیاز دارد و این اطلاعات کجاست؟ این همان نقشه‌برداری زمینه است.

پرسش سوم: ایجنت این اطلاعات را چطور می‌گیرد؟ از طریق RAG، سرور MCP یا ابزار دیگر؟ این سه پرسش خط لوله‌ی زمینه را می‌سازند؛ مسیری که اطلاعات از منبع تا پنجره‌ی زمینه طی می‌کند.

مدیریت زمینه هنگام اجرا

چند تکنیک عملی برای مدیریت زمینه وجود دارد. دفترچه‌ی یادداشت ایجنت اطلاعات مرتبط با کار جاری را در طول یک جلسه نگه می‌دارد، بیرون از پنجره‌ی زمینه. حافظه اطلاعات را میان جلسه‌ها نگه می‌دارد؛ موضوع قسمت بعد.

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

بررسی زمینه

پس از اعمال هر راهبرد، بررسی کنید فراخوانی بعدی مدل چه چیزی دریافت کرده است. یک پرسش ساده برای اشکال‌زدایی کافی است: آیا ایجنت زمینه‌ی زیادی گرفت، زمینه‌ی اشتباه گرفت، یا زمینه‌ای که لازم داشت را از دست داد؟

برای جواب این پرسش لازم نیست متن کامل پرامپت را ثبت کنید. در محیط تولید، شناسه‌ها کافی‌اند: تعداد و شناسه‌ی سندهای نامزد و انتخاب‌شده، تعداد توکن پیش و پس از فشرده‌سازی و شناسه‌ی حافظه‌های استفاده‌شده. این کار هم اشکال‌زدایی را ممکن می‌کند و هم از حریم خصوصی کاربر محافظت می‌کند.

مثال؛ رزرو سفر با و بدون مهندسی زمینه

فرض کنید از ایجنت می‌خواهید «یک سفر به پاریس رزرو کن». ایجنتی که فقط پرامپت خوبی دارد، احتمالاً می‌پرسد «کی دوست دارید بروید؟». این پاسخ بد نیست، اما کاربر را وادار می‌کند همه‌چیز را از اول بگوید.

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

چهار خرابی رایج زمینه

زمینه‌ی بد به چهار شکل رایج خراب می‌شود. هر کدام علت و راه‌حل خودش را دارد.

مسمومیت و حواس‌پرتی

مسمومیت زمینه وقتی رخ می‌دهد که اطلاعات نادرست یا ساختگی وارد زمینه شود و مدل مرتب به آن ارجاع دهد. مثلاً ایجنت فرض می‌کند پرواز مستقیمی از یک فرودگاه کوچک وجود دارد که واقعاً وجود ندارد. این فرض ساختگی در زمینه ذخیره می‌شود و ایجنت مدام برنامه را بر اساس آن می‌چیند. راه‌حل، اعتبارسنجی پیش از افزودن به زمینه‌ی ماندگار است؛ مثلاً بررسی وجود مسیر پرواز با API واقعی.

حواس‌پرتی زمینه وقتی رخ می‌دهد که زمینه آن‌قدر بزرگ شود که مدل روی تاریخچه‌ی انباشته تمرکز کند. کاربری که مدت طولانی درباره‌ی سفر رؤیایی‌اش صحبت کرده، حالا یک سؤال ساده می‌پرسد و ایجنت درگیر جزئیات قدیمی می‌شود. راه‌حل، خلاصه‌سازی دوره‌ای تاریخچه است.

سردرگمی و تضاد

سردرگمی زمینه وقتی رخ می‌دهد که زمینه‌ی غیرضروری، معمولاً تعداد زیاد ابزار، مدل را گیج کند. ایجنتی که ده‌ها ابزار دارد، ممکن است برای سؤال «در پاریس چطور جابه‌جا شوم؟» ابزار نامرتبطی را انتخاب کند. راه‌حل، RAG روی توضیح ابزارهاست؛ فقط ابزارهای مرتبط با پرسش فعلی به مدل داده شوند.

تضاد زمینه وقتی رخ می‌دهد که اطلاعات متناقض در زمینه باشد. کاربر اول می‌گوید «کلاس اقتصادی» و بعد نظرش را عوض می‌کند و «کلاس تجاری» می‌خواهد. اگر هر دو در زمینه بمانند، ایجنت ممکن است هر کدام را انتخاب کند. راه‌حل، هرس زمینه است؛ دستور تازه جای دستور قدیمی را می‌گیرد. جدول زیر چهار خرابی را خلاصه می‌کند.

خرابینشانهراه‌حل
مسمومیتارجاع مکرر به یک اطلاعات نادرستاعتبارسنجی پیش از ذخیره در زمینه
حواس‌پرتیتمرکز بر جزئیات قدیمی گفت‌وگوخلاصه‌سازی دوره‌ای تاریخچه
سردرگمیانتخاب ابزار نامرتبطRAG روی توضیح ابزارها
تضادپاسخ ناسازگار با آخرین دستورهرس و جایگزینی دستور قدیمی

سناریوی عملی؛ دانشجویی که نظرش را عوض می‌کند

دانشجویی ابتدا برنامه‌ی مطالعه‌ی فشرده می‌خواهد؛ روزی سه ساعت. چند پیام بعد می‌گوید زمان آزادش کمتر شده و فقط روزی یک ساعت وقت دارد. حالا می‌پرسد «برنامه‌ی هفته‌ی بعد را بده».

زمینه‌ی تازه برای هر مرحله

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

ساخت زمینه تازه برای هر فراخوانی مدل از نقشه زمینه تا حل تضاد و فشرده‌سازی

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

معیار پذیرش و نمونه‌ی شکست

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

شکستی که باید عمداً دنبالش باشید این است: نگه داشتن دو محدودیت متناقض بدون مشخص کردن اینکه کدام معتبر است. اگر کل تاریخچه به مدل برسد، هر دو عدد در زمینه هستند و مدل ممکن است میانگینی بگیرد یا عدد قدیمی را انتخاب کند. این نمونه را در آزمون بسازید و مطمئن شوید قاعده‌ی «جدیدترین ترجیح معتبر است» در کد اعمال می‌شود.

تمرین عملی؛ قالب زمینه‌ی مرحله‌ای

خروجی این تمرین یک قالب زمینه‌ی مرحله‌ای با قاعده‌ی اولویت و حذف اطلاعات است:

  1. چهار بخش زمینه، یعنی پیام سیستمی، ترجیحات، خلاصه‌ی تاریخچه و اسناد مرتبط، را جداگانه بسازید.
  2. قاعده‌ی جایگزینی ترجیح تازه را پیاده کنید و سناریوی تغییر زمان آزاد را اجرا کنید.
  3. برای هر فراخوانی تعداد توکن زمینه و شناسه‌ی سندهای انتخاب‌شده را ثبت کنید.

مشخص کنید کدام بخش را واقعاً اجرا کرده‌اید و کدام هنوز فرض است.

سخن پایانی

مهندسی زمینه یعنی در هر مرحله، از میان همه‌ی اطلاعات موجود، فقط آنچه لازم است به مدل برسد. پنج نوع زمینه، یعنی دستور، دانش، ابزار، تاریخچه و ترجیحات، برای یک جای محدود رقابت می‌کنند. با برنامه‌ریزی، مدیریت عملی و بررسی مداوم، جلوی چهار خرابی رایج را می‌گیرید: مسمومیت، حواس‌پرتی، سردرگمی و تضاد. هدف نگه داشتن زمینه‌ی بیشتر نیست؛ هدف زمینه‌ی درست است.

در قسمت بعد حافظه‌ی دستیار را می‌بینیم؛ ذخیره‌ی ترجیحات مفید بدون انباشتن اطلاعات نامعتبر.

این آموزش بر پایه‌ی درس Context Engineering for AI Agents از مجموعه‌ی آزاد AI Agents for Beginners مایکروسافت (مجوز MIT) به فارسی بازنویسی و تکمیل شده است.

پرسش‌های پرتکرار

فرق مهندسی زمینه و مهندسی پرامپت چیست؟

مهندسی پرامپت روی مجموعه‌ای ثابت از دستورالعمل‌ها تمرکز دارد. مهندسی زمینه فرایندی پویاست که تعیین می‌کند در هر مرحله چه اطلاعاتی، از دستور و دانش تا ابزار و تاریخچه، وارد پنجره‌ی زمینه‌ی محدود مدل شود.

پنج نوع زمینه در ایجنت کدام‌اند؟

دستورالعمل‌ها مثل پیام سیستمی و نمونه‌ها، دانش مثل اسناد و حافظه‌ی بلندمدت، ابزارها و نتیجه‌ی اجرای آن‌ها، تاریخچه‌ی گفت‌وگو، و ترجیحات کاربر که در طول زمان یاد گرفته شده است.

مسمومیت زمینه چیست؟

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

وقتی کاربر نظرش را عوض می‌کند با زمینه چه کنیم؟

ترجیح قدیمی را از زمینه حذف یا با ترجیح تازه جایگزین کنید. نگه داشتن هر دو محدودیت متناقض باعث استدلال ناسازگار می‌شود؛ قاعده‌ی روشنی مثل «جدیدترین دستور معتبر است» لازم است.

دیدگاه‌ها

هنوز دیدگاهی ثبت نشده است. شروع‌کننده باشید — پرسش و اصلاح را با آغوش باز می‌پذیریم.

دیدگاه بگذارید

برای **پررنگ**، *مورب*، `کد` و لینک از Markdown استفاده کنید. لینک‌ها nofollow هستند.

پنج رقم داخل تصویر را وارد کنید. اعداد فارسی و انگلیسی پذیرفته می‌شوند.

تصویر کد امنیتی پنج‌رقمی

در حال دریافت کد امنیتی…

مهلت کد تمام شد. روی «کد جدید» بزنید.