متن میگیرد، متن میدهد
پرسشی را در یک دستیار گفتوگو مینویسید و چند ثانیه بعد پاسخی روشن و مطمئن ظاهر میشود، با جملههای درست، گاهی با یک جدول یا تکهای کد. حس میکنید با کسی حرف میزنید که خیلی چیزها میداند. ولی آن طرف واقعاً چه چیزی هست؟
این دوره به این پرسش پاسخ میدهد، و بعد به پرسشی بزرگتر: همین چیز چطور به یک عامل تبدیل میشود که فایلهایتان را میخواند، برنامه اجرا میکند و یک ساعت روی یک کار میماند. (به عامل خیلیها «ایجنت» هم میگویند.) در این راه با دو نفر آشنا میشوید. لیلا در بخش بازاریابیِ یک شرکت کوچک کار میکند. یک سال است که با دستیارهای گفتوگو کار میکند و یک ماه است که از یک عامل هم استفاده میکند. دوستش امید کارش ساختنِ عامل است.
لیلا هر روز از آن استفاده میکنم و هنوز درست نمیدانم چیست. وقتی چیزی میپرسم، پاسخ را از جایی پیدا میکند؟
امید اگر چیزی بپرسی که هیچوقت ندیده، مثلاً شعری دربارهی گربهی خودت، به نظرت چه میشود؟
لیلا یک شعر مینویسد. پس نمیتواند فقط دنبالِ پاسخ بگردد. حتماً میفهمد چه میخواهم.
امید کاری میکند که خیلی شبیهِ فهمیدن است. ولی بیا دقیق بگوییم چه چیزی وارد میشود و چه چیزی بیرون میآید. تو به آن چه میدهی؟
لیلا پیامم را. متن.
امید و آن چه پس میدهد؟
لیلا متن. گاهی کد یا جدول، ولی آنها هم در اصل متناند.
امید همهی ارتباطش با دنیا همین است. در مرکزِ هر دستیار گفتوگو و هر عامل یک مدل زبانی (language model) هست: برنامهای که متن میگیرد و متن میدهد. نه چیزی بیشتر. نمیتواند روی چیزی کلیک کند، نمیتواند فایلهایت را باز کند، نمیتواند به اینترنت برود. فقط متن میخواند و متن مینویسد.
لیلا ولی چیزهایی میداند. پایتختِ اروگوئه را میدانست و فرمولِ صفحهگستردهام را هم درست کرد.
امید میداند. پرسش این است که این دانستهها کجا نگه داشته میشوند. بگذار بگویم چطور ساخته شده، و تو بگو.
یک مدل زبانی چطور ساخته میشود
یک مدل زبانی در شروع، مجموعهی عظیمی از عددهاست که همه تصادفیاند. بعد حجمِ بسیار زیادی متن به آن نشان داده میشود: کتاب، وبسایت، مقاله، کد، میلیاردها صفحه. بارها و بارها آغازِ یک متن به آن داده میشود و باید حدس بزند بعد چه میآید. هر بار که اشتباه حدس بزند، عددهایش کمی جابهجا میشوند تا دفعهی بعد ادامهی درست کمی محتملتر شود. به این کار آموزش (training) میگویند. آموزشِ یک مدل بزرگ ماهها طول میکشد و هزاران کامپیوتر را به کار میگیرد.
در این راه چیز شگفتانگیزی رخ میدهد. برای اینکه کلمههای بعدیِ یک کتابِ شیمی را خوب حدس بزنی، بهتر است کمی شیمی بلد باشی. برای ادامه دادنِ یک داستان، باید بدانی چه کسی کیست. برای کامل کردنِ یک خط کد، باید بدانی آن زبانِ برنامهنویسی چطور کار میکند. پس مدل در پایان مقدارِ زیادی از چیزی را دارد که ما به آن دانش و مهارت میگوییم، و همهاش در همان عددها جمع شده است. تعدادِ این عددها میتواند به صدها میلیارد برسد.
بعد مدل را با نمونههایی از یک دستیارِ خوب که به آدمها پاسخ میدهد بیشتر آموزش میدهند، تا پیامِ شما را با یک پاسخِ مفید ادامه دهد، نه مثلاً با چند پرسشِ دیگر.
لیلا پس دانستهها در عددها هستند. هیچ کتابخانهای درونش نیست.
امید درست است. هیچکدام از چیزهایی که خوانده به شکلِ صفحهای که بتواند به آن برگردد نمانده. این یعنی چه؟
لیلا یعنی نمیتواند چیزی را بررسی کند. اگر چیزی را کمی اشتباه به یاد بیاورد، همان اشتباه را میگوید.
امید و آن را با همان لحنِ مطمئنِ همیشگی میگوید، چون معمولاً بعد از یک پرسش، جملهای روان و مطمئن میآید. این یکی از دلیلهایی است که پاسخهای هوش مصنوعی گاهی اشتباهاند، ولی کاملاً درست به نظر میرسند.
لیلا ولی دستیارِ من گاهی در وب جستوجو میکند. دیدهام که پیوند نشان میدهد.
امید میکند، و نکتهی جالب همینجاست: جستوجو را مدل انجام نمیدهد. برنامهی دورِ آن انجام میدهد. مدل در واقع مینویسد «لطفاً این را جستوجو کن». برنامه جستوجو میکند، نتیجهها را به شکلِ متنی تازه به گفتوگو اضافه میکند، و مدل آنها را میخواند و پاسخش را مینویسد.
لیلا پس مدل باز هم فقط متن میخواند و مینویسد. بقیهی کارها را برنامه انجام میدهد.
امید دقیقاً. این را خوب به خاطر بسپار، چون کلیدِ کلِ این دوره است.
متن میگیرد، متن میدهد
تصویری که باید در ذهن نگه دارید این است: هر کاری که یک سامانهی هوش مصنوعی انجام دهد، مدلِ مرکزِ آن فقط یک کار کرده است: متنی را خوانده و متنی را نوشته است.
به متنی که به مدل میدهید پرامپت (prompt) میگویند، یعنی متنی که مدل باید ادامهاش دهد. در یک گفتوگو، پرامپت فقط آخرین پیامِ شما نیست: برنامه بیصدا پیامهای قبلی را هم به آن اضافه میکند، و چند دستورِ خودش را هم. درسهای بعدی دقیق نشان میدهند چه چیزهایی وارد میشود.
وقتی برنامهی دورِ مدل کاری میکند، مثل جستوجو در وب یا انجامِ یک محاسبه، در واقع دارد کاری را انجام میدهد که مدل در متنش خواسته است. در درس بعد میبینید این ایده تا کجا پیش میرود: اگر برنامهی مناسبی دورِ مدل باشد، مدل میتواند نام عکسهایتان را عوض کند، اشکالی را در کد برطرف کند یا یک گزارش را پر کند. این همان عامل است.
امتحان کنید
یک گفتوگوی کاملاً تازه با هر دستیار هوش مصنوعی باز کنید و بپرسید: «دیروز از تو چه پرسیدم؟» بیشترشان میگویند نمیتوانند بدانند. (بعضی برنامهها قابلیتی به اسمِ حافظه دارند که بعداً با آن آشنا میشوید.) مدل فقط چیزی را میداند که همین حالا در متنِ جلویش هست.
درست به کار بردن
- دانستههایی را که مدل میگوید حدسِ خوبِ اول بدانید، نه منبع. دانشِ مدل به شکل الگوهایی در عددها نگه داشته شده و تا وقتی برنامه ابزارِ جستوجو به آن ندهد، نمیتواند چیزی را بررسی کند.
- متنی را که لازم دارد به آن بدهید. اگر پاسخ به سندِ شما، عددهای شما یا وضعیتِ شما بستگی دارد، آنها را در گفتوگو بچسبانید. مدل فقط با چیزی کار میکند که جلویش است.
- وقتی کاری انجام میشود، بپرسید چه کسی انجامش داد. «در وب جستوجو کرد» یعنی برنامه جستوجو کرد و مدل نتیجهها را خواند. دانستنِ اینکه کدام بخش چه کرد، هم اشتباهها را توضیح میدهد و هم تواناییها را.
واژههای این درس
- مدل زبانی - برنامهای که با حجمِ بسیار زیادی متن آموزش دیده، متن میگیرد و متن میدهد؛ اغلب فقط «مدل» گفته میشود
- آموزش - فرایندی طولانی که در آن مدل متن میخواند، حدس میزند بعد چه میآید و عددهایش طوری تنظیم میشوند که بهتر حدس بزند
- پرامپت - متنی که به مدل داده میشود و مدل آن را ادامه میدهد
ایدهی اصلی
یک مدل زبانی فقط متن میخواند و متن مینویسد. از راهِ پیشبینیِ متن چیزهای زیادی یاد گرفته و آنها را به شکلِ عدد نگه میدارد، نه صفحه. هر کار دیگری که یک سامانهی هوش مصنوعی میکند، کارِ برنامهی دورِ آن است.