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

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

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

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

برای درک دقیق‌تر، باید بین دو مفهوم تفاوت قائل شویم:

  • زمینه درون‌متنی (In-context): اطلاعاتی که مستقیماً در پرامپت ارائه می‌شود.
  • زمینه خارجی (External): اطلاعاتی که مدل از منابع دیگر (مثلاً یک پایگاه داده) دریافت می‌کند.

در سامانه‌های ساده، زمینه فقط درون‌متنی است. اما در سامانه‌های پیشرفته مانند RAG (Retrieval-Augmented Generation)، زمینه از منابع خارجی بازیابی و به پرامپت تزریق می‌شود.

زمینه در مقابل دستور

زمینه و دستور، دو مفهوم متفاوت هستند. دستور می‌گوید «چه کاری انجام بده»، در حالی که زمینه می‌گوید «با در نظر گرفتن چه شرایطی». هر دو برای یک پرامپت مؤثر لازم هستند، اما نقش متفاوتی ایفا می‌کنند.

چرا زمینه بر خروجی مدل اثر می‌گذارد؟

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

کاهش ابهام

هر پرسش مبهم، چندین تفسیر ممکن دارد. زمینه، فضای تفسیر را محدود می‌کند و مدل را به سمت تفسیر درست هدایت می‌کند.

هدایت به سمت تخصص

اگر زمینه به یک حوزه تخصصی اشاره کند، مدل پاسخ‌های خود را در آن حوزه متمرکز می‌کند. برای مثال، اگر زمینه به یک فروشگاه ووکامرس با ۱۰۰۰۰ محصول اشاره کند، مدل پاسخ‌هایی با این مقیاس را ارائه می‌دهد.

افزایش دقت واقعی

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

کاهش توهم

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

اثربدون زمینهبا زمینه
دقت پاسخپایینبالا
مرتبط بودنمتوسطبالا
توهمبالاکمتر
پایداری خروجیپایینبالا

زمینه، به مدل یادآوری می‌کند که پاسخ‌ها در یک بستر مشخص شکل می‌گیرند، نه در خلأ.

انواع زمینه در پرامپت نویسی

زمینه را می‌توان بر اساس ماهیت اطلاعات، به چند دسته تقسیم کرد:

  1. زمینه کسب‌وکار: اطلاعات درباره سازمان، محصول یا مشتری.
  2. زمینه فنی: اطلاعات درباره فناوری، معماری یا محدودیت‌ها.
  3. زمینه فرهنگی: اطلاعات درباره زبان، منطقه یا مخاطب.
  4. زمینه زمانی: اطلاعات درباره دوره یا نسخه.
  5. زمینه کاربر: اطلاعات درباره کاربری که پرسش را مطرح می‌کند.

در ادامه، هر یک را به‌تفصیل بررسی می‌کنیم.

زمینه کسب‌وکار

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

اجزای زمینه کسب‌وکار

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

نمونه‌ای از زمینه کسب‌وکار

Context: We are a small B2B SaaS company with 50 employees.
We want to expand into the European market. We have a limited
marketing budget of $10,000 per month and a 6-month timeline.
Our target customers are mid-size logistics companies.

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

زمینه فنی

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

اجزای زمینه فنی

  • زبان و نسخه: PHP 8.2، Python 3.12، MySQL 8.0.
  • چارچوب: WordPress 6.4، Laravel 11، Django 5.
  • معماری: Monolithic، Microservices، Headless.
  • محدودیت‌ها: حافظه، پردازنده، پهنای باند.
  • محیط اجرا: تولید، توسعه، تست.

نمونه‌ای از زمینه فنی

Context: The application runs on WordPress 6.4 with PHP 8.2,
MySQL 8.0, and WooCommerce 8.5. The server has 4 GB RAM
and 2 vCPU. We use Redis for object caching.

این زمینه، مدل را به سمت پاسخ‌های سازگار با این محیط هدایت می‌کند.

زمینه فرهنگی و زبانی

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

اجزای زمینه فرهنگی

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

نمونه‌ای از زمینه فرهنگی

