این پایاننامه به بررسی نحوه بهکارگیری مدلهای زبانی بزرگ بهعنوان عامل میپردازد؛ یعنی سیستمهایی که تنها متن تولید نمیکنند، بلکه میتوانند برای انجام وظایف پیچیدهتر برنامهریزی کنند، اطلاعات مورد نیاز خود را از منابع بیرونی به دست آورند و با ابزارهای مختلف تعامل داشته باشند. در سالهای اخیر، مدلهای زبانی بزرگ مانند خانواده GPT و BERT با اتکا به معماری ترنسفورمر، توانایی چشمگیری در درک و تولید متن شبیه به انسان پیدا کردهاند. این توانایی، آنها را از یک ابزار ساده پاسخگویی به پرسش، به عاملی تبدیل کرده است که میتواند بخشی از یک فرایند کاری واقعی را بهصورت خودکار انجام دهد. پژوهش حاضر با همین نگاه، از مبانی نظری مدلهای زبانی آغاز میشود و سپس به بررسی معماری عاملهای مبتنی بر این مدلها، محدودیتهای ورودی آنها، رابطهای برنامهنویسی مهم و در نهایت کاربرد عملی آنها در خودکارسازی فرایندهای رباتیک میپردازد. هدف اصلی این مطالعه آن است که نشان دهد چگونه میتوان از قابلیتهای زبانی این مدلها برای ساخت سیستمهایی بهره گرفت که نه فقط پاسخ میدهند، بلکه تصمیم میگیرند، برنامهریزی میکنند و اقدام عملی انجام میدهند. این چرخش مفهومی از «مدل زبانی» به «عامل زبانی»، یکی از مهمترین تحولات سالهای اخیر در حوزه هوش مصنوعی کاربردی به شمار میرود و پیامدهای گستردهای برای صنایع مختلف از خدمات مالی و بهداشت تا آموزش و تولید دارد.
بخش نخست مطالعه به سیر تحول مدلهای زبانی اختصاص دارد. مدلهای آماری ساده، احتمال وقوع واژه بعدی را بر اساس فراوانی واژههای پیشین محاسبه میکردند. برای نمونه، در جملهای مانند «هوای سیاتل همیشه…»، چنین مدلی میتواند با تکیه بر آمار متون پیشین حدس بزند که واژه بعدی احتمالاً «بارانی» است. سپس با معرفی بازنمایی برداری واژهها و روشهایی مانند Word2Vec، امکان درک روابط معنایی میان واژهها فراهم شد. در این روش، واژهها به بردارهایی متراکم و کمبعد تبدیل میشوند که فاصله میان آنها بازتابدهنده شباهت معنایی است؛ مثلاً «پادشاه» و «ملکه» به یکدیگر نزدیکترند تا «پادشاه» و «سیب». در ادامه، شبکههای عصبی بازگشتی و گونههای پیشرفتهتر آن مانند LSTM و GRU برای پردازش دادههای ترتیبی به کار آمدند و توانستند تا حدی مشکل فراموشی اطلاعات دور را حل کنند. نقطه عطف اصلی، ظهور معماری ترنسفورمر بود که با سازوکار خودتوجهی، توانایی مدلها را در درک روابط میان واژهها، حتی در فواصل دور، بهطور چشمگیری افزایش داد. بر این پایه، مدلهایی مانند BERT با آموزش دوجهته و خانواده GPT با رویکرد تولیدمحور پدید آمدند. امروزه مدلهای چندوجهی نیز میتوانند متن، تصویر، صدا و ویدیو را پردازش کنند، هرچند تمرکز این پژوهش بر مدلهای متنی و عاملهای مبتنی بر آنهاست.
پس از مبانی، پژوهش به چیستی عامل مدل زبانی میپردازد. عامل در اینجا سیستمی است که مدل زبانی در نقش مغز آن عمل میکند و در کنار آن، اجزای دیگری مانند تعامل با کاربر، آگاهی از محیط، حافظه، برنامهریزی و استفاده از ابزار قرار دارند. حافظه کوتاهمدت به مدل کمک میکند از اطلاعات همان لحظه استفاده کند، در حالی که حافظه بلندمدت با تکیه بر پایگاههای برداری، امکان یادآوری اطلاعات گسترده در بازههای طولانیتر را فراهم میسازد. برنامهریزی به عامل اجازه میدهد وظایف بزرگ را به زیروظیفههای کوچکتر تقسیم کند و با بازاندیشی و اصلاح خطاها، کیفیت نتیجه نهایی را بهبود بخشد. یکی از روشهای رایج در این زمینه، زنجیره تفکر است که از مدل میخواهد گامبهگام بیندیشد و بدین ترتیب وظایف پیچیده را به مراحل قابل مدیریت تقسیم کند. روش پیشرفتهتر درخت تفکر، چند مسیر استدلالی را همزمان بررسی میکند و با جستوجو در میان آنها، بهترین مسیر را برمیگزیند. بازاندیشی نیز به عامل امکان میدهد از اشتباهات گذشته درس بگیرد و رویکرد خود را برای تلاشهای بعدی اصلاح کند. استفاده از ابزار نیز به عامل امکان میدهد با فراخوانی سرویسهای بیرونی، به اطلاعاتی دست یابد که در وزنهای خود مدل وجود ندارد. چارچوبهای متعددی مانند OpenAI Assistants، LangChain، LlamaIndex، AutoGPT و AutoGen برای ساخت چنین عاملهایی توسعه یافتهاند و هر یک امکانات متفاوتی برای مدیریت حافظه، اتصال به دادهها و هماهنگی میان چند عامل ارائه میکنند.
یکی از محدودیتهای اساسی مدلهای زبانی، پنجره زمینه است؛ یعنی حداکثر تعداد توکنهایی که مدل میتواند در یک زمان پردازش کند. اگر متن ورودی از این حد فراتر رود، مدل تنها بخشی از آن را در نظر میگیرد و ممکن است ارتباط خود را با بخشهای پیشین از دست بدهد. برای نمونه، مدلهای GPT-4 و GPT-4o امروزی پنجرهای در حدود ۱۲۸ هزار توکن دارند، اما حتی همین مقدار نیز در اسناد بسیار طولانی یا گفتوگوهای چندساعته میتواند محدودکننده باشد. برای رفع این مشکل، روشهایی مانند پنجرههای لغزان و مدلهای سلسلهمراتبی پیشنهاد شده است. یکی از راهحلهای مهمتر، تولید تقویتشده با بازیابی یا RAG است. در این روش، هنگام دریافت پرسش، سیستم ابتدا مدارک مرتبط را از یک پایگاه دانش بیرونی بازیابی میکند و سپس مدل زبانی با ترکیب پرسش و اطلاعات بازیابیشده، پاسخ را تولید میکند. این سازوکار به مدل امکان میدهد بدون افزایش اندازه خود، به حجم عظیمی از اطلاعات دسترسی داشته باشد، پاسخهای دقیقتری ارائه دهد و بدون نیاز به آموزش مجدد، از اطلاعات بهروز استفاده کند. مزیت دیگر RAG آن است که میتواند خطاهای ناشی از توهم مدل را کاهش دهد، زیرا پاسخ بر پایه مدارک واقعی بنا میشود.
بخش بعدی پژوهش به رابطهای برنامهنویسی مهم OpenAI برای مدلهای GPT اختصاص دارد. رابط Text Completions که برای نسلهای نخستین طراحی شده بود، متن ساده را بهعنوان ورودی میگرفت و متن ساده تولید میکرد. اما از زمان معرفی GPT-3.5، رابط Chat Completions جای آن را گرفت که بهجای متن ساده، فهرستی از پیامها را دریافت میکند. هر پیام دارای یک نقش است: نقش سیستم که دستورهای کلی و زمینه را تعیین میکند، نقش کاربر که درخواست را مطرح میسازد و نقش دستیار که پاسخ مدل را نشان میدهد. این ساختار گفتوگو را طبیعیتر و مدیریت چندنوبتی گفتوگو را آسانتر میکند. افزون بر این، قابلیت فراخوانی تابع به مدل اجازه میدهد در صورت نیاز به اطلاعاتی خارج از دانش خود، یک تابع از پیش تعریفشده را فراخوانی کند. برای نمونه، وقتی کاربر درباره وضعیت آبوهوای یک شهر میپرسد، مدل ابتدا درخواست فراخوانی تابع هواشناسی را تولید میکند، نتیجه از سرویس بیرونی دریافت میشود و سپس مدل بر پایه آن، پاسخ نهایی را به زبان طبیعی میسازد. رابط Assistants نیز که بر پایه Chat Completions ساخته شده، امکانات بیشتری مانند مدیریت خودکار تاریخچه پیامها، جستوجوی فایل، مفسر کد و پشتیبانی از ورودی تصویری را در اختیار توسعهدهندگان قرار میدهد. این رابط بهطور خودکار محدودیت پنجره زمینه را مدیریت میکند و نیازی به نگهداری دستی تاریخچه پیامها ندارد.
پژوهش سپس به این پرسش میپردازد که اگر مدلی قابلیت فراخوانی تابع نداشته باشد، چگونه میتوان این توانایی را به آن افزود. سه راه اصلی معرفی میشود. نخست، مهندسی پرامپت که در آن توصیف ابزارها و شیوه فراخوانی آنها مستقیماً در متن راهنما گنجانده میشود؛ این روش ساده و سریع است، اما در وظایف پیچیده خطاپذیری بالایی دارد. نمونهای از این دسته، سیستم MRKL است که مدل زبانی را با منابع دانش بیرونی و استدلال گسسته ترکیب میکند. دوم، تنظیم دقیق مدل بر روی مجموعهدادههایی که نمونههای فراخوانی ابزار را در خود دارند؛ این روش دقت و تخصص بیشتری میدهد، اما به دادههای آموزشی حجیم و حوزهمحور نیاز دارد. نمونههای شاخص این رویکرد، Toolformer و TALM هستند که در آنها مدل یاد میگیرد چه زمانی و چگونه ابزارها را فراخوانی کند. سوم، ترکیب مدل زبانی با یک برنامهریز بیرونی که خروجی زبان طبیعی مدل را به فراخوانیهای عملیاتی تبدیل میکند؛ این رویکرد جداسازی مسئولیتها را ممکن میسازد و نگهداری سیستم را آسانتر میکند، اما به معماری و پشتیبانی بیشتری نیاز دارد. انتخاب میان این روشها به نیازها و محدودیتهای هر کاربرد بستگی دارد و هیچیک بهتنهایی برای همه سناریوها مناسب نیست.
در بخش پایانی، کاربرد عملی این مفاهیم در خودکارسازی فرایندهای رباتیک یا RPA نشان داده میشود. در اینجا یک روش تقسیم و تسخیر معرفی میشود که در آن عامل مدل زبانی، درخواست پیچیده کاربر را به گامهای کوچکتر میشکند و هر گام را به یک گره عملیاتی در سامانهای مانند n8n ترجمه میکند. برای نمونه، درخواستی شامل بازیابی داده از MongoDB، بررسی شرطی نمره، ارسال پیام به کانال Slack در صورت قبولی و ارسال ایمیل از طریق Gmail در صورت نیاز به بهبود، بهصورت زنجیرهای از گرهها ساخته میشود. در این فرایند، مدل ابتدا نوع گره نخست را تعیین میکند، سپس درخواست را به بخش نخست و بخش باقیمانده تقسیم میکند و همین چرخه را برای هر بخش ادامه میدهد تا همه اجزا به گرههای عملیاتی ترجمه شوند. این روش مزایایی مانند کارایی، مقیاسپذیری، انعطافپذیری و دقت بالاتر را فراهم میآورد، زیرا هر بخش بهطور مستقل تعریف و آزمون میشود و تغییرات بعدی بدون بازطراحی کل سامانه امکانپذیر است. نتیجه کلی پژوهش آن است که مدلهای زبانی بزرگ، زمانی که بهعنوان عامل و در پیوند با ابزارها، حافظه و برنامهریزی به کار گرفته شوند، میتوانند فرایندهای پیچیده را خودکار کنند و تجربه کاربری را بهطور معناداری بهبود دهند. این رویکرد همچنین نشان میدهد که شکاف میان توانایی زبانی مدلها و توانایی عملی آنها را میتوان با معماریهای مناسب پر کرد و از مدلهای زبانی بهعنوان ستون فقرات سیستمهای خودکار نسل بعدی بهره گرفت.
| عنوان | شماره صفحه |
|---|---|
| مقدمه | ۸ |
| مدل زبانی چیست؟ | ۹ |
| مدلهای زبانی آماری محض | ۹ |
| بازنمایی برداری واژهها/توکنها | ۱۰ |
| بازنمایی برداری وان-هات (One-Hot) | ۱۰ |
| ورد2وک/تعبیهها (Word2Vec/Embeddings) | ۱۱ |
| پیشپردازش متن | ۱۲ |
| متن خام | ۱۲ |
| توکنها | ۱۲ |
| شناسههای توکن | ۱۲ |
| تعبیه در بردارهای چندبعدی | ۱۲ |
| خلاصه | ۱۲ |
| شبکههای عصبی بازگشتی (RNN) | ۱۳ |
| شبکههای عصبی بازگشتی ساده (Vanilla RNN) | ۱۳ |
| حافظه کوتاهمدت بلند (LSTM) | ۱۳ |
| واحدهای بازگشتی دروازهای (GRU) | ۱۳ |
| خلاصه | ۱۳ |
| مدلهای زبانی بزرگ (LLM) | ۱۴ |
| شبکههای عصبی ترنسفورمر | ۱۴ |
| برت (BERT) | ۱۴ |
| جیپیتیها (GPTs) | ۱۴ |
| خلاصه | ۱۴ |
| مدلهای چندوجهی | ۱۵ |
| عامل مدل زبانی چیست؟ | ۱۶ |
| مرور کلی | ۱۶ |
| تعاملات کاربر | ۱۷ |
| محیطها | ۱۷ |
| حافظه | ۱۷ |
| برنامهریزی | ۱۷ |
| تجزیه وظیفه | ۱۷ |
| خوداندیشی | ۱۸ |
| استفاده از ابزار | ۱۸ |
| استقرار مدل زبانی و عامل | ۱۸ |
| چارچوبهای عامل | ۱۹ |
| محدودیت ورودی مدلهای زبانی بزرگ | ۲۰ |
| پنجره زمینه | ۲۰ |
| توصیف مدلهای GPT و پنجره زمینه | ۲۰ |
| تولید تقویتشده با بازیابی (RAG) | ۲۳ |
| فرایند | ۲۳ |
| اجزا | ۲۳ |
| مزایا | ۲۳ |
| خلاصه | ۲۳ |
| رابطهای برنامهنویسی مهم OpenAI برای مدلهای GPT | ۲۴ |
| رابط تکمیل متن (Text Completions API) | ۲۵ |
| رابط تکمیل گفتوگو (Chat Completions API) | ۲۶ |
| نقشهای یک پیام گفتوگو | ۲۷ |
| نمونهای از پیامهای گفتوگو | ۲۷ |
| داده آموزشی برای پیامهای گفتوگو | ۲۸ |
| دلیل استفاده از پیامهای گفتوگو | ۲۹ |
| رابط تکمیل گفتوگو با فراخوانی تابع | ۳۰ |
| نمونهای از فراخوانی تابع | ۳۱ |
| اهمیت فراخوانی تابع | ۳۵ |
| رابط دستیاران (Assistants API) | ۳۶ |
| ویژگیها | ۳۶ |
| انتخاب میان رابط تکمیل گفتوگو و رابط دستیاران | ۳۷ |
| نتیجهگیری | ۳۸ |
| چگونه قابلیت فراخوانی تابع را به دست آوریم | ۳۹ |
| مهندسی پرامپت | ۴۰ |
| تنظیم دقیق یک مدل زبانی بزرگ | ۴۱ |
| مدل زبانی بزرگ + برنامهریز | ۴۲ |
| نتیجهگیری | ۴۳ |
| یک عامل RPA تقسیم و تسخیر | ۴۴ |
| مقدمه | ۴۴ |
| هدف | ۴۵ |
| گرههای گردش کار | ۴۵ |
| روششناسی | ۴۷ |
| گامها | ۴۸ |
| نتیجه | ۵۳ |
| نتایج بصری | ۵۳ |
| نتیجهگیری | ۵۴ |
| نتیجهگیری نهایی | ۵۵ |
| منابع | ۵۶ |
وقتی هوش مصنوعی فقط حرف نمیزند: سفری به دنیای عاملهای زبانی
تصور کنید از یک دستیار هوشمند میخواهید کاری را برایتان انجام دهد. او نه فقط پاسخ میدهد، بلکه خودش تصمیم میگیرد، اطلاعات را از منابع مختلف جمع میکند، با ابزارهای بیرونی ارتباط میگیرد و در نهایت کار را به سرانجام میرساند. این دقیقاً همان چیزی است که این پایاننامه به آن میپردازد: تبدیل مدلهای زبانی بزرگ از ماشینهای پاسخگویی به عاملهایی که میتوانند در دنیای واقعی عمل کنند. اما چرا این تغییر مهم است؟ چون مرز میان «دانستن» و «توانستن» را برمیدارد.
از مدل آماری تا مغز متفکر: داستان تکامل زبان
همه چیز از مدلهای آماری ساده شروع شد. مدلهایی که فقط احتمال میدادند واژه بعدی چیست. مثلاً اگر مینوشتید «هوای سیاتل همیشه…»، با تکیه بر آمار میگفتند «بارانی». ساده بود، اما کافی نبود. سپس نوبت به بازنمایی برداری رسید؛ جایی که واژهها به بردارهایی تبدیل شدند که فاصلهشان معنادار بود. «پادشاه» به «ملکه» نزدیکتر شد تا به «سیب». این یعنی ماشین کمکم معنای کلمات را میفهمید.
بعد از آن، شبکههای عصبی بازگشتی آمدند تا ترتیب کلمات را درک کنند. اما مشکل فراموشی داشتند. LSTM و GRU آمدند تا حافظه بهتری بسازند. و بعد… ترنسفورمر آمد. معماریای که با مکانیزم خودتوجهی، به مدل اجازه داد همزمان به همه کلمات یک جمله توجه کند. این نقطه عطف، تولد BERT و GPT بود. BERT دوجهته میخواند و GPT تولید میکرد. امروز هم مدلهای چندوجهی آمدهاند که تصویر و صدا را هم میفهمند. این مسیر نشان میدهد چطور از شمارش ساده به درک عمیق رسیدیم.
عامل زبانی چیست و چرا شبیه یک کارمند است؟
یک عامل زبانی فقط یک مدل نیست. یک سیستم کامل است. مدل زبانی مغز آن است، اما در کنارش حافظه دارد، میتواند برنامهریزی کند، با محیط تعامل میکند و از ابزار استفاده میکند. حافظه کوتاهمدت مثل یادداشتهای روی میز است و حافظه بلندمدت مثل بایگانی سازمانی.
برنامهریزی به او اجازه میدهد کارهای بزرگ را به قطعات کوچک بشکند. مثلاً به جای «یک مقاله بنویس»، میگوید «اول عنوان، بعد مقدمه، بعد بدنه، بعد نتیجه». خوداندیشی هم دارد؛ یعنی از اشتباهاتش درس میگیرد. اینها باعث میشود عامل شبیه یک کارمند واقعی شود که فقط دستور نمیگیرد، بلکه فکر میکند.
«عاملهای مبتنی بر مدلهای زبانی بزرگ میتوانند وظایف پیچیده را با تقسیم آنها به مراحل کوچکتر و استفاده از ابزارهای بیرونی انجام دهند.»
این نقل قول از خود پایاننامه نشان میدهد چرا این مفهوم جدی گرفته شده است. چون دیگر بحث پاسخ دادن نیست، بحث انجام دادن است.
مشکل بزرگ: حافظه محدود، اما آرزوهای بلند
مدلهای زبانی پنجره زمینه دارند. یعنی فقط میتوانند تعداد محدودی توکن را همزمان ببینند. GPT-4 حدود ۱۲۸ هزار توکن را میبیند، که زیاد است اما بینهایت نیست. اگر متن از این حد رد شود، مدل بخشهای اولیه را فراموش میکند.
راهحل؟ RAG. یعنی تولید تقویتشده با بازیابی. در این روش، مدل اول مدارک مرتبط را از یک پایگاه دانش بیرونی پیدا میکند، بعد با ترکیب آنها پاسخ میسازد. مثل این است که قبل از جواب دادن، سری به کتابخانه بزند. این کار دقت را بالا میبرد و خطاهای توهم را کم میکند.
جعبهابزار OpenAI: از تکمیل متن تا فراخوانی تابع
OpenAI چند رابط برنامهنویسی مهم دارد. اول Text Completions بود که متن ساده میگرفت و متن ساده میداد. بعد Chat Completions آمد که پیامها را با نقشهای مختلف میگیرد: سیستم، کاربر، دستیار. این ساختار گفتوگو را طبیعیتر میکند.
مهمترین قابلیت، فراخوانی تابع است. یعنی مدل میفهمد چیزی را نمیداند، یک تابع از پیش تعریفشده را صدا میزند، نتیجه را میگیرد و بعد پاسخ میدهد. مثلاً میپرسید «هوای بوستون چطور است؟» مدل تابع آبوهوا را صدا میزند، نتیجه را میگیرد و میگوید «آفتابی و ۲۲ درجه». این یعنی مدل از دانش خودش فراتر میرود.
رابط Assistants هم آمده تا کار را راحتتر کند. خودش تاریخچه را نگه میدارد، فایل جستوجو میکند، کد اجرا میکند و حتی تصویر میگیرد. یعنی توسعهدهنده کمتر درگیر زیرساخت میشود.
سه راه برای یاد دادن فراخوانی تابع به مدلهای قدیمی
اگر مدلی فراخوانی تابع ندارد، سه راه هست. اول مهندسی پرامپت: توضیح ابزارها را در متن راهنما مینویسید. ساده است اما در کارهای پیچیده خطا زیاد دارد. دوم تنظیم دقیق: مدل را با نمونههای زیادی از فراخوانی ابزار آموزش میدهید. دقت بالا میرود اما داده زیادی میخواهد. سوم ترکیب با برنامهریز: یک برنامهریز بیرونی خروجی مدل را به فراخوانی واقعی تبدیل میکند. این روش منعطفتر است اما معماری پیچیدهتری میخواهد.
هیچکدام بهترین مطلق نیستند. انتخاب بستگی به نیاز شما دارد. اگر سریع میخواهید، پرامپت. اگر دقیق میخواهید، تنظیم دقیق. اگر مقیاسپذیر میخواهید، برنامهریز.
تقسیم و تسخیر: ساختن گردش کار RPA با هوش مصنوعی
بخش پایانی پایاننامه یک روش عملی را نشان میدهد. کاربر یک درخواست پیچیده میدهد: «از MongoDB داده بگیر، اگر نمره ۹۰ یا بیشتر بود به Slack بفرست، وگرنه ایمیل بزن.» عامل زبانی این درخواست را به قطعات کوچک میشکند. اول MongoDB، بعد شرط if، بعد Slack، بعد Gmail.
هر قطعه به یک گره در n8n ترجمه میشود. نتیجه یک گردش کار کامل است که واقعاً اجرا میشود. مزیت این روش سادگی، مقیاسپذیری و دقت است. چون هر بخش جداگانه تست میشود و تغییرات بعدی کل سیستم را به هم نمیریزد.
این یعنی دیگر لازم نیست برای هر اتوماسیون ساده، برنامهنویسی پیچیده یاد بگیرید. کافی است درخواستتان را واضح بگویید و عامل، خودش آن را به قطعات قابل اجرا تبدیل میکند. این همان وعده بزرگ هوش مصنوعی است: از حرف تا عمل.
چرا اینها مهم است؟
چون ما در نقطهای ایستادهایم که مدلهای زبانی از آزمایشگاه بیرون آمدهاند. دیگر فقط متن تولید نمیکنند. تصمیم میگیرند، برنامهریزی میکنند و کار انجام میدهند. این پایاننامه نشان میدهد چطور این اتفاق میافتد و چطور میتوان از آن استفاده کرد.
آیندهای که در آن هر کسی بتواند با زبان طبیعی، اتوماسیون بسازد، دور نیست. و این مطالعه یکی از نقشههای راه آن است.