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