منطق ایجنت‌ها › M1 — این سیستم‌ها چطور فکر می‌کنند
۱.۳ پایدار تدریسی ~۳۰ دقیقه

Context

قبل از این فصل: فصل ۱.۱

در یک نگاه

۱.۳.۱

پنجره‌ی context چیست

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

context یعنی همه‌ی متنی که مدل در این لحظه می‌تواند به آن نگاه کند — شامل جوابی که دارد می‌نویسد. مستندات رسمی اسمش را «حافظه‌ی کاری» می‌گذارند و صریح می‌گویند این با آن حجم عظیم داده‌ای که رویش آموزش دیده فرق دارد.

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

پنجره‌ی context اندازه‌ی همان میز است، و با token شمرده می‌شود (فصل ۱.۱).

۱.۳.۲

واقعاً چه چیزی وارد context می‌شود

اینجا معمولاً آدم‌ها غافلگیر می‌شوند. context فقط آخرین پیام تو نیست. همه‌ی این‌ها داخلش‌اند و همه جا می‌گیرند:

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

و همین توضیح می‌دهد که چرا یک session طولانی کم‌کم کند و گران می‌شود: هر درخواست تازه، تمام آن انباشته را دوباره با خودش حمل می‌کند.

پنجره‌ی context — از راست پر می‌شود دستورها و ابزارها گفت‌وگو فایل‌های خوانده‌شده نتیجه‌ها جای خالی اینجا کیفیت افت می‌کند — خیلی قبل از پرشدن هر دور از حلقه چیزی اضافه می‌کند و هیچ‌چیز خودبه‌خود برداشته نمی‌شود. پس مسئله «کِی پر می‌شود» نیست؛ «کِی شلوغ می‌شود» است.
پنجره‌ی context و پرشدنش. ناحیه‌ی هشدار عمداً قبل از انتهای پنجره است.
۱.۳.۳

افت context و compaction

حالا مهم‌ترین بخش این فصل، و جوابِ آن گیری که این ماژول برای بازکردنش آمده: چرا وسط کار کیفیت افت می‌کند؟

تصور رایج این است که تا وقتی پنجره پر نشده، همه‌چیز مرتب است و بعد ناگهان خطا می‌دهد. این غلط است. مستندات رسمی صریح می‌گویند: با بزرگ‌شدنِ تعداد token، دقت و به‌یادآوری افت می‌کند — پدیده‌ای که اسمش را context rot گذاشته‌اند.

یعنی context بیشتر خودبه‌خود بهتر نیست. همان منبع می‌گوید انتخابِ اینکه چه چیزی داخل context باشد، به‌اندازه‌ی اینکه چقدر جا داری مهم است.

نشانه‌های عملی‌اش که خودت می‌بینی:

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

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

۱.۳.۴

token یعنی پول

یک نکته‌ی مستقیم: هر چیزی که وارد context می‌شود، هزینه دارد — و در هر دور دوباره حساب می‌شود، چون هر بار کل انباشته دوباره فرستاده می‌شود.

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

به‌خاطر بسپار context بزرگ‌تر یعنی هم گران‌تر، هم کندتر، هم بی‌دقت‌تر. این سه با هم بدتر می‌شوند، نه جدا. برای همین «برای اطمینان همه‌چیز را می‌دهم» هر سه را خراب می‌کند.

حساب‌وکتاب دقیق هزینه و راه‌های کم‌کردنش در درس ۷.۷.

۱.۳.۵

بهداشت session: کِی از نو شروع کن

راه‌حلِ عملیِ همه‌ی این‌ها ساده است و اسمش را می‌گذاریم بهداشت session.

کِی session تازه باز کن:

کِی همان session را ادامه بده: وقتی کار پیوسته است و قدم‌های قبلی واقعاً لازم‌اند تا قدم بعدی معنا داشته باشد.

و یک نگرانی که پیش می‌آید: «اگر session تازه باز کنم، هرچه گفتم از بین می‌رود؟» بله. و راه‌حلش این نیست که session را بی‌نهایت طولانی نگه داری — راه‌حلش این است که چیزهای مهم را در یک فایل نگه داری، که دقیقاً موضوع فصل بعدی است.

نکته‌ی طلایی وقتی حس کردی کیفیت افت کرده، به‌جای اینکه توضیحت را طولانی‌تر کنی — که context را بزرگ‌تر و اوضاع را بدتر می‌کند — یک session تازه باز کن و فقط همان چیزی را که واقعاً لازم است بده. تقریباً همیشه سریع‌تر از کلنجاررفتن با session خسته جواب می‌دهد.
ضدالگو «برای اینکه همه‌چیز را بداند، کل پوشه را بهش می‌دهم.» این دقیقاً همان کاری است که کیفیت را پایین می‌آورد. context بزرگ‌تر تضمین نمی‌کند جواب بهتر شود؛ شواهد خلافش را می‌گوید. انتخابِ درستِ چیزی که می‌دهی، یک مهارت است — و آن‌قدر مهم است که یک درس کامل دارد: درس ۲.۷.

تمرین (فکری)

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

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

پاسخنامه — یک نمونه‌ی خوب را ببین

کار: «از فایل فروش ماهانه یک خلاصه بگیرم.»

می‌دهم: خودِ فایل فروش همان ماه (بدون آن کاری نمی‌شود کرد) · توضیح اینکه هر ستون یعنی چه (اسم ستون‌ها گویا نیست) · نمونه‌ی خلاصه‌ی ماه قبل (تا قالب خروجی را بداند).

نمی‌دهم: فایل‌های یازده ماه دیگر (فقط این ماه را می‌خواهم) · کل تاریخچه‌ی ایمیل‌های مربوطه (ربطی به محاسبه ندارد) · فایل مشتریان با شماره‌تماس‌ها (لازم نیست، و داده‌ی شخصی است — ماژول ۵).

منتقل‌شده: «اول گفتم فایل ماه قبل را هم می‌دهم برای مقایسه. بعد پرسیدم اگر ندهم جواب بدتر می‌شود؟ نه — من فقط خلاصه‌ی این ماه را می‌خواهم. بردمش به ستون دوم.»

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

برای عمق بیشتر

ذخیره شد