
مدلهای زبانی بزرگ (LLM) میتوانند متن تولید کنند، سؤال پاسخ دهند و در انجام کارهای پیچیده به کاربران کمک کنند؛ اما برای ارائه پاسخ دقیق، فقط داشتن یک مدل قدرتمند کافی نیست. مدل باید اطلاعات مرتبط با درخواست، دستورالعملها، سابقه گفتوگو و نتایج ابزارهایی را که استفاده میکند، بهدرستی دریافت کند.
این موضوع در سیستمهای مبتنی بر AI Agent اهمیت بیشتری دارد؛ زیرا عامل هوش مصنوعی ممکن است برای انجام یک وظیفه چندمرحلهای، بارها با ابزارها تعامل کند و اطلاعات زیادی به دست آورد. اگر همه این اطلاعات بدون اولویتبندی وارد ورودی مدل شوند، احتمال افزایش هزینه، تأخیر، سردرگمی و کاهش دقت وجود دارد.
اینجاست که مفهوم Context Engineering یا مهندسی کانتکست مطرح میشود؛ رویکردی برای انتخاب، سازماندهی و مدیریت اطلاعاتی که مدل در هر مرحله از انجام وظیفه به آن نیاز دارد.
Context Engineering چیست؟
Context Engineering فرایند طراحی و مدیریت اطلاعاتی است که در اختیار مدل هوش مصنوعی قرار میگیرد تا بتواند وظیفه موردنظر را با دقت و انسجام بیشتری انجام دهد.
در این رویکرد، مسئله فقط نوشتن یک دستور خوب نیست؛ بلکه باید مشخص شود:
- چه اطلاعاتی برای انجام وظیفه لازم است؟
- کدام بخش از تاریخچه گفتوگو باید حفظ شود؟
- چه دادههایی باید از منابع خارجی بازیابی شوند؟
- کدام نتایج ابزارها ارزش نگهداری دارند؟
- چه اطلاعاتی باید خلاصه یا حذف شوند؟
- چگونه میتوان اطلاعات کاربران و نشستهای مختلف را از یکدیگر جدا نگه داشت؟
بر اساس توضیح LangChain، مهندسی کانتکست را میتوان هنر و علم قراردادن اطلاعات مناسب در پنجره زمینه مدل، در هر مرحله از مسیر اجرای یک عامل هوش مصنوعی دانست. این رویکرد بهویژه برای عاملهایی که چندین مرحله پردازش و استفاده از ابزار دارند، اهمیت دارد.
منبع: راهنمای Context Engineering در LangChain
Context Window چیست و چرا مدیریت آن اهمیت دارد؟
Context Window یا پنجره زمینه به میزان اطلاعاتی گفته میشود که مدل میتواند در یک درخواست برای پردازش و تولید پاسخ در نظر بگیرد. این اطلاعات فقط پیام کاربر نیست؛ بلکه میتواند شامل دستورالعملهای سیستم، تاریخچه مکالمه، خروجی ابزارها، اسناد بازیابیشده و حتی بخشی از پاسخ تولیدی مدل باشد.
ظرفیت Context Window با تعداد توکن اندازهگیری میشود. توکن واحد پردازش متن در مدلهای زبانی است و لزوماً معادل یک کلمه نیست.
نکته مهم این است که ظرفیت پنجره زمینه در مدلها و ارائهدهندگان مختلف یکسان نیست. همچنین افزایش ظرفیت به این معنی نیست که واردکردن تمام اطلاعات موجود همیشه نتیجه بهتری ایجاد میکند. هرچه اطلاعات نامرتبط یا متناقض بیشتری وارد شوند، مدیریت و بازیابی اطلاعات مهم دشوارتر میشود.
برای مثال، تصور کنید یک دستیار هوش مصنوعی باید به سؤال کاربر درباره وضعیت سفارش پاسخ دهد. اگر تمام تاریخچه گفتوگو، اسناد نامرتبط و خروجی ابزارهای قبلی بدون فیلتر وارد Context شوند، اطلاعات مهم سفارش ممکن است در میان دادههای اضافی گم شود.
مستندات Anthropic نیز تأکید میکند که با طولانیشدن مکالمه، مدیریت و فشردهسازی زمینه اهمیت پیدا میکند و افزایش حجم Context بهتنهایی تضمینکننده عملکرد بهتر نیست.
منبع: مستندات Context Window در Anthropic
مشکلات رایج در مدیریت Context
مدیریت نامناسب اطلاعات میتواند باعث بروز مشکلات مختلفی شود:
| مشکل | مفهوم | نمونه |
|---|---|---|
| Context Overflow | عبور حجم اطلاعات از ظرفیت قابل استفاده مدل | ارسال تمام تاریخچه و اسناد در یک درخواست |
| Context Distraction | غلبه اطلاعات اضافی بر اطلاعات مهم | ورود تعداد زیادی سند نامرتبط |
| Context Confusion | دشوارشدن تشخیص اطلاعات مرتبط | وجود چند نسخه از اطلاعات مشابه |
| Context Clash | وجود اطلاعات متناقض در Context | ثبت دو وضعیت متفاوت برای یک سفارش |
| Context Poisoning | ورود اطلاعات نادرست یا مخرب به زمینه و اثرگذاری آن بر پاسخهای بعدی | ذخیره یک پاسخ اشتباه در حافظه عامل |
این مشکلات نشان میدهند که کیفیت Context فقط به حجم آن وابسته نیست؛ اعتبار، ارتباط و نحوه سازماندهی اطلاعات نیز اهمیت دارند.
اجزای اصلی Context در یک سیستم هوش مصنوعی
یک Context مناسب معمولاً از چند بخش تشکیل میشود:
۱. System Instructions
دستورالعملهای اصلی سیستم که نقش، محدودیتها و شیوه عملکرد مدل را مشخص میکنند.
۲. User Input
درخواست فعلی کاربر که هدف اصلی مدل در همان مرحله را مشخص میکند.
۳. Conversation History
بخشهای مرتبط از مکالمات قبلی که برای حفظ پیوستگی گفتوگو لازم هستند.
۴. Retrieved Knowledge
اطلاعاتی که از پایگاه داده، فایلها، اسناد یا منابع خارجی بازیابی میشوند.
۵. Memory و State
Memory اطلاعاتی را نگهداری میکند که ممکن است در تعاملات آینده نیز مفید باشند. State وضعیت فعلی اجرای یک وظیفه یا فرایند را نشان میدهد؛ برای مثال، اینکه عامل در کدام مرحله قرار دارد یا چه کاری هنوز انجام نشده است.
۶. Tools و Tool Outputs
ابزارها میتوانند اطلاعات تازهای از وب، پایگاه داده یا سرویسهای دیگر دریافت کنند. خروجی این ابزارها در صورت ارتباط با وظیفه، بخشی از Context مرحله بعد را تشکیل میدهد.

