آموزشمدل‌های زبانی بزرگ (LLM)

درس ۳۹ از ۸۵، هوش مصنوعی، حدود ۱۲ دقیقه خواندن

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

جواب کوتاه

مدل زبانی، حتی وقتی چت‌باته، فقط یه دنباله‌ی توکن رو ادامه می‌ده. برای همین گفت‌وگو قبل از رسیدن به مدل، به یه متن پیوسته تبدیل می‌شه که توش نشونه‌های ویژه می‌گن هر تکه رو کی گفته: سیستم، کاربر یا دستیار، و هر پیام کجا تموم می‌شه. آخر متن هم یه نشونه‌ی «دستیار» خالی گذاشته می‌شه؛ مدل که توی تنظیم با دستور یاد گرفته بعد از این نشونه یه جواب خوب بیاد، همون‌جا رو ادامه می‌ده، و این می‌شه جوابش.

حباب‌ها، یه نوار

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

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

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

برچسب‌های نقش

بین پیام‌ها، توکن‌های ویژه‌ای گذاشته می‌شه که مدل از توی واژه‌نامهش می‌شناسه؛ مثل «کاربر»، «دستیار» و «پایان پیام».

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

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

سه نقش

توی بیشتر گفت‌وگوها سه نقش هست:

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

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

آزمایش ما، دوباره

یادتونه توی آزمایش درس تنظیم با دستور، به مدل کوچیکمون نمونه‌هایی مثل «سوال: چای چیه؟ جواب: یه نوشیدنی داغه» دادیم؟ «سوال:» و «جواب:» دقیقا همین نقش رو داشتن: برچسب نقش.

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

قالب‌ها فرق دارن

هر مدل، نشونه‌ها و شکل خودش رو داره؛ همونی که باهاش آموزش دیده.

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

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

شروع جواب از طرف شما

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

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

فقط متن نیست

هر پیام توی گفت‌وگو می‌تونه چند تکه‌ی مختلف داشته باشه، نه فقط متن.

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

وقتی دستورها با هم نمی‌خونن

حالا که نقش‌ها جدان، یه سوال مهم پیش میاد: اگه دستور دو نقش با هم دعوا داشتن، حرف کی برنده‌ست؟

یه پژوهش ۲۰۲۴ گفت یکی از دلیل‌های تزریق دستور اینه که مدل‌ها پیام سیستمی سازنده رو هم‌وزن متنی می‌دونن که از یه کاربر یا یه صفحه‌ی وب ناشناس اومده. پیشنهادش یه «سلسله‌مراتب دستور» بود: پیام سیستمی بالاتر از پیام کاربر، و پیام کاربر بالاتر از متنی که از ابزارها و صفحه‌های وب میاد. با داده‌ای که این ترتیب رو یاد می‌داد، مدل جلوی حمله‌ها خیلی محکم‌تر شد، حتی حمله‌هایی که موقع آموزش ندیده بود، و توانایی‌های معمولیش تقریبا کم نشد. نقش‌ها پس فقط برای مرتب بودن متن نیستن؛ برای امنیت هم هستن.

چند نکته

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

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

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • گفت‌وگو، برای مدل یه متن پیوسته‌ست.
  • نشونه‌های ویژه، نقش و پایان هر پیام رو می‌گن.
  • آخرش «دستیار» خالی: نوبت مدل.
  • سه نقش: سیستم، کاربر، دستیار.
  • هر مدل قالب خودش رو داره.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد