محمد جواد نجادی
محمد جواد نجادی
خواندن ۳۸ دقیقه·۵ ماه پیش

شکستن مرزها با LLM-T-B: توسعه کد و یک مفهوم جامع برای ساخت یک ربات تلگرام که می‌تواند برای وظایف مختلف در تمامی کسب و کارها استفاده شود.

ما با بهره‌گیری از هوش مصنوعی نوآورانه، به ویژه LLMها، مراکز تماس و ارتباطات مشتریان را به سطح جدیدی از پیشرفت می‌رسانیم.


این تصویر در Ideogram با پرامپت من تولید شده است. قدرت LLM-T-B را در آن مشاهده می کنید.
این تصویر در Ideogram با پرامپت من تولید شده است. قدرت LLM-T-B را در آن مشاهده می کنید.


نکته: قبل از شروع این مقاله این نکته مهم را باید بیان کنم که هدف از مطرح کردن این ایده و تلاش برای توسعه آن از بین بردن شغل Call Center و یا هر شغل دیگری را که می توان با آن تحت تاثیر قرار داد نیست و تنها هدف این ایده بالا برده بهره وری با استفاده از ابزارهای جدید در AI است. این امر باعث بهتر شدن وضعیت کاری افراد شاغل در Call Center و یا هر شغل دیگری که از LLM-T-B استفاده کند و رضایت بیشتر مشتریان را به همراه خواهد داشت.

"از همه کسانی که این مقاله را مطالعه کردند و همه توسعه دهندگان و مشتاقان یادگیری AI درخواست میکنم که در صورتی که تمایل به کار و توسعه LLM-T-B دارند. در مدیوم یا لینکدین با من در ارتباط باشند تا بتوانیم محصولی را توسعه دهیم که در آینده نزدیک بازی را تغییر دهد. کد کامل LLM-T-B که در این مقاله مطرح شد را بزودی در گیت هاب خودم منتشر خواهد شد. "

مقدمه

یکی از مهم ترین و پر اهمیت ترین بخش های سازمان های بزرگ و کوچک Call Center ها هستند. Call Center مانند بخش اورژانس بیمارستان هاست. نوک پیکان ارتباط مشتریان با کمپانی ها. قیاس آن با اورژانس به این خاطر است که اکثر Call Center ها مانند اورژانس 24 ساعته هستند. از طرفی اولین مرکز برای پیدا کردن مشکلات است. بنابراین ماهیتی بسیار استرس زا می تواند داشته باشد. خیلی از اوقات شاید مورد بی مهری زیاد قرار می گیرند. اولین تصویر ذهنی از شخصی که در Call Center مشغول است هدفونی در گوش خود دارد و پشت میز کار خود همزمان که در حال صرف چای و نوشیدنی است پاسخگوی مشتریان است. از طرفی سیستمی که در اختیار دارد با برقراری تماس از سمت مشترک تمام دسترسی های او باز هستند و درخواست هایی که از کارشناس می شود را فقط با زدن یک دکمه می تواند انجام دهد. در صورتی که اینگونه نیست. مهم ترین بحثی که در Call Center ها مطرح است بحث سرعت و زمان است. یکی از مهم ترین کارهایی که باعث بالا رفتن سرعت پاسخگویی و کم شدن زمان مکالمات چه به صورت چت کردن و چه به صورت تماس صوتی است. دسترسی سریع و صحیح به اطلاعاتی است که منجر به حل شدن مشکل می شود. از طرفی معمولا تعداد نفرات مخصوصا در Call Center کمپانی های بزرگ بالاست. مدیریت افراد حاضر و دورکار (چرا که Call Center یکی از مشاغلی است که قابلیت کار ریموت را دارد.) مخصوصا پیدا کردن پاسخ مشکل در کمترین زمان ممکن می تواند بزرگترین مزیت برای یک Call Center باشد. حال در این مقاله ما می خواهیم روی سیستمی کار کنیم که با استفاده و کمک از AI و مخصوصا LLM ها بتوانیم سرعت را بالا برده و زمان پاسخگویی که منجر به حل مشکل شود را کاهش دهیم. برای شروع می خواهیم با استفاده از LLMها و BOTتلگرام محصولی را توسعه دهیم که من آن را LLM-T-B می نامم. این کار را انجام دهیم. در واقع با این BOT سیستمی مرجع برای شرکت ایجاد می کنیم که بتواند واحد های دیگر را هم شامل شود. به عبارت دیگر فقط مخصوص Call Center نیست. همچنین از طریق آن بتوانیم به طور مستقیم با مشترین تعامل داشته باشیم. با من همراه باشید!

اولین وظیفه BOT تلگرامی!

اولین وظیفه ای که می توان برای این LLM-T-B تعریف کنیم. کنترل وضعیت لحظه ای Call Center و مدیریت استراحت افراد حاظر در شیفت است. البته باید این نکته رو ذکر کرد مواردی که الان بین می شود optional است. در شرکت های مختلف می تواند متفاوت باشد. معمولا Call Center ها 24 ساعته هستند. بنابراین برای 3 شیف LLM-T-B را تعریف می کنیم وافراد حاظر در هر شیفت را برای LLM-T-B مشخص می کنیم. تابعی هم تعریف کنیم که اگر فردی به هر دلیل اضافه کاری یا تغییر شیفت قصد حضور در شیفت دیگر را داشته باشد بتوان فرد را به آن شیفت اضافه نمود. قوانین تعریف شده برای آن می تواند شناور باشد و بسته به شرایط لحظه ای تغییر کند. این به چه معناست؟ هر شرکتی سیستمی برای پاسخگویی به تماس ها دارد. ما می خواهیم LLM-T-B را با استفاده از API به سیستم متصل کنیم. و قوانینی برای آن تعریف کنیم که LLM-T-B با تشخیص خود و با توجه به تعداد تماس ورودی افراد مجاز برای استراحت را تعیین کند. زمان های استراحت مجاز می تواند بسته به تصمیم کمپانی مثلا "n" دقیقه ای و به صورت زمان فوری "x" دقیقه ای باشد. قوانین به این صورت است که به طور مثال به ازای هر "a" نفر حاظر در شیفت "b" نفر زمان استراحت در نظر بگیرد (این مورد می تواند بسته به شرایط کمپانی ها و نوع تماس ها متفاوت باشد) چرا که LLM-T-B به ازای تعداد تماس ورودی ظرفیت را تغییر می دهد. اما یک آستانه برای آن تعریف کنیم که هیچوقت تعداد استراحت ها را به 0 نرساند. قانون بعدی این است که اگر شخصی در حالت استفاده از زمان استراحت باشد و با تاخیر بازگردد بعد از 1 دقیقه اولین اخطار برای او ارسال شود و سپس مجددا در دقیقه 3 هم اخطار بعدی برای او به صورت نوتیف در ربات ارسال گردد. حال خود شرکت می تواند برای اینکه چه تعداد اخطار را فرد می تواند در روز داشته باشد یا در صورت تکرار چه اقدامی انجام می شود تصمیم بگیرد. دکمه ای به نام "Rest(dnd)" در ربات تعبیه می کنیم. با زدن این دکمه یه پیغام "زمان استراحت شما به پایان رسید" ظاهر می شود و در آخر این پیغام ظرفیت در لحظه به کارشناس اعلام گردد.