تفاوت Memory و State چیست؟
این دو مفهوم به هم مرتبطاند، اما یکسان نیستند.
- Memory: اطلاعاتی که برای استفاده مجدد در آینده ذخیره میشوند؛ مانند ترجیح کاربر یا اطلاعات پایدار یک پروژه.
- State: وضعیت فعلی اجرای یک فرایند؛ مانند مرحله فعلی سفارش، نتیجه آخرین عملیات یا وظایف باقیمانده.
برای مثال، در یک عامل پشتیبانی مشتری، ترجیح کاربر برای دریافت پاسخ فارسی میتواند در Memory ذخیره شود؛ اما وضعیت سفارش فعلی او در State قرار میگیرد.
تفاوت Prompt Engineering، RAG و Context Engineering
این سه مفهوم با یکدیگر ارتباط دارند، اما کاربرد یکسانی ندارند.
| مفهوم | تمرکز اصلی | کاربرد |
|---|---|---|
| Prompt Engineering | طراحی دستور و نحوه بیان درخواست | مشخصکردن نقش و قالب پاسخ |
| RAG | بازیابی اطلاعات مرتبط از منابع خارجی | پاسخگویی بر اساس اسناد و دادههای بهروز |
| Context Engineering | مدیریت تمام اطلاعات ورودی مدل | انتخاب، سازماندهی، فشردهسازی و جداسازی زمینه |
Prompt Engineering بیشتر بر کیفیت دستور تمرکز دارد. RAG روشی برای بازیابی اطلاعات مرتبط و قراردادن آنها در اختیار مدل است. اما Context Engineering نگاه گستردهتری دارد و علاوه بر دستور و اطلاعات بازیابیشده، تاریخچه، حافظه، وضعیت فرایند و خروجی ابزارها را نیز مدیریت میکند.
RAG چگونه وارد فرایند Context Engineering میشود؟
در معماری Retrieval-Augmented Generation یا RAG، مدل برای پاسخگویی فقط به اطلاعات آموزشی خود متکی نیست. سیستم ابتدا اطلاعات مرتبط را از منابع مشخص بازیابی میکند و سپس آنها را در اختیار مدل قرار میدهد.
فرایند معمول RAG شامل این مراحل است:
۱. آمادهسازی دادهها: اسناد به بخشهای کوچکتر (Chunk) تقسیم و برای جستوجو آماده میشوند.
۲. ایندکسگذاری: اطلاعات با روشهایی مانند جستوجوی واژگانی، برداری یا ترکیبی قابل بازیابی میشوند.
۳. بازیابی (Retrieval): بر اساس سؤال کاربر، بخشهای مرتبط انتخاب میشوند.
۴. رتبهبندی و پالایش: نتایج نامرتبط یا کماهمیت کنار گذاشته میشوند.
۵. ساخت Context: بخشهای منتخب همراه با دستورالعمل و درخواست کاربر به مدل داده میشوند.
۶. تولید پاسخ: مدل بر اساس اطلاعات دریافتشده پاسخ میدهد و در صورت نیاز، به منابع استناد میکند.
کیفیت پاسخ RAG به کیفیت دادهها، روش تقسیم اسناد، تنظیمات بازیابی و طراحی Prompt وابسته است. بنابراین صرف استفاده از RAG تضمین نمیکند که پاسخ همیشه دقیق باشد.
منبع: مستندات RAG در Microsoft Learn
چهار روش اصلی در Context Engineering
LangChain چهار روش کاربردی برای مدیریت Context معرفی میکند: Write، Select، Compress و Isolate.
۱. Write؛ نوشتن و ذخیره اطلاعات
در این روش، اطلاعات مفید برای استفاده در مراحل بعدی ذخیره میشوند. این اطلاعات میتوانند شامل خلاصه مکالمه، ترجیحات کاربر، نتایج مهم یا وضعیت اجرای وظیفه باشند.
۲. Select؛ انتخاب اطلاعات مرتبط
بهجای ارسال تمام اطلاعات موجود، فقط دادههایی انتخاب میشوند که با درخواست فعلی ارتباط دارند.
برای مثال، اگر کاربر درباره سفارش خود سؤال میکند، اطلاعات همان سفارش و سوابق مرتبط باید انتخاب شوند؛ نه تمام اطلاعات حساب کاربری.
۳. Compress؛ فشردهسازی اطلاعات
در این روش، اطلاعات طولانی به خلاصهای کوتاهتر تبدیل میشوند، بدون اینکه جزئیات ضروری از بین بروند.
برای مثال، بهجای ارسال ۵۰ پیام قبلی، میتوان خلاصهای از تصمیمها، اطلاعات مهم و کارهای انجامشده را در اختیار مدل قرار داد.
۴. Isolate؛ جداسازی اطلاعات
اطلاعات کاربران، نشستها، وظایف یا عاملهای مختلف باید از یکدیگر جدا باشند تا دادههای یک بخش بهاشتباه وارد زمینه بخش دیگر نشوند.
این جداسازی فقط برای سیستمهای چندعاملی نیست. در یک چتبات ساده نیز باید اطلاعات هر کاربر و هر نشست بهدرستی تفکیک شود.

یک مثال عملی برای ساخت Context با پایتون
برای درک بهتر روش انتخاب و فشردهسازی، فرض کنید یک عامل هوش مصنوعی باید به سؤال کاربر درباره خطای ورود به حساب پاسخ دهد. سیستم چند قطعه اطلاعات از راهنمای پشتیبانی دارد، اما همه آنها برای این سؤال ضروری نیستند.
کد زیر یک نمونه ساده و قابل اجرا برای انتخاب اطلاعات مرتبط و ساخت Context است. این مثال از مدل زبانی یا سرویس خارجی استفاده نمیکند و فقط مرحله آمادهسازی اطلاعات را نمایش میدهد.
# اطلاعات نمونه بازیابیشده از راهنمای پشتیبانی
documents = [
{
"title": "بازیابی رمز عبور",
"tags": ["ورود", "رمز عبور", "حساب"],
"content": "برای بازیابی رمز عبور از گزینه فراموشی رمز استفاده کنید."
},
{
"title": "مشکلات پرداخت",
"tags": ["پرداخت", "تراکنش"],
"content": "وضعیت تراکنش را از بخش سوابق پرداخت بررسی کنید."
},
{
"title": "قفلشدن حساب",
"tags": ["ورود", "حساب", "امنیت"],
"content": "پس از چند تلاش ناموفق، ممکن است حساب موقتاً قفل شود."
}
]
user_question = "چرا نمیتوانم وارد حسابم شوم؟"
# انتخاب اسناد مرتبط با موضوع ورود
keywords = ["ورود", "حساب", "رمز عبور"]
selected_docs = []
for doc in documents:
if any(tag in keywords for tag in doc["tags"]):
selected_docs.append(doc)
# ساخت Context نهایی
context = "\n".join(
f"{doc['title']}: {doc['content']}"
for doc in selected_docs
)
print("سؤال کاربر:")
print(user_question)
print("\nContext انتخابشده:")
print(context)
در این مثال، اطلاعات مربوط به پرداخت انتخاب نمیشود؛ زیرا ارتباط مستقیمی با مشکل ورود ندارد. در یک سیستم واقعی، انتخاب اسناد باید با روش بازیابی مناسب، کنترل دسترسی و در صورت نیاز رتبهبندی معنایی انجام شود.
همچنین این نمونه، یک پیادهسازی کامل RAG یا اتصال به LLM نیست؛ بلکه فقط مرحله ساده انتخاب و ساخت Context را نشان میدهد.
امنیت Context و خطر Prompt Injection
یکی از چالشهای مهم در سیستمهای مبتنی بر LLM، حملات Prompt Injection است. در این نوع حمله، ورودی مخرب تلاش میکند رفتار مدل را تغییر دهد یا آن را به انجام کاری خارج از دستورالعملهای اصلی وادار کند.
این حمله میتواند مستقیم باشد؛ یعنی کاربر دستور مخرب را در پیام خود قرار دهد. همچنین ممکن است غیرمستقیم اتفاق بیفتد؛ برای مثال، یک دستور مخرب در صفحه وب، فایل یا سندی قرار داده شود که عامل هوش مصنوعی آن را بررسی میکند.
یکی از چالشهای توسعه نرمافزار با هوش مصنوعی، شناسایی آسیبپذیریها و جلوگیری از ورود دستورهای مخرب است. آشنایی با اصول امنیت در وایب کدینگ میتواند به کاهش این خطرات کمک کند

تفاوت Context Poisoning و Prompt Injection
این دو مفهوم به هم مرتبطاند، اما دقیقاً یکسان نیستند:
- Prompt Injection: تلاش برای تغییر رفتار مدل از طریق واردکردن دستورهای مخرب در ورودی مستقیم یا محتوای خارجی.
- Context Poisoning: آلودهشدن زمینه مدل به اطلاعات نادرست، گمراهکننده یا مخرب که میتواند بر پاسخهای فعلی یا مراحل بعدی اثر بگذارد.
برای کاهش خطرات امنیتی، رعایت این موارد ضروری است:
- محتوای دریافتشده از وب، فایلها و ابزارهای خارجی را قابل اعتماد فرض نکنید.
- دستورالعملهای سیستم را از دادههای خارجی جدا نگه دارید.
- برای هر ابزار فقط دسترسیهای ضروری را تعریف کنید.
- ورودی و خروجی ابزارها را اعتبارسنجی کنید.
- برای عملیات حساس مانند حذف اطلاعات یا ارسال پیام، تأیید انسانی در نظر بگیرید.
- اطلاعات کاربران و نشستهای مختلف را از یکدیگر جدا کنید.
- خروجی مدل را پیش از استفاده در سیستمهای دیگر بررسی کنید.
نکته مهم: جداکردن متن دستورالعمل از دادههای خارجی بهتنهایی یک مرز امنیتی کامل ایجاد نمیکند. کنترل مجوزها باید در لایه اجرای ابزار و خارج از مدل نیز اعمال شود.
منبع: راهنمای امنیت Prompt Injection در OWASP
برای آشنایی بیشتر با ریسکهای امنیتی ابزارهای هوش مصنوعی در فرایند توسعه نرمافزار، مقاله امنیت وایب کدینگ و توسعه نرمافزار با هوش مصنوعی را نیز مطالعه کنید.
کاربردهای Context Engineering
مهندسی کانتکست در سناریوهای مختلفی استفاده میشود:
- AI Coding Agents: انتخاب فایلهای مرتبط پروژه، خطاهای ثبتشده و خروجی تستها برای کمک به اصلاح کد.
- چتباتهای پشتیبانی: استفاده از سوابق مرتبط مشتری، اطلاعات سفارش و مستندات پشتیبانی.
- دستیارهای سازمانی: بازیابی اطلاعات از فایلها و پایگاههای داده داخلی با رعایت سطح دسترسی کاربران.
- سیستمهای RAG: انتخاب و سازماندهی بخشهای مرتبط اسناد پیش از ارسال به مدل.
- عاملهای چندمرحلهای: حفظ وضعیت اجرای وظیفه و خلاصهسازی نتایج مراحل قبلی.
در سیستمهای مبتنی بر هوش مصنوعی عاملمحور، مدیریت Context به عامل کمک میکند اطلاعات موردنیاز را در مراحل مختلف انجام وظیفه حفظ و بازیابی کند .
یکی دیگر از کاربردهای مهم Context Engineering در ابزارهای برنامهنویسی مبتنی بر هوش مصنوعی است. این ابزارها برای درک ساختار پروژه، انتخاب فایلهای مرتبط، بررسی خطاها و پیشنهاد تغییرات به اطلاعات دقیق و سازمانیافته نیاز دارند. اگر میخواهید با روش برنامهنویسی با کمک هوش مصنوعی و تکنیک وایب کدینگ آشنا شوید، میتوانید در دوره آموزش وایب کدینگ پرتقال شرکت کنید.
چگونه کیفیت Context Engineering را ارزیابی کنیم؟
برای بررسی عملکرد یک سیستم، صرفاً مشاهده یک پاسخ مناسب کافی نیست. بهتر است مجموعهای از درخواستهای آزمایشی مشخص تهیه شود و عملکرد سیستم در شرایط یکسان بررسی شود.
| معیار | چه چیزی را اندازهگیری میکند؟ | روش بررسی |
|---|---|---|
| Relevance | ارتباط اطلاعات انتخابشده با درخواست | بررسی اسناد بازیابیشده توسط کارشناس یا مجموعه پاسخهای مرجع |
| Retrieval Accuracy | دقت بازیابی اطلاعات | مقایسه نتایج بازیابی با اسناد مرتبط مشخصشده |
| Task Success Rate | موفقیت در انجام وظیفه | محاسبه تعداد وظایف تکمیلشده نسبت به کل وظایف آزمایشی |
| Context Size | حجم اطلاعات ورودی | ثبت تعداد توکنهای ورودی هر درخواست |
| Latency | زمان پاسخگویی | اندازهگیری زمان از شروع درخواست تا دریافت پاسخ |
| Tool Usage | نحوه استفاده از ابزارها | بررسی تعداد، نوع و ضرورت فراخوانی ابزارها |
| Security Tests | مقاومت در برابر ورودیهای مخرب | اجرای سناریوهای کنترلشده Prompt Injection و بررسی رفتار ابزارها |
برای مثال، اگر از ۱۰۰ درخواست آزمایشی، ۸۰ درخواست مطابق معیار موفقیت تعریفشده تکمیل شوند، نرخ موفقیت وظیفه برابر ۸۰ درصد است. این عدد صرفاً یک مثال محاسباتی است و نتیجه آزمایش یک محصول واقعی محسوب نمیشود.
برای معتبر بودن ارزیابی، باید مجموعه درخواستها، معیار موفقیت، نسخه مدل، تنظیمات و نتایج هر اجرا ثبت شوند. همچنین بهتر است تستهای امنیتی با دادههای آزمایشی و ابزارهای غیرواقعی انجام شوند تا از تغییر یا افشای اطلاعات واقعی جلوگیری شود.
چکلیست اجرایی برای مدیریت بهتر Context
پیش از پیادهسازی یا بهینهسازی یک عامل هوش مصنوعی، موارد زیر را بررسی کنید:
- ✔️هدف و وظیفه مدل بهروشنی مشخص شده است.
- ✔️اطلاعات غیرمرتبط از Context حذف میشوند.
- ✔️ تاریخچه مکالمه در صورت طولانیشدن خلاصه میشود.
- ✔️ اطلاعات ذخیرهشده در Memory اعتبارسنجی میشوند.
✔️ State فرایند بهدرستی بهروزرسانی میشود.
✔️ اطلاعات بازیابیشده از منابع خارجی بررسی میشوند.
- ✔️ دادههای کاربران و نشستها از یکدیگر جدا هستند.
- ✔️ دسترسی ابزارها به حداقل مجوز لازم محدود شده است.
- ✔️ عملیات حساس به تأیید انسانی نیاز دارند.
- ✔️ عملکرد سیستم با معیارهای مشخص ارزیابی میشود.
جمعبندی
Context Engineering یکی از بخشهای مهم طراحی سیستمهای مبتنی بر مدلهای زبانی و AI Agent است. هدف آن فقط افزایش حجم اطلاعات ورودی نیست؛ بلکه باید اطلاعات مناسب، معتبر و مرتبط در زمان درست در اختیار مدل قرار بگیرند.
با استفاده از روشهایی مانند Write، Select، Compress و Isolate میتوان زمینه ورودی مدل را بهتر مدیریت کرد، از ورود اطلاعات اضافی جلوگیری کرد و انسجام عملکرد عاملهای هوش مصنوعی را افزایش داد.
در نهایت، کیفیت یک سیستم هوش مصنوعی فقط به مدل انتخابشده وابسته نیست؛ نحوه مدیریت اطلاعات، امنیت دادهها، طراحی ابزارها و ارزیابی مداوم نیز در عملکرد آن نقش مهمی دارند.
سؤالات متداول
۱. Context Engineering چه تفاوتی با Prompt Engineering دارد؟
Prompt Engineering بر طراحی دستورهای مناسب برای مدل تمرکز دارد؛ اما Context Engineering علاوه بر دستور، تاریخچه، حافظه، اطلاعات بازیابیشده و خروجی ابزارها را نیز مدیریت میکند.
۲. آیا Context Engineering فقط برای AI Agent کاربرد دارد؟
خیر. این رویکرد در چتباتها، سیستمهای RAG، دستیارهای سازمانی و هر برنامهای که اطلاعات مختلف را به مدل زبانی ارسال میکند، کاربرد دارد.
۳. آیا افزایش Context Window همیشه باعث پاسخ بهتر میشود؟
خیر. ظرفیت بیشتر امکان پردازش اطلاعات بیشتری را فراهم میکند، اما اطلاعات نامرتبط، متناقض یا بیش از حد میتوانند کیفیت پاسخ را کاهش دهند.
۴. آیا RAG بخشی از Context Engineering است؟
RAG روشی برای بازیابی اطلاعات از منابع خارجی است. نتایج بازیابیشده میتوانند به Context اضافه شوند؛ بنابراین RAG یکی از روشهای تأمین اطلاعات برای زمینه مدل محسوب میشود.
۵. مهمترین روشهای Context Engineering کداماند؟
چهار روش رایج عبارتاند از Write برای ذخیره اطلاعات، Select برای انتخاب دادههای مرتبط، Compress برای فشردهسازی و Isolate برای جداسازی زمینهها.