Context: The content is for Persian-speaking customers in Iran.
The tone should be professional yet approachable. Avoid
marketing clichés and exaggerated claims that are common
in the local market.

این زمینه، مدل را به سمت پاسخ‌هایی هدایت می‌کند که با فرهنگ و انتظارات مخاطب بومی هم‌خوانی دارد.

زمینه زمانی و نسخه

زمینه زمانی شامل اطلاعات درباره دوره زمانی یا نسخه محصول است. این نوع زمینه، در موضوعات فناوری حیاتی است، زیرا رفتار سیستم‌ها در نسخه‌های مختلف متفاوت است.

اجزای زمینه زمانی

  • دوره: سال جاری، فصل، رویداد خاص.
  • نسخه: نسخه نرم‌افزار، API، استاندارد.
  • وضعیت: نسخه پایدار، نسخه آزمایشی، منسوخ.

نمونه‌ای از زمینه زمانی

Context: We are running WordPress 6.4 and considering
upgrading to 6.5. Focus your advice on the specific
changes between these two versions.

این زمینه، مدل را از پاسخ‌های عمومی درباره نسخه‌های دیگر بازمی‌دارد.

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

در سامانه‌های پیشرفته، زمینه به‌صورت پویا در زمان اجرا تزریق می‌شود. این رویکرد که Context Injection نامیده می‌شود، به سامانه اجازه می‌دهد برای هر درخواست، زمینه مرتبط را ارائه دهد.

منابع تزریق زمینه

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

نمونه‌ای از تزریق زمینه

context = fetch_customer_context(user_id)
prompt = f"""
Context: {context}
Task: Recommend the next best product for this customer.
"""

این ساختار، به سامانه اجازه می‌دهد برای هر مشتری، پاسخ شخصی‌سازی‌شده تولید کند.

زمینه پویا و RAG

در سامانه‌های RAG، زمینه به‌صورت پویا از یک پایگاه دانش بازیابی و به پرامپت تزریق می‌شود. برای جزئیات، پست RAG چیست و چرا دقت را بالا می‌برد را ببینید.

انتخاب زمینه مرتبط

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

معیارهای انتخاب زمینه

  • مرتبط بودن: زمینه باید مستقیماً به وظیفه مربوط باشد.
  • کافی بودن: زمینه باید به‌اندازه‌ای باشد که مدل بتواند وظیفه را انجام دهد.
  • به‌موقع بودن: زمینه باید به‌روز باشد.
  • کوتاه بودن: زمینه نباید بیش از حد طولانی باشد.
  • دقیق بودن: زمینه نباید حاوی اطلاعات نادرست باشد.

الگوریتم‌های انتخاب زمینه

در سامانه‌های پیشرفته، از الگوریتم‌های بازیابی اطلاعات برای انتخاب زمینه مرتبط استفاده می‌شود. این الگوریتم‌ها شامل جستجوی کلیدواژه‌ای، جستجوی معنایی و جستجوی ترکیبی هستند. برای جزئیات، پست Hybrid Search برای سامانه‌های RAG را ببینید.

مدیریت پنجره زمینه

هر مدل زبانی، یک پنجره زمینه (Context Window) محدود دارد که حداکثر تعداد توکن‌های قابل پردازش را مشخص می‌کند. مدیریت این پنجره، یکی از چالش‌های اصلی در سامانه‌های تولیدی است.

راهکارهای مدیریت پنجره

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

برای جزئیات بیشتر، پست مدیریت پنجره زمینه در پرامپت نویسی را ببینید.

محدودیت توکن

محدودیت توکن، بر هزینه و تأخیر سامانه اثر می‌گذارد. برای بهینه‌سازی، پست محدودیت توکن در پرامپت نویسی را ببینید.

الگوهای غلط در مدیریت زمینه

الگوهای غلط رایج در مدیریت زمینه:

زمینه بسیار طولانی

ارائه زمینه بسیار طولانی، می‌تواند مدل را از دستور اصلی دور کند و هزینه را افزایش دهد. زمینه باید هدفمند و کوتاه باشد.

زمینه نامرتبط

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

زمینه متناقض

اگر زمینه شامل اطلاعات متناقض باشد، مدل سردرگم می‌شود. زمینه باید منسجم و بدون تناقض باشد.

نادیده گرفتن زمینه کاربر

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

عدم به‌روزرسانی زمینه

اگر زمینه به‌روز نباشد، مدل پاسخ‌های قدیمی تولید می‌کند. زمینه باید به‌صورت دوره‌ای به‌روزرسانی شود.

الگوی غلطاثرراهکار
زمینه طولانیانحراف از دستورزمینه هدفمند
زمینه نامرتبطپاسخ نامرتبطبازیابی دقیق
زمینه متناقضسردرگمی مدلپاک‌سازی زمینه
نادیده گرفتن کاربرپاسخ نامناسبشخصی‌سازی
زمینه قدیمیپاسخ نادرستبه‌روزرسانی دوره‌ای

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

زمینه چقدر باید طولانی باشد؟

زمینه باید به‌اندازه‌ای باشد که مدل بتواند وظیفه را انجام دهد، اما نه بیشتر. زمینه طولانی می‌تواند مدل را منحرف کند و هزینه را افزایش دهد. در عمل، زمینه‌ای با ۱۰۰ تا ۵۰۰ کلمه برای بیشتر وظایف کافی است.

آیا زمینه همیشه ضروری است؟

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

آیا می‌توان از چند زمینه استفاده کرد؟

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

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

دستور می‌گوید «چه کاری انجام بده»، در حالی که زمینه می‌گوید «با در نظر گرفتن چه شرایطی». هر دو برای یک پرامپت مؤثر لازم هستند، اما نقش متفاوتی دارند.

آیا زمینه می‌تواند بر امنیت اثر بگذارد؟

بله. زمینه نادرست یا آلوده می‌تواند به تزریق پرامپت منجر شود. برای جزئیات، پست تزریق پرامپت چیست را ببینید.

چگونه زمینه مرتبط را از میان حجم وسیعی از اطلاعات انتخاب کنیم؟

از الگوریتم‌های بازیابی اطلاعات استفاده کنید. این الگوریتم‌ها شامل جستجوی کلیدواژه‌ای، جستجوی معنایی و جستجوی ترکیبی هستند. برای جزئیات، پست embedding چیست را ببینید.

آیا زمینه برای مدل‌های کوچک‌تر هم مؤثر است؟

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

تفاوت In-context Learning و Fine-tuning چیست؟

In-context Learning در همان پرامپت انجام می‌شود، در حالی که Fine-tuning به آموزش مدل روی داده‌های جدید اشاره دارد. In-context Learning سریع‌تر و ارزان‌تر است، اما دائمی نیست.

آیا می‌توان زمینه را خودکار تولید کرد؟

بله. در سامانه‌های RAG و Agent-based، زمینه به‌صورت خودکار از منابع مختلف بازیابی و به پرامپت تزریق می‌شود.

آیا زمینه بر هزینه اجرا اثر دارد؟

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

آیا زمینه برای سامانه‌های چندزبانه متفاوت است؟

بله. در سامانه‌های چندزبانه، زمینه باید زبان و فرهنگ مخاطب را نیز در نظر بگیرد. این موضوع در سامانه‌های بین‌المللی حیاتی است.

نتیجه‌گیری کاربردی

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

زمینه، تفاوت میان یک پاسخ عمومی و یک پاسخ دقیقاً متناسب با موقعیت شماست.

در تجربه کار روی پروژه‌های مختلف، تفاوت میان یک پرامپت مؤثر و یک پرامپت ضعیف، اغلب در کیفیت زمینه نهفته است، نه در پیچیدگی دستور. توصیه می‌کنم زمینه‌های خود را به‌عنوان یک دارایی مستقل مدیریت کنید و از یک چارچوب بازیابی دقیق برای تزریق آن‌ها استفاده کنید. اگر در پروژه‌ای واقعی به روشی متفاوت برای مدیریت زمینه دست یافته‌اید، تجربه خودتان را با ما به اشتراک بگذارید.