اگر ظرفیت تکمیل بود ربات پیغام دهد که شمارنده بیش از حد مجاز است و اجازه ثبت آن را ندهد. همچنین می توان ربات را تنظیم کرد که به صورت لحظه ای ظرفیت را اعلان دهد. ظرفیت اضطراری را می تواند تعریف کرد به نحوی که هر فرد در طول روز بتواند یکبار استفاده کند البته آن را با تابعی بنویسیم که اگر فرد از ظرفیت اظطراری برای خود استفاده کرد دیگر تا اخر شیفت نتواند از ظرفیت اضطراری دوم استفاده کند و در هر لحظه هم فقط یک ظرفیت اظطراری باز باشد. همچنین این ظرفیت تایمی 10 دقیقه ای دارد.

تایمی برای شام / نهار هم برای شیفت های مختلف در بازه های زمانی مختلف می توان در نظر گرفت. تایم استراحت در این بازه به مدت "n+d" دقیقه افزایش دهد که بدون تایم فوری است. ربات بتواند طبق تعداد افراد حاظر در شیفت زمانبندی کرده و مثلا تایم صرف غذا را "H" ساعت در نظر بگیرد و هر کارشناس در این تایم فقط یکبار بتواند از ظرفیت استفاده کند. اگر کارشناسی در این بازه دو بار از ظرفیت استفاده کرد. برای او اخطار ارسال کرده و اجازه ثبت شمارنده را به او ندهد. همچنین در تایمی که برای شام / نهار در نظر گرفته شده هم اگر فردی بیش از حد مجاز در حالت استراحت بود پیغام های خطا را دریافت کند. اگر ظرفیت خالی بود به افرادی که در تماس نیستند و امکان استفاده از زمان را دارند نوتیف استفاده از تایم نهار / شام را ارسال کند و تاکید کند که تایم مقرر شده شام / نهار تمدید نخواهد شد و در ساعت مقرر بسته خواهد شد. بعد از ساعت مقرر شده برای نهار / شام پیغام اتمام تایم نهار / شام برای همه افراد حاظر در شیفت ارسال شود و ظرفیت جدید اعلان گردد. همچنین تابعی برای گزارش گیری تعریف می کنیم که در پایان شیفت گزارشی از استراحت های ثبت شده را در Database ی ذخیره کند.

مواردی که در بالا ذکر شد به عنوان نمونه و سمبلیک است . هر شرکتی با توجه به شرایطی که دارد و قوانین داخلی خود می تواند آن را تغییر دهد. حتی برای اینکه در موارد خیلی خاص و در لحظه بتوان از تمام ظرفیت های موجود استفاده کرد می توان برای ربات دسترسی ادمین تعریف کرد که اپراتور انسانی بتواند مثلا ظرفیت ها را در موارد خیلی خاص تغییر دهد. همه مواردی که در بالا ذکر شد کاملا شناور هستند و بسته به تصمیمات شرکت و سیاست های هر مرکزی به راحتی می توان آنها را تغییر داد و هدف از بازگو کردن آن اشاره به این نکته است که از این پتانسیل ها به خوبی و با بهره بری بسیار بالا میتوان استفاده کرد. تا اینجا قوانین خیلی ساده و اولیه ای را برای ربات تعریف کند. در قسمت بعد می خواهیم با استفاده از BotFather تلگرام و کد در پایتون این ربات ساده را پیاده سازی کنیم.

پیاده سازی Bot

در این مرحله می خواهیم Bot خود را بسازیم . ابتدا باید وارد تلگرام شویم و BotFather را جست و جو کنیم وارد صفحه آن می شویم و روی دکمه Start/ می زنیم بعد راهنمایی برای ما نمایش داده می شود گزینه newbot/ را انتخاب می کنیم. BotFather از ما می‌خواهد یک Name و یک Username (Username) برای Bot خود انتخاب کنید. Name می‌تواند هر چیزی باشد، اما Username باید منحصر به ‌فرد باشد و با کلمه "bot" تمام شود. Name را ManagerBot انتخاب و Username را CallCenterManagerBot تعیین کردیم. پس از ایجاد Bot ، BotFather یک Access Token برای ما ارسال می‌کند. این توکن مهم است و برای ارتباط با API تلگرام استفاده می‌شود. آن را در جای امنی نگه دارید.

برای تعریف کردن قوانین مختلفی که در بالا تعیین کردیم می خواهیم از کد پایتون استفاده کنیم. برای این کار من از https://colab.research.google.com استفاده کردم. برای برقراری ارتباط با Bot و استفاده از Access Token که در اختیار داریم برای اعمال تغییرات ابتدا باید کتابخانه python-telegram-bot را با استفاده از دستور زیر نصب کنیم.

!pip install python-telegram-bot

بعد از انجام مراحل اولیه ساختن BOT و ثبت آن با سرچ کردن نام BOT در تلگرام می توانیم وارد آن شویم و با زدن دکمه start BOT شروع به فعالیت می کند. در BotFather هم رابط کاربری وجود دارد که تنظیمات اولیه BOT را می توان با آن انجام داد. یک سری از دسترسی ها را باید در تنظیمات BotFather باز کنیم تا بتوانیم تغییرات لازم را روی BOT اعمال کنیم. مواردی که در بالا ذکر شد و کدی که برای ساختنش لازم است را احتمالا در ورژن های بعدی این مقاله تکمیل کنم. تا اینجا مراحلی که ذکر شد خیلی ارتباطی با AI ندارد و به راحتی با تلگرام قابل پیاده سازی است. در قسمت بعد می خواهیم وارد مبحث اصلی شویم. قلب تپنده BOT و کارهای شگفت انگیزی که با LLM-T-B انجام خواهیم داد. با من همراه باشید که آن را توسعه دهیم.

از من بپرس! (Ask me!)

یکی از مهم ترین بخش هایی که می خواهیم این Bot داشته باشد. بخشی به نام " Ask me! " است. یکی از دغدغه هایی که افراد شاغل در Center Call دارند این است که در کوتاه ترین زمان ممکن جواب سوال هایی که از سوی مشترک مطرح می شود را بیابند. برای شرکت های دیگر هم وضع به همین منوال است. فرض کنید شرکتی دارید که کارهای نرم افزاری را انجام می دهد یا مجموعه ای خاص دارید که داری یکسری روال های اداری یا قوانین و پروسه های داخلی هستید. مخصوصا برای شرکت هایی که افرادی را به صورت کارآموز استخدام میکنند یا حتی برای کسانی که تازه وارد در شرکتی هستند و هنوز به روال عادی و قوانین کامل انجام کار آشنا نیستند. پس Ask me! همه جا می تواند کاربرد داشته باشد. معمولا کارشناسان در Center Call ها منابع و اسناد زیادی را در اختیار دارند که در زمان تماس برای رسیدن به جواب سوالات از آن استفاده می کنند. در Center Call های فنی پیدا کردن بهترین جواب مخصوصا برای افرادی که تازه به جمع کارشناسان پیوسته اند همیشه یک دغدغه بزرگ است و اگر صرفا از نیروی انسانی یا اسناد زیاد که گاهی در بخش های مختلف هستند برای جواب به سوالات استفاده شود باعث می شود ثانیه به ثانیه به زمان پاسخ به سوال افزوده شده و در نتیجه زمان مکالمه طولانی تر و کیفیت انجام پروسه فرایند کم و کمتر شود.

از من بپرس! حتی برای تعامل با مشتریان هم بسیار سودمند است. به این صورت که مثلا BOT تلگرامی را در اختیار عموم و مشتریان قرار دهیم (چون خود من در شرکت ISP کار می کنم مثال آن را خواهم زد ) و اطلاع رسانی به این صورت باشد که با این BOT خیلی راحت می توانید سوال هایی که راجع به مودم خود دارید و یا مودم های دیگر شرکت را مطرح و پاسخ بگیرید. حتی نوع مودم ها و خیلی از پروسه هایی که ممکن است برای رسیدن به جواب آنها مجبور باشید تماس گرفته و گاها در صف تماس قرار بگیرید را فقط با گفتگوی ساده ای با BOT می فهمید. و این را می توان به بخش هایی مثل فروش و یا خدمات سازمانی یا هر محصولی که شرکت ارائه می دهد تعمیم داد. تصور کنید مشتریان بالقوه یعنی افرادی که قصد خرید مثلا مودم را دارند. بدون تماس مستقیم که باعث هدر رفتن وقت هم برای مشتری و هم کارشناسان حاظر در فروش باشد. با تنها چند سوال از BOT اطلاعات بسیار خوبی را از مودم ها به دست بیاورند و بعد با برقراری تماس با واحد فروش با دانش قبلی که از مودم های شرکت یا هر محصول از هر شرکتی که از آن استفاده می کنند بسیار راحت تر و با فهم بیشتر با کارشناسان فروش تعامل کنند. تصور کنید که مشتریان احساس نکنند که با BOT در حال چت هستند. چرا که Ask me! از زبان طبیعی و نزدیک به زبان انسان با مشتریان صحبت خواهد کرد.

کاربرد های LLM-T-B

تصور کنید که همه قوانین داخلی و پروسه های شرکت شما برای LLM ها به اندازه یک وعده صبحانه باشد. این در صورتی که شرکت شما یک شرکت متوسط رو به بالا باشد! بعد از در اختیار گرفتن مدل LLM علاوه بر اطلاعات مدل آن را با داده ها و اسناد و تسک های شرکت Train می کنیم. تمام پروسه ها و تمام قوانین را می توان به راحتی برای مدل توکنایز کرد و به مدل آموزش داد. بعد می توان از آن برای کارهای درون سازمانی و سوالاتی که از طرف مشتریان مطرح می شود استفاده کرد. مثلا یکی از بیشترین سوالات مطرح شده در شرکت های ISP که اینترنتLTE ارائه می دهند بحث پوشش دهی است. تصور کنید که از LLM-T-B برای دپارتمان فروش استفاده کنیم و یکی از سوالات اولیه LLM-T-B درخواست دریافت لوکیشن افرادی که قصد خرید مودم را دارند باشد به راحتی پوشش دهی آنها را چک کند و به مشتری اعلام نماید. نکته مهم تر اینکه از آنالیز این داده های ارزشمند متوجه مناطقی که بیشترین درخواست و کمترین درخواست برای خرید از شرکت را دارند می شویم در نتیجه از آن برای سرمایه گذاری بیشتر یا کمتر و تبلیغات هدفمند در این مناطق استفاده کرد.

از آنالیز سوالات پرتکرار مشتریان داده های بسیار ارزشمندی به دست می آوریم. منظور من چیزی مثل سوالات پرتکرار در بخشی از سایت قرار داده می شود نیست. در تماس های Call Center ها سوالات پرتکرار بی شماری وجود دارد. از این سوالات و سوالاتی که معمولا کارشناسان ضعف در پاسخگویی دارند برای بهبود هر چه بیشتر LLM-T-B استفاده می کنیم در نتیجه زمانی که مشتری این سوالات را مطرح می کند بیش از پیش و حتی طبیعی تر از انسان می تواند به آنها پاسخ دهد. مثلا تغییر اسم و رمز مودم یا مثلا مشترک چگونه می تواند در پنل مشترکین ثبت نام کند؟ یا مطرح کند که مودم مدل فلان را دارد و می خواهد امنیت آن را بیشتر کند چه باید بکند؟ حتی سوالات دیگری که روتین هستند. تمدید طرح ها چگونه است؟ برای تغییر مالکیت یا هر تیکت دیگری چگونه باید انجام شود؟ سوالاتی از این قبیل را خیلی واضح و راحت و مرحله به مرحله میتوان با LLM-T-B پاسخ داد به نحوی که مشترک نیاز زیادی به برقراری تماس پیدا نکند. هدف این است که مشترک بدون انجام پروسه های تو در تو بتواند به مقصود خود برسد.

این موارد نه تنها باعث تعامل و رضایت بیشتری مشتریان خواهد شد. بلکه حجم کاری خیلی از بخش های سازمان را می تواند به راحتی کاهش دهد و باعث بالا رفتن بهره وری هر چه بیشتر پرسنل گردد. پرتکرارترین سوال در سازمان شما چیست؟ یا در Center Call پرتکرار ترین سوال خود کارشناسان فنی مخصوصا کارشناسان تازه کار چیست ؟ پیدا کردن جواب این سوال می تواند اطلاعات ارزشمندی به ما ارائه دهد. این نکته را هم باید ذکر کنیم که با Ask me! کارشناسان می توانند سوال هایی که لازم است با سرچ کردن به آنها برسد را با یک سوال ساده از BOT به دست بیاورد. اینها تنها بخش کوچکی از بی شمار کاربردهای LLM-T-B امروزه می دانیم که LLM ها رو به روز قدرتمند تر می شوند و در نتیجه تسک های بی شمارتری را می توان با آن انجام داد.

چرا LLM ؟

ما می توانیم به صورت روزانه سوال های مطرح شده توسط کارشناسان یا مشتریان را در Database که برای LLM-T-B طراحی کرده ایم آنالیز کنیم. آنالیز این اطلاعات می تواند بسیار برای شرکت کمک کننده باشد. چرا که هم می توانیم بفهمیم که بیشترین مشکلات در طول روز هم برای مشتریان و کارشناسان چیست و هم اینکه بیشتر تماس ها برای چه مواردی است. از طرف دیگر اینکه بدانیم که بیشترین ضعف های کارشناسان در پاسخگویی به سوالات به خصوص برای کارشناسان جدید چه چیزی است. چرا که هر چه کارشناسان قوی تر باشند پروسه ها با سرعت بیشتری انجام می شود. راه حل چیست؟ بدون شک LLM ها. حتی نیاز به LLM خیلی بزرگ و قوی ای نداریم. چرا که اسنادی که در سازمان ها وجود دارند برای LLM ها خیلی بزرگ نیستند. بعد از مدتی که از این LLM استفاده کردیم اطلاعات ارزشمندتری داریم که برای بالا بردن بهره وری و سرعت می توانیم LLM خود را با آنها مجدد Train کنیم در نتیجه مدل ما بیش از پیش قدرتمند تر خواهد شد.

کدام LLM ؟

برای استفاده از LLM ها چندین راه وجود دارد. راه اول ساختن یک مدل جدید از ابتدا است. LLM ها گرسنه دیتا هستند. با توجه به اینکه این کار به منابع اطلاعاتی و محاسباتی بسیار بزرگ نیاز دارد. منظورم منابعی است که فقط شرکت های خیلی بزرگ در اختیار دارند. از طرفی نیازی به این کار نیست چرا که "چرخ اختراع شده است" راه های زیادی برای استفاده از آن وجود دارد.

یک راه گرفتن یک API از LLM های کمپانی های بزرگ مثل ChatGPT و یا Anthropic است. این API منجر به دسترسی ما به LLM مورد نظرمان می شود. راه بعد این است که از مدل های Open Source مثل LlaMa3 استفاده کنیم. با این کار معماری عظیمی را در اختیار می گیریم و از طرفی به بانک بسیار عظیمی از اطلاعات هم دسترسی پیدا کنیم. اما باز هم آموزش مدلی مثل LlaMa3 می تواند بسیار سنگین و گرانقیمت باشد. روش دیگر استفاده از مدل های سبک تر است. برخی منابع برای آن وجود دارد یکی از آنها که مخصوصا در سالهای اخیر بسیار مورد توجه قرار گرفته پلتفرم Hugging Face است. تقریبا تمام مدل ها در آن وجود دارد. فقط کافی است که API از Hugging Face را داشته باشیم و از مدل های pre-trained (از پیش آموزش دیده ) موجود در آن استفاده کنیم. مزیت آنها چیست؟ پر اهمیت ترین مزیت آن بالا رفتن امنیت است. چرا که برای استفاده از مدل های pre-trained آنها را دانلود و در local سیستم خودمان استفاده می کنیم. فقط کافی است که آنها را fine-tune (تنظیم مجدد) کرده و روی داده هایی که می خواهیم BOT برای پاسخ دهی بهتر بیاموزد Train کنیم. در قسمت بعد می خواهیم نحوه پیاده سازی و Train کردن و وصل کردن LLM خود به BOT تلگرامی را بیاموزیم . با من همراه باشید!


نکته: مدلی که در اینجا استفاده خواهیم کرد آزمایشی بوده و برای بیان این نکته هست که می توان این کار را انجام داد. برای پروژه های اصلی می توانیم از مدل های بهتر و امن تر هم استفاده کرد.


پیاده سازی LLM-T-B

برای پیاده سازی و آموزش و استفاده از LLM بعد از تست چندین مدل و استفاده از API های مختلف برای آنها تصمیم گرفتم که از مدل هایی که در Hugging Face موجود است استفاده کنم بعد از تلاش های فراوان برای این کار متوجه شدم که باز هم استفاده از مدلی که بتواند نیازهای ما را فراهم کند و منابع ما را پوشش دهد ممکن است هزینه بر و از لحاظ محاسباتی گرانقیمت باشد. بنابراین مدلی را از گیت هاب پیدا کرده و استفاده کردم .

مدلی که قرار است توسعه دهیم از معماری GPT-4 استفاده می کند و نام آن " gpt4all-13b-snoozy-q4_0.gguf " است.


https://github.com/Fatal3xcept10n/LLM-Telegram-Chatbot?tab=readme-ov-file


در وحله اول با کد هایی که در گیت هاب بود مدل را روی سیستم خودم در google colab دانلود کردم. حال اصل مدل را در اختیار داریم که آموزش اولیه دارد. می خواهیم آن را به BOT خود متصل کنیم. برای این کار اول باید API_KEY مربوط به BOT تلگرامی خودمان را از BotFather به دست بیاوریم تا بتوایم ارتباط بین کد های پایتونی که قرار است توسعه دهیم را با BOT خود برقرار کنیم. در اسنادی که روی گیت هاب هست برای استفاده از این مدل به دو کتابخانه نیاز داریم که در زیر مشاهده می کنید.

# Import the telegram bot API
!pip install python-telegram-bot==13.7
!pip install gpt4all==2.0.2

برای استفاده از BOT باید چندین کتابخانه را فراخوانی کنیم که هر کدام برای اجرای قسمتی از کد ضروری هستند و با مطالعه اونها خیلی واضح می تونیم متوجه شویم که چرا و برای چه تسکی از اینها استفاده خواهیم کرد. این کتابخانه ها را من به مرور زمان و اضافه شدن تسک های مختلف اضافه کردم در زیر تعدادی از آنها را با توضیحات کامل مشاهده می کنید.

# Importing necessary classes and modules from telegram.ext for managing a Telegram bot
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler
# Importing necessary classes and modules from telegram for managing inline buttons and keyboard
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardMarkup, KeyboardButton
# Importing GPT4All library to use the GPT-4 language model
from gpt4all import GPT4All
# Importing threading module for running concurrent threads
import threading
# Importing googletrans library for translating text
from googletrans import Translator
# Importing langid library for detecting language of the text
import langid
# Importing logging module to log messages and events
import logging
# Importing sqlite3 module to interact with SQLite databases
import sqlite3
# Importing os module for interacting with the operating system
import os
# Importing queue module to create and manage queues
import queue

حتما به خاطر داشته باشید که در کدی که در حال توسعه هستید توکن API_KEY تلگرام را قرار دهید. خب برای استفاده از BOT اول نیاز داریم که مدل را فراخوانی کنیم.

