پنجرهی زمینه (Context window)
جواب کوتاه
پنجرهی زمینه همهی متنیه که مدل زبانی موقع ساختن جواب میتونه ببینه؛ مثل میز کارش. دستورها، کل گفتوگوی قبلی، فایلها، پیام تازهی شما و حتی خود جوابی که داره مینویسه، همه باید روی این میز جا بشن. هر چی بیرون بمونه، برای مدل وجود نداره. مدلهای امروزی Claude پنجرهی یک میلیون توکنی دارن، ولی بزرگتر خودبهخود بهتر نیست: هر چی متن بیشتر بشه، دقت مدل توی پیدا کردن و یادآوری کمتر میشه.
میز کار
مدل زبانی یه میز کار داره. هر چی روی میزه رو میبینه. هر چی روی میز نیست، براش وجود نداره.
به این میز میگن پنجرهی زمینه. مستندات Claude تعریفش رو این میگه: همهی متنی که مدل موقع ساختن جواب میتونه بهش رجوع کنه، بهعلاوهی خود جواب. اسمش رو هم میذاره «حافظهی کاری» مدل.
دقت کنید که این با چیزهایی که مدل موقع آموزش خونده فرق داره. اون متنها مثل قفسهی کتابهای کنار اتاقن: مدل ازشون یاد گرفته و دانشش توی پارامترهاش نشسته، ولی الان جلوی چشمش نیستن. چیزی که الان جلوی چشمشه، فقط همین میزه.
چی روی میزه
خیلیها فکر میکنن پنجره فقط پیام خودشونه. ولی طبق مستندات Claude، همهی اینها حساب میشن:
دستور سیستمی، که برنامه از قبل به مدل میده (درس پیام سیستمی). تعریف ابزارها، اگه مدل ابزاری داره. همهی پیامهای قبلی و جوابهاش. فایلها، عکسها و نتیجهی ابزارها. پیام تازهی شما. و خود جواب، که داره ساخته میشه، همراه فکر کردنش اگه مدل قبل از جواب فکر کنه.
جواب هم جزو پنجرهست، چون توی درس حلقهی ساختن متن دیدیم هر تکهی جواب ته متن چسبونده میشه و توی دور بعد دیده میشه. پس هر چی ورودی بیشتر جا بگیره، جای کمتری برای جواب میمونه.
گفتوگوی بلند
حالا یه گفتوگوی معمولی رو ببینیم. شما یه چیزی میپرسید، مدل جواب میده، دوباره میپرسید:
توی هر نوبت، ورودی مدل میشه همهی گفتوگوی قبلی بهعلاوهی پیام تازه. جواب این نوبت هم جزو ورودی نوبت بعد میشه. یعنی گفتوگو هی بلندتر میشه و پنجره هی پرتر، تا به سقف نزدیک بشه.
این یه نکتهی مهم داره: مدل خودش هیچی از نوبت قبل «یادش» نیست؛ هر بار کل گفتوگو دوباره بهش داده میشه. درس مدل گفتوگوی قبلی رو چطور «به یاد» داره همین رو باز میکنه.
وقتی پر میشه
اگه گفتوگو اونقدر بلند بشه که دیگه جا نشه چی؟ یه کاری باید کرد، چون مدل نمیتونه بیشتر از پنجرهاش ببینه.
یه راه ساده اینه که قدیمیترین پیامها کنار برن تا جا باز بشه؛ «اول اومده، اول رفته». مستندات Claude میگه رابطهای چت ممکنه همین کار رو بکنن. نتیجهاش اینه که مدل اول گفتوگو رو دیگه نمیبینه. اگه اول گفتوگو یه چیز مهم گفته بودید، مثلا اسم پروژهتون یا یه قانون، ممکنه دیگه رعایت نشه.
یه راه دیگه، که مستندات Claude برای گفتوگوهای طولانی راه اصلیش میدونه، «فشردهسازی»ه: بخشهای قدیمی خلاصه میشن و خلاصه جاشون میشینه، تا جای کمتری بگیرن و چیز مهمی هم گم نشه.
یادتونه مدل کوچیک ما توی درس انتخاب محتملترین توی «خیلی خیلی خیلی» گیر کرد؟ دلیلش همین بود: پنجرهی زمینهی اون مدل فقط یه کلمه بود. یادش نبود سه بار «خیلی» گفته.
پنجرهها چطور بزرگ شدن
پنجرهها همیشه اینقدر بزرگ نبودن.
ویکیپدیا میگه نسخهی کوچیک یه مدل ۲۰۱۹ پنجرهای حدود هزار توکنی داشت؛ یعنی چند صفحه. مدل ۱۷۵ میلیاردی ۲۰۲۰ با پنجرهی ۲۰۴۸ توکنی آموزش دید. امروز مستندات Claude میگه مدلهاش پنجرهی یه میلیون توکنی دارن، و یه درخواست میتونه تا ۱۲۸ هزار توکن جواب بسازه. یعنی در چند سال، حدود پونصد برابر بزرگتر. چرا اینقدر طول کشید؟ چون حساب توجه با بلندتر شدن متن خیلی سریع گرون میشه؛ درس چرا توجه با طول متن گرون میشه این رو کامل گفته.
چقدر بزرگ
اندازهی پنجره با توکن سنجیده میشه، و تو چند سال خیلی بزرگ شده:
یه خانوادهی مدل که سال ۲۰۲۰ معرفی شد، پنجرهی ۲۰۴۸ توکنی داشت. طبق مستندات Claude، مدلهای امروزی Claude پنجرهی یک میلیون توکنی دارن، و بعضی مدلهای دیگهاش ۲۰۰ هزار. توی یه درخواست هم تا ۱۲۸ هزار توکن میتونن جواب بنویسن.
یادتون باشه که یه متن فارسی معمولا توکن بیشتری از همون متن به انگلیسی میگیره (درس چرا فارسی توکن بیشتری میخواد)، پس همون پنجره، متن فارسی کمتری جا میده.
بزرگتر، بهتر؟
پنجرهی بزرگ یعنی میشه یه کتاب کامل رو داد به مدل. ولی آیا مدل همهاش رو یهجور خوب میبینه؟
یه پژوهش ۲۰۲۳ این رو آزمایش کرد: یه اطلاعات لازم رو جاهای مختلف یه متن بلند گذاشتن و دیدن مدلها پیداش میکنن یا نه. نتیجه؟ وقتی اطلاعات اول یا آخر متن بود، کارشون بهتر بود؛ وقتی وسط متن بود، خیلی بدتر. حتی برای مدلهایی که مخصوص متن بلند ساخته شده بودن.
مستندات Claude هم یه هشدار مشابه داره: هر چی تعداد توکنها بیشتر بشه، دقت و یادآوری کمتر میشه؛ و اینکه چی روی میز باشه، به اندازهی بزرگی میز مهمه. یعنی یه میز بزرگ و شلوغ، از یه میز کوچیک و مرتب همیشه بهتر نیست.
راههای دیگهی مرتب نگه داشتن میز
گفتیم مستندات Claude فشردهسازی رو راه اصلی گفتوگوهای بلند میدونه. چند تا راه دیگه هم گفته.
توی کارهای چندقدمی، که مدل بارها ابزار صدا میزنه، نتیجهی ابزارهای قدیمی زیاد جا میگیرن؛ میشه پاکشون کرد. بعضی مدلها هم «حواسشون به جای خالی» هست: سرویس اول کار بهشون میگه کل پنجره چقدره و بعد از هر ابزار میگه چقدر مونده، تا کار رو با جایی که دارن جلو ببرن. اون فکرهایی که مدلهای استدلالی پیش از جواب مینویسن هم جزو همین پنجره حساب میشن. و برای اینکه پیش از فرستادن بدونید چقدر جا میگیره، شمارندهی توکن هست.
اگه چیزی که میفرستید از اول بزرگتر از پنجره باشه، سرویس قبول نمیکنه و خطای «پرامپت خیلی بلنده» میده. ولی اگه پرامپت جا بشه و جواب وسط کار به سقف برسه، مستندات Claude میگه توی مدلهای تازهتر، جواب همونجا میایسته؛ همون جواب نصفهای که توی درس حلقهی ساختن متن دیدیم.
چند نکته
- بیرون پنجره، وجود نداره. چیزی که مدل باید بدونه، باید روی میز باشه.
- چیز مهم رو اول یا آخر بذارید. وسط متن بلند کمتر دیده میشه.
- میز رو مرتب نگه دارید. متن اضافه، دقت رو کم میکنه.
- موضوع تازه، گفتوگوی تازه. تا تاریخچهی بیربط جا نگیره.
- گفتوگوی خیلی بلند، اولش رو گم میکنه. قانونهای مهم رو دوباره بگید.
درس بعد نشون میده چتباتها با همین پنجره، چطور گفتوگو رو «به یاد» دارن: مدل گفتوگوی قبلی رو چطور «به یاد» داره.
جمعبندی. آنچه از این درس با خودتان میبرید.
- پنجرهی زمینه: میز کار مدل.
- همهچیز حساب میشه، حتی خود جواب.
- هر نوبت، کل گفتوگو دوباره.
- بیرون پنجره یعنی وجود نداره.
- بزرگتر خودبهخود بهتر نیست.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.