Skip to content

Latest commit

 

History

History
195 lines (116 loc) · 25.8 KB

File metadata and controls

195 lines (116 loc) · 25.8 KB

طراحی چندعامله

(برای مشاهده ویدئوی این درس روی تصویر بالا کلیک کنید)

الگوهای طراحی چندعامله

همین که شروع به کار روی پروژه‌ای می‌کنید که شامل چندین عامل است، نیاز دارید تا الگوی طراحی چندعامله را در نظر بگیرید. اما شاید در ابتدا واضح نباشد که چه زمانی باید به سمت چندعامل رفت و مزایای آن چیست.

مقدمه

در این درس، قصد داریم به سوالات زیر پاسخ دهیم:

  • چه سناریوهایی وجود دارند که چندعامل در آن‌ها کاربرد دارد؟
  • مزایای استفاده از چندعامل نسبت به یک عامل واحد که چندین کار انجام می‌دهد چیست؟
  • بلوک‌های ساختاری برای پیاده‌سازی الگوی طراحی چندعامله چه هستند؟
  • چگونه می‌توانیم دید نسبت به نحوه تعامل چندین عامل با یکدیگر داشته باشیم؟

اهداف آموزشی

پس از این درس، شما باید قادر باشید:

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

تصویر بزرگ‌تر چیست؟

چندعامل‌ها یک الگوی طراحی هستند که اجازه می‌دهند چندین عامل با هم همکاری کنند تا هدف مشترکی را دنبال کنند.

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

سناریوهایی که چندعامل در آن‌ها کاربرد دارد

پس چه سناریوهایی استفاده از چندعامل می‌تواند مفید باشد؟ پاسخ این است که سناریوهای زیادی وجود دارد که به کاربرد چندین عامل سودمند است، مخصوصاً در موارد زیر:

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

مزایای استفاده از چندعامل نسبت به یک عامل واحد

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

  • تخصصی شدن: هر عامل می‌تواند برای یک کار خاص تخصصی باشد. نبود تخصص در یک عامل واحد به این معنی است که عاملی دارید که همه چیز را انجام می‌دهد ولی ممکن است هنگام مواجهه با کار پیچیده دچار سردرگمی شود. مثلاً ممکن است کاری را انجام دهد که برای آن مناسب نیست.
  • قابلیت گسترش (مقیاس‌پذیری): آسان‌تر است که سیستم‌ها را با افزودن عوامل بیشتر مقیاس‌پذیر کنیم تا اینکه یک عامل را بارگذاری بیش از حد کنیم.
  • تحمل خطا: اگر یکی از عوامل خراب شود، سایر عوامل می‌توانند به کار خود ادامه دهند و این اطمینان از قابلیت اطمینان سیستم را فراهم می‌کند.

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

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

بلوک‌های ساختاری پیاده‌سازی الگوی طراحی چندعامله

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

بیایید این مورد را با نگاهی به مثال رزرو سفر برای یک کاربر ملموس‌تر کنیم. در این حالت، بلوک‌های ساختاری شامل موارد زیر خواهند بود:

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

دید نسبت به تعامل چندعامله

مهم است که دید داشته باشید که چگونه عوامل مختلف با یکدیگر تعامل دارند. این دید برای رفع اشکال، بهینه‌سازی و تضمین کارایی کلی سیستم ضروری است. برای رسیدن به این هدف، نیاز به ابزارها و تکنیک‌هایی برای پیگیری فعالیت‌ها و تعاملات عوامل دارید. این می‌تواند شامل ابزارهای ثبت و نظارت، ابزارهای بصری‌سازی و معیارهای عملکرد باشد.

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

بیایید هر یک از این جنبه‌ها را با جزئیات بیشتری بررسی کنیم.

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

  • ابزارهای بصری‌سازی: ابزارهای بصری‌سازی می‌توانند به شما کمک کنند تعاملات بین عوامل را به روشی بصری‌تر ببینید. برای مثال، می‌توانید نموداری داشته باشید که جریان اطلاعات بین عوامل را نشان دهد. این می‌تواند به شناسایی گلوگاه‌ها، ناکارآمدی‌ها و سایر مسائل در سیستم کمک کند.

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

الگوهای چندعامله

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

چت گروهی

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

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

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

چت گروهی

تحویل وظیفه (Hand-off)

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

موارد استفاده معمول این الگو شامل پشتیبانی مشتری، مدیریت وظایف و خودکارسازی جریان کار است.

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

تحویل وظیفه

فیلترینگ تعاملی (Collaborative filtering)

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

دلیل اینکه می‌خواهید چندین عامل همکاری کنند این است که هر عامل می‌تواند تخصص متفاوتی داشته باشد و به فرآیند توصیه به روش‌های مختلفی کمک کند.

بیایید مثالی بزنیم که کاربر می‌خواهد بهترین سهام برای خرید در بورس را توصیه بگیرد.

  • متخصص صنعت: یک عامل می‌تواند متخصص در یک صنعت خاص باشد.
  • تحلیل فنی: عامل دیگر می‌تواند متخصص تحلیل فنی باشد.
  • تحلیل بنیادی: عامل دیگر می‌تواند متخصص تحلیل بنیادی باشد. با همکاری، این عوامل می‌توانند توصیه‌ای جامع‌تر به کاربر ارائه دهند.

توصیه

سناریو: فرآیند بازپرداخت

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

عوامل اختصاصی برای فرآیند بازپرداخت:

در ادامه برخی از عوامل مرتبط با فرآیند بازپرداخت آورده شده است:

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

عوامل عمومی:

این عوامل می‌توانند توسط بخش‌های دیگر کسب‌وکار شما استفاده شوند.

  • عامل حمل و نقل: این عامل نماینده فرآیند حمل و نقل است و مسئول ارسال محصول به فروشنده می‌باشد. این عامل می‌تواند هم در فرآیند بازپرداخت و هم برای حمل و نقل عادی محصولات از طریق خرید استفاده شود.
  • عامل بازخورد: این عامل نماینده فرآیند جمع‌آوری بازخورد است و مسئول جمع‌آوری نظرات مشتری است. بازخورد می‌تواند در هر زمان و نه تنها در طی فرآیند بازپرداخت گرفته شود.
  • عامل تشدید: این عامل نماینده فرآیند تشدید مشکل است و مسئول ارتقاء مسائل به سطوح بالاتر پشتیبانی می‌باشد. می‌توانید این نوع عامل را در هر فرآیندی که نیاز به تشدید مسائل دارد استفاده کنید.
  • عامل اطلاع‌رسانی: این عامل نماینده فرآیند اطلاع‌رسانی است و مسئول ارسال هشدارها و اطلاعیه‌ها به مشتری در مراحل مختلف فرآیند بازپرداخت است.
  • عامل تحلیل: این عامل نماینده فرآیند تحلیل است و مسئول تحلیل داده‌های مرتبط با فرآیند بازپرداخت است.
  • عامل حسابرسی: این عامل نماینده فرآیند حسابرسی است و مسئول بررسی صحت انجام فرآیند بازپرداخت است.
  • عامل گزارش‌دهی: این عامل نماینده فرآیند گزارش‌گیری است و مسئول تولید گزارش‌های مرتبط با فرآیند بازپرداخت است.
  • عامل دانش: این عامل نماینده فرآیند مدیریت دانش است و مسئول نگهداری پایگاه دانشی مربوط به فرآیند بازپرداخت است. این عامل می‌تواند درباره بازپرداخت‌ها و سایر بخش‌های کسب‌وکار شما اطلاعات داشته باشد.
  • عامل امنیت: این عامل نماینده فرآیند امنیت است و مسئول تامین امنیت فرآیند بازپرداخت است.
  • عامل کیفیت: این عامل نماینده فرآیند کیفیت است و مسئول تضمین کیفیت فرآیند بازپرداخت می‌باشد.

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

تمرین

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

قبل از خواندن راه‌حل زیر کمی فکر کنید، ممکن است به تعداد عوامل بیشتری از آنچه فکر می‌کنید نیاز داشته باشید.

نکته: به مراحل مختلف فرآیند پشتیبانی مشتری فکر کنید و همچنین عوامل مورد نیاز برای هر سیستم را در نظر بگیرید.

راه‌حل

راه‌حل

ارزیابی‌های دانش

سؤال: چه زمانی باید از چند عامل استفاده کنید؟

  • A1: زمانی که بار کاری کمی دارید و کار ساده‌ای است.
  • A2: زمانی که بار کاری زیادی دارید.
  • A3: زمانی که کار ساده‌ای دارید.

آزمون راه‌حل

خلاصه

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

سؤال‌های بیشتری درباره الگوی طراحی چند عاملی دارید؟

به دیسکورد Microsoft Foundry بپیوندید تا با یادگیرندگان دیگر ملاقات کرده، در جلسات حضوری شرکت کنید و سوالات خود درباره عوامل هوش مصنوعی را مطرح کنید.

منابع بیشتر

درس قبلی

طراحی برنامه‌ریزی

درس بعدی

فراتفکر در عوامل هوش مصنوعی


توضیح مهم:
این سند با استفاده از خدمات ترجمه ماشینی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً آگاه باشید که ترجمه‌های خودکار ممکن است دارای خطا یا نادقتی باشند. نسخه اصلی سند به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه‌ی تخصصی و انسانی توصیه می‌شود. ما مسئول سوءتفاهم‌ها یا برداشت‌های نادرست ناشی از استفاده از این ترجمه نخواهیم بود.