# Telegram bot token (replace with your bot token obtained from BotFather)
TOKEN = 'YOUR_BOT_TOKEN'
# Select LLM model from gpt4all
model = GPT4All(&quotgpt4all-13b-snoozy-q4_0.gguf&quot)

با این کد هم به BOT تلگرام متصل می شویم و هم LLM مورد نظر روی سیستم ما دانلود خواهد شد و اون رو در اختیار می گیریم. حال تسک هایی را به LLM-T-B خود اضافه می کنیم. اولین تسکی که مورد توجه من قرار گرفت این است که BOT قابلیت ترجمه به زبانی که کاربر استفاده می کند را داشته باشد. مثلا این مدل ما به انگلیسی مسلط است. و زبان فارسی را هم می فهمد اما نمی تواند به فارسی پاسخ ها را ارائه کند. دو راه وجود دارد راه اول اینکه ما می توانیم با یک dataset فارسی به انگلیسی مدل را با dataset که شامل جملات فارسی و ترجمه آنها باشد آموزش دهیم. این روش چالش برانگیز است. چرا که برای این کار به منابع نیاز داریم. سخت افزار قوی با GPU قوی و یا حتی استفاده از سرورهای GPU که به صورت کلاود هستند. اما این کار می تواند برای ما هزینه بر هم باشد . راه دوم استفاده از استفاده از کتابخانه googletrans ` `و کلاس` `Translator است. برای اون باید ابتدا کتابخانه آن را نصب کنیم.

!pip install googletrans==4.0.0-rc1

حال با قطعه کدی که در زیر قرار خواهم داد برای LLM-T-B تعریف کنیم که مثلا اگر کاربر انگلیسی نوشت پاسخ ها به انگلیسی باشد و اگر مثلا فارسی تایپ کرد پاسخ فارسی دریافت کند. البته معایبی هم می تواند داشته باشد. چرا که محاسبات را سنگین تر می کند چون باید بعد از دریافت پرامپت از کاربر آن را به انگلیسی ترجمه کند و سپس پاسخی که به انگلیسی هست رو به فارسی ترجمه کند.

# Translator instance
translator = Translator()
....
# Detect language of user message
lang, _ = langid.classify(user_message)
# Translate user message to English if needed
if lang == 'fa':
translated_prompt = translator.translate(user_message, src='fa', dest='en').text
else:
translated_prompt = user_message
# Add the prompt to the user's queue
user_queues[chat_id].put(translated_prompt)

باید پاسخی را هم که مدل تولید میکند را به فارسی ترجمه کرد. چرا که مدل پاسخ انگلیسی تولید می کند اما با کد زیر می توان آن را به فارسی ترجمه کرد.

# Translate the response back to the user's language if needed
response = user_contexts[chat_id]['response']
if lang == 'fa':
translated_response = translator.translate(response, src='en', dest='fa').text
else:
translated_response = response


دیتابیس (Database)

مورد بعدی که باید به آن توجه کنیم ساختن Database برای BOT هست. گزینه های زیادی برای آن وجود داره. می توانیم از Database های که رایگان و یا اشتراک دار استفاده کنیم. Database‌ های رایگان یا کم ‌هزینه مانند SQLite یا PostgreSQL. وقتی از SQLite استفاده می‌کنیم، اطلاعات به صورت یک فایل فیزیکی روی دیسک ذخیره می‌شود و با بستن برنامه، اطلاعات از بین نمی‌رود. اما اگر بخواهیم Database را به صورت آنلاین و همیشه در دسترس استفاده کنیم ، می‌توانیم از سرویس‌های ذخیره‌سازی آنلاین مثل Google Drive استفاده کنیم. برای استفاده از Google Drive به عنوان Database آنلاین، می‌توانیم از Google Sheets به عنوان Database خود استفاده کنیم Google Sheets API را می‌توان به راحتی با پایتون استفاده کرد. در ادامه، مراحل راه ‌اندازی یک Database SQLite و ادغام آن با BOT تلگرام را خواهیم دید. SQLite یک Database سبک و تعبیه ‌شده است که به‌ طور پیش‌فرض نیازی به سرور ندارد و به همین دلیل برای پروژه‌های کوچک و متوسط مناسب است. در قطعه کد زیر که مربوط به بخشی از کد اصلی LLM-T-B نمونه کدی برای ساختن Database ساده را می آموزیم.

# Function to delete and recreate the database
def initialize_database():
# Check if the database file exists and remove it
if os.path.exists('bot_database.db'):
os.remove('bot_database.db')
# Connect to SQLite database (it will create the file if it doesn't exist)
conn = sqlite3.connect('bot_database.db')
cursor = conn.cursor()
# Create the users table with columns for id, user_id, and first_name
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER UNIQUE,
first_name TEXT
)
''')
# Create the questions table with columns for id, user_id, question, and answer
# user_id column is a foreign key that references the user_id in the users table
cursor.execute('''
CREATE TABLE questions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
question TEXT,
answer TEXT,
FOREIGN KEY (user_id) REFERENCES users (user_id)
)
''')
# Commit the changes and close the connection
conn.commit()
conn.close()
# Initialize the database by calling the function
initialize_database()
# Connect to SQLite database (check_same_thread=False allows for multithreading)
conn = sqlite3.connect('bot_database.db', check_same_thread=False)
cursor = conn.cursor()

دکمه ها

تسک بعدی ساختن دکمه های BOT است که این مورد به صورت optional می باشد. به راحتی می توان هر دکمه ای را در BOT تعبیه کرد و سمبلیک بیان شدند که کارایی LLM-T-B را بتوان به آن نشان داد. مثلا من برای این BOT فعلا سه دکمه : Start , Ask me! , Help رو اضافه می کنم و برای هر کدام از اونها در کد مربوط به اون دکمه قید می کنم که در صورتی که کاربر این دکمه رو فشار داد چه پیغامی نماش داده بشه حتی می توان این کار رو هم به عهده LLM گذاشت.

کاربر با زدن دکمه Start با جمله " سلام (یوزرنیم کاربر) به BOT Ask me! خوش آمدید. اگر سوالی دارید خوشحال می شوم دکمه Ask me! را بزنید و سوال خود را بپرسید. " مواجه می شود. بعد از زدن دکمه Ask me! ربات به کاربر بگوید " (یوزرنیم کاربر) لطفا سوال خود را بپرسید تا خیلی سریع به آن پاسخ دهم " و سپسLLM-T-B سوالات کاربر را بگیرد و پاسخ بدهد. همچنین زیر هر پاسخی که BOT به کاربر ارائه می دهد. دکمه خروج را تعبیه می کنیم که با زدن آن کاربر با یک پیغام محترمانه از BOT مواجه شود مثلا یوزرنیم کاربر را بگوید و از او بابت استفاده از BOT تشکر کند و بگوید که مشتاق است دوباره به او کمک کند. در این مقاله من فعلا به 3 دکمه اکتفا کرده ام به نظرم هر چه رابط کاربری ساده تر و بدون هیچگونه شلوغی که از سردرگمی کاربر جلوگیری کند مناسب تر است. به نظرم قدرت و نفوذی که در سادگی برای جذب مخاطب بیشتر وجود دارد را در خیلی از تجملات نمی توان یافت.

نکته مهمی که در ساختن دکمه برای LLM-T-B خود باید در نظر داشته باشید این است که فقط وصرفا ساختن دکمه و اینکه پیغامی را به کاربر نمایش دهد کافی نیست. مثلا دکمه Start تعریف شده و وجود داشت اما عمل نمی کرد یا برای نمونه من دکمه خروج را که در BOT تعریف کردم با زدن آن پیغام نمایش داده می شد اما هیچ اقدامی انجام نمیداد و چندین بار خطا و ران کردن و راه اندازی مجدد را انجام دادم تا این موارد را فهمیدم و اصلاح کردم.

شروع LLM-T-B

حال می خواهیم BOT را آغاز کنیم من چندین بار این کار را انجام داده ام و با کاربرهای مختلف در تست BOT متوجه مشکلاتی شدم . یکی از مشکلاتی که BOT داشت زمانیکه دو کاربر همزمان وارد BOT می شدند به اشتباه فکر می کرد که هر دو کاربر در یک محیط هستند. به عبارتی کاربرها را جدا تشخیص نمی داد. یعنی مثلا من سوالی رو از BOT پرسیده بودم. وقتی که فرد دیگری هم وارد BOT می شود و Ask me! را می زند. پاسخی که برای سوال کاربر اول بود را به کاربر دوم هم نمایش میداد. برای رفع این مشکل باید از یک مکانیزم صف ‌بندی برای درخواست‌ ها استفاده کنیم تا هر کاربر یک صف جداگانه برای درخواست‌ها و پاسخ‌هایش داشته باشد. همچنین نیاز است که از threading و Queue برای مدیریت این صف‌ها استفاده کنیم.

# Store the contexts and queues for each user
user_contexts = {}
user_queues = {}

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

# Wait for response event to be set by conversation thread
user_contexts[chat_id]['response_event'].wait()
user_contexts[chat_id]['response_event'].clear()

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

# Function to start the conversation loop
def startConversation(chat_id):
global user_contexts, user_queues
with model.chat_session():
while True:
try:
prompt = user_queues[chat_id].get(timeout=5)
print(f&quotWorking on prompt for user {chat_id}&quot)
# Generate response
response = generateResponse(prompt)
user_contexts[chat_id]['response'] = response
print(f&quotFinished processing for user {chat_id}&quot)
user_contexts[chat_id]['response_event'].set()
except queue.Empty:
if chat_id not in user_contexts or not user_contexts[chat_id].get('is_running', False):
break
print(f&quotExited conversation loop for user {chat_id}&quot)

تابع `startConversation` یک حلقه مکالمه برای یک کاربر خاص با شناسه `chat_id` را شروع می‌کند. متغییر های `user_contexts` و `user_queues` متغیرهای جهانی هستند که زمینه‌ها و صف‌های پیام‌های کاربران را نگهداری می‌کنند. `()with model.chat_session` اطمینان می‌دهد که یک جلسه چت با مدل زبان بزرگ (LLM) باز شده و در طول حلقه مکالمه باز می‌ماند.سپس `while True` حلقه‌ای ایجاد می‌کند که تا زمانی که شرایط برای خروج از حلقه محقق نشود، ادامه خواهد داشت.

برای دریافت پیام از صف کاربر از `prompt = user_queues[chat_id].get(timeout=5)` استفاده می کنیم که تلاش می‌کند یک پیام (پرامپت) از صف کاربری با شناسه `chat_id` دریافت کند اگر صف خالی باشد، به مدت 5 ثانیه منتظر می‌ماند تا پیام جدیدی وارد شود. اگر در این مدت پیام جدیدی وارد صف نشود، یک استثنا `queue.Empty` رخ می‌دهد. این استثنا توسط بلوک `try-except` مدیریت می‌شود. اگر صف خالی بماند و مکالمه کاربر نیز متوقف شده باشد، حلقه مکالمه پایان می‌یابد. این کد به گونه‌ای طراحی شده است که پیام‌های کاربران را به صورت جداگانه و موازی پردازش کند، بدون اینکه منابع سیستم به طور مداوم مصرف شوند.

قطعه کد زیر BOT هنگام شروع مکالمه جدید برای هر کاربر، یک رشته جدید برای آن کاربر ایجاد می‌ کند. تا بتواند پیام‌های هر کاربر را به صورت جداگانه مدیریت کند.

# Handler function for /start command
def start(update, context):
chat_id = update.message.chat_id
user_first_name = update.message.from_user.first_name
context.user_data['first_name'] = user_first_name
# Initialize user context and queue
user_contexts[chat_id] = context.user_data
user_contexts[chat_id]['is_running'] = True
user_contexts[chat_id]['response_event'] = threading.Event()
user_queues[chat_id] = queue.Queue()
# Insert or update user in the database
cursor.execute(&quotINSERT OR IGNORE INTO users (user_id, first_name) VALUES (?, ?)&quot, (chat_id, user_first_name))
cursor.execute(&quotUPDATE users SET first_name = ? WHERE user_id = ?&quot, (user_first_name, chat_id))
conn.commit()
# Start a new conversation thread for the user
conversation_thread = threading.Thread(target=startConversation, args=(chat_id,))
conversation_thread.start()
context.bot.send_message(chat_id=chat_id,
text=f&quotHello {user_first_name}! Welcome to the Ask me! bot. If you have any questions, please press the Ask me! button.&quot,
reply_markup=main_menu_keyboard())

تست LLM-T-B

بعد از نوشتن کد های LLM-T-B باید آن را اجرا کنیم تا در محیط BOT تلگرام آن را ببینیم. من کد را برای تست در محیط گوگل کلب اجرا کردم . برای بهتر اجرا شدن و ارتباط پایدار تر باید آن را روی سرور ترجیحا سرور لینوکسی اجرا کرد. بعد از اجرای کد و دانلود مدل روی گوگل کلب خط به خط کد ها اجرا می شوند. بعد از اجرای کد باید در محیط BOT استارت زده شود. من در دو اکانت تلگرام خودم یکی با نام “Javad” با “J” و یکی با نام” javad “ با “j” (دلیل این کار تست ربات بود چرا که هر دو تلگرام روی یک دستگاه هست و فقط یک حرف یوزرنیم آن هم در کوچک و بزرگ بودن حرف با هعم تفاوت دارند) استارت شروع LLM-T-B را زدم و همانطور که در تصویر میبینید در هر دو محیط و با یوزرنیم های متفاوت خودشان LLM-T-B به راحتی به سوالات پاسخ صحیح داد تصویر زیر را ببینید.

تصویر سمت چپ با یوزرنیم javad و تصویر سمت راست با یوزرنیم Javad در هر دو محیط هم پاسخ ها صحیح بود
تصویر سمت چپ با یوزرنیم javad و تصویر سمت راست با یوزرنیم Javad در هر دو محیط هم پاسخ ها صحیح بود


در این تصویر نحوه شروع BOT را می بینید و سوالی که از کاربر پرسیده می شود سپس کاربر سوال خود را مطرح می کند و بات با استفاده از LLM به آن متصل است می تواند به سوال جواب بدهد. در پایین مشاهده می کنید که برای هر یوزر یک ID مخصوص به آن یوزر اختصاص داده شده است برای اینکه LLM-T-B بتواند تفاوت آنها را متوجه شود و در دیتابیس هم به راحتی و دسته بندی شده ذخیره می شود که در بالا کد های آن و نحوه پیاده سازی این تسک را مشاهده کردیم.

Received message from user: How accurate are the responses generated by your bot using the language model?
Working on prompt for user 6514170446
Finished processing for user 6514170446
Received message from user: What languages are supported for translation using your bot?&quot
Working on prompt for user 1932960851
Finished processing for user 1932960851
Received message from user: Could you explain the security measures in place to protect user data when using your bot?&quot
Working on prompt for user 6514170446
Finished processing for user 6514170446
Received message from user: What types of tasks or queries do you handle best?&quot
Working on prompt for user 1932960851
Finished processing for user 1932960851

همانطور که مشاهده میکنید ID های 1932960851 و 6514170446 که از دو یوزر مختلف هستند.

برای تست برای تست LLM-T-B که ببینیم حتی بدون ترین و فقط با داشتن کد ترنسلیت آیا مدل به خوبی کار می کند یا نه سوال و جواب هایی به فارسی انجام دادم که در تصویر زیر می بینید.

این تصویری از LLM-T-B است که برای تست قابلیت ترجمه آن در محیط بات انجام شده است
این تصویری از LLM-T-B است که برای تست قابلیت ترجمه آن در محیط بات انجام شده است


البته مشکلات زیادی هم ممکن است در زمان توسعه مدل و بات پیش باید و باید این مشکلات را حل یا به حداقل برسانیم یکی از مشکلاتی که کلا LLM ها ممکن است داشته باشند این است که اصطلاحا دچار توهم می شوند ما باید این مشکل را به حدقل ممکن برسانیم یک نمونه از آن را در تصویر زیر مشاهده می کنید. البته لازم به ذکر است مدلی که ما در این مقاله استفاده کرده ایم آموزش بیشتری ندیده و به اینترنت متصل نیست.


نمونه ای از مشکلاتی که  LLM ها ممکن است با آن رو به رو شوند . این تصویر از محیط LLM-T-B گرفته شده است
نمونه ای از مشکلاتی که LLM ها ممکن است با آن رو به رو شوند . این تصویر از محیط LLM-T-B گرفته شده است


یکی از مشکلات عدیده ای که اگر کد بات را در گوگل کلب اجرا کنید با آن مواجه می شوید این است که در کلب با اجرای کد پتانسیل بالایی برای کرش کردن و ریست شدن سشن دارد. چرا که نسبت به اجرای کد در لینوکس یا سرور قوی گوگل کلب میتواند ضعیف تر عمل کند. اگر با این مشکل مواجه شدید مجدد کد را ران کنید و مورد دیگر اینکه هر بار در محیط کلب با رست کردن یا تغییر سشن باید کتابخانه ها را مجددا نصب کنید.



امنیت LLM-T-B

مسئله بسیار مهمی دیگری که باید مد نظر قرار داد. مسئله امنیت BOT می باشد. به خصوص زمانی که در دسترس عموم قرار می‌گیرد و برای مقاصد حساس مثل ارتباط با مشتریان یا واحد فروش استفاده می‌شود، بسیار حائز اهمیت است. اولین موردی که مطرح است خود LLM ی است که مورد استفاده قرار می گیرد. مدلی که در این مقاله مطرح شد یا کلا مدل های pre-trained یا حتی مدلهای open-source چون که دانلود می شوند و در Local سیستم قرار می گیرند و بعد از آنها استفاده می شود و برای مسائلی که لازم داریم آن را Train می کنیم. پس خود مدل می تواند از امنیت بالایی برخوردار باشد. مورد بعدی کاربرانی هستند که از BOT استفاده می کنند و ممکن است که حملاتی را به BOT انجام دهند.

انتخاب مدل‌های از منابع معتبر و با امنیت بالا. مدل‌های open-source می‌توانند امن باشند، اما باید از منابع معتبر دانلود شوند. به‌روزرسانی مداوم مدل‌ها و نرم‌افزارهای مرتبط را به ‌روزرسانی کنید تا از جدیدترین ویژگی‌ها و رفع مشکلات امنیتی بهره‌مند شوید. دسترسی به BOT را محدود کنید تا تنها کاربران مجاز بتوانند از آن استفاده کنند. این می‌تواند از طریق استفاده از لیست‌های سفید (whitelists) یا احراز هویت دو مرحله‌ای انجام شود. به طور مثال پشتیبانی فنی مودم ها فقط افرادی که مودم دارند و اطلاعات آنها در دیتابیس شرکت موجود است بتوانند از آن استفاده کنند یا اینکه حتی لولبندی انجام شود و در حین ورود به مدل از کاربر اطلاعاتی دریافت شود. مثلا اگر برای خرید مودم سوالاتی داشته باشند مستقیم با مدل LLM متصل نشوند پیامهای آنها در محیطی از BOT دریافت شود که اجازه ورود به LLM را نداشته باشد. سوال کاربر در دیتابیسی دریافت شود و جداگانه برای پردازش به LLM ارسال شود و پاسخ تولید شده به دیتابیس بازگردد و از آنجا به محیط BOT ارسال شود. برای امنیت BOT اطمینان حاصل کنید که تمامی ارتباطات با سرور BOT از طریق HTTPS انجام می‌شود تا داده‌ها در مسیر انتقال رمزگذاری شوند. استفاده از سرویس‌های محافظت در برابر حملات DDoS می‌تواند BOT را در برابر حملات ناگهانی و سنگین مقاوم کند.

تمام فعالیت‌ها و درخواست‌ها را ثبت و با نظارت مداوم می توان هرگونه فعالیت مشکوک را به سرعت شناسایی و متوقف کرد. می توان ورودی‌ها را اعتبارسنجی کرد تا از ورود داده‌های مخرب جلوگیری شود. این شامل استفاده از فیلترهای ورودی برای جلوگیری از تزریق SQL و XSS است. برای حفظ حریم خصوصی می توانیم داده‌های کاربران را به طور امن ذخیره کنید و از دسترسی غیرمجاز به آنها جلوگیری کنید. این شامل رمزگذاری داده‌های حساس و محدود کردن دسترسی‌ها می‌شود. حتی کاربران را در مورد امنیت و خطرات ممکن آموزش دهید تا آن‌ها نیز بتوانند نقش خود را در حفظ امنیت ایفا کنند.


نتیجه گیری

در این مقاله سعی شد ایده ای مطرح شود که جدیدا هم در دنیای AI در حال رشد است و توجه ها را به خود جلب کرده است و مواردی که در این مقاله مطرح شد فقط گوشه های خیلی کوچکی از استفاده هایی از LLM هاست. همانطور که " Yann LeCun " هم به افرادی که در حال یادگیری AI هستند یا قصد شروع آن را دارند توصیه می کند. “DO NOT WORK ON LLMs,” به نظر ساختن LLM از ابتدا و کار کردن روی ساختن آنها شاید کار خیلی معقولانه ای نباشد. اما استفاده از آنها برای کاربرد های مختلف و تسک های بسیار و توسعه محصولات جدید با LLM ها می تواند خیلی کمک کننده باشد. در این مقاله رویکردی که دنبال شد و بیشتر مورد توجه ما هست. اول داشتن یک رابط کاربری بسیار ساده برای کمک به کارشناسان ارتباط با مشتریان است. برای سریع تر شدن انجام کارهایی که نه تنها باعث بالا رفتن کیفیت پاسخدهی می شود. بلکه با سرعت بخشیدن به آن رضایت هر چه بیشتر مشتریان را به دنبال خواهد داشت. این مطلب در بخش های آغازین مقاله مفصل مورد بررسی قرار گرفت.

تسک های بسیار زیادی را می توان به LLM-T-B اقزود که چند نمونه را به اختصار بیان میکنم.

تسک چت آنلاین که امروزه کسب و کارهای خرد و کلان مانند دریچه ای برای ارتباط مستمر با مشتریان دارند را میتوان متحول کرد. هم اکنون هم خیلی از سایت های شرکت های بزرگ از آن استفاده می کنند. یکی از بزرگترین مشکلاتی که در چت آنلاین مطرح است ماندن در صف پاسخگویی است که با وجود LLMها مسئله ای حل شده است. اما موضوعی که می توان روی آن تمرکز کرد استفاده از دادهای چت های قبلی که با مشتریان شده است و Train کردن مدل برای پاسخگویی در لحظه در چت آنلاین است که از زبان طبیعی استفاده کند. به نحوی که مشتریان احساس نکنند که در حال چت با AI هستند. همچنین با استفاده از تسک تشخیص احساسات که LLMها بسیار عالی می توانند انجام دهند. آنالیز این اطلاعات بسیار ارزشمندی است چرا که به ما در ارئه خدمات بهتر به مشتریان و توجه بیشتر به نقاط ضعف و قدرت شرکت می تواند بسیار کمک کند. موضوع چت آنلاین موردی هست که من با آن بسیار کار کرده ام و کامل آشنایی دارم. با این کار می توان علاوه بر بالا بردن سرعت و پوشش 24 ساعته پشتیبانی و کم کردن خطای انسانی رضایت بیش از پیش مشتریان را فراهم کرد.

همچنین در نسخه های بعدی توسعه LLM-T-B می توان بخش های دیگری به آن افزود. تسک تیکتینگ که من شخصا زیاد با آن برخورد کردم و گاها به علت زمان بر بودن باعث نارضایتی مشتریان است. می توان LLM-T-B را به نحوی توسعه داد که مشتریان به راحتی هر چه تمام تر هم برای مشکلات خود راه حل پیدا کنند و هم برای ثبت تیکت های خود بتوانند اقدام کنند و حتی در همان لحظه یا در تایم کوتاه تاییدیه مورد نظر را بگیرند. چرا که می توان به مدل خود قابلیت تشخیص چهره و خواندن تصاویر را اضافه کرد در نتیجه تیکت هایی مثل تغییر مالکیت یا حتی احراز هویت جهت خرید محصول را اگر نیاز به کارت شناسایی داشته باشد در لحظه انجام داد. همچنین در بخش های داخلی شرکت فشار کاری کارشناسانی که در بخش تیکتینگ به خاطر تعداد بالای تیکت های دریافتی مواجه هستن و در نتیجه ممکن است پاسخگویی به تیکت ها را زمانبر کند را با اتوماتیک کردن هر چه بیشتر فرایند ها و بالا رفتن سرعت و کیفیت بخاطر دقت بالای مدل ها و در نتیجه کمتر شدن خطای انسانی بیش از پیش رضایت مشتریان را جلب کرد.

تسک بعدی استفاده از LLM-T-B برای مشتریان بالقوه است یعنی کسانی که هنوز اقدام به خرید یا استفاده از محصول شرکت نکرده اند و قصد خرید دارند. می توان بخش فروش را به آن متصل کرد و با گرفتن اطلاعات اولیه ای از افراد برای ارائه محصول یا فالو کردن این کیس ها برای تبدیل آنها از افرادی که قصد خرید دارند به افرادی که خرید را انجام میدهند. بخش فروش را متحول کرد و مارکتینک بسیار هدفمند و کارایی را پیاده سازی کرد که هم از اتلاف وقت جلوگیری کند و هم بخاطر هدفمند بودن از تبلیغات بی هدف و پرهزینه جلوگیری کرد.

در کل می توان گفت که از این ایده برای بسیاری از موارد دیگر هم میتوان استفاده کرد و خروجی مناسبی از آن گرفت. ممنون از شما که این مقاله را مطالعه کردید و با من همراه بودید ممنون میشم که نظرات خود را راجع به این مقاله با من به اشتراک بگذارید. ممنون


ممنون از شما که در این سفر به دنیای Deeps با من همراه بودید.

لینک انگلیسی مقاله در Medium

لطفا اگر مایل بودید مقاله دیگر من" ترنسفورمرها: قلم موی هوش مصنوعی برای نقاشی دنیای جدید (Vision Transformer) " رو در ویرگول ببینید .

چت Chat GPT-4o چیست – نسل جدید هوش مصنوعی OpenAI با قابلیت‌های چندرسانه‌ای را بشناسید!

امیدوارم از مطالب لذت برده باشید .


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