دو تسک هوش مصنوعی من برای کنترل یک ماوس با هم میجنگیدند
نمایشهای موازی عاملها (agents) تا زمانی که دو تسک برای کنترل یک ماوس با هم بجنگند، خوب به نظر میرسند.
یک تسک وارد یک وبسایت میشود. تسک دیگر یک مرورگر را باز میکند. تسک سوم سعی میکند به یک سوال ساده پاسخ دهد. ناگهان، سیستم روی جای اشتباهی کلیک میکند یا اجرای اشتباهی را لغو میکند. این یک مشکل از سمت پرامپت نیست، بلکه یک مشکل از سمت منابع است.
من این را هنگام ساخت CliGate یاد گرفتم. متوجه شدم که در حالی که تسکهای کدنویسی میتوانند به صورت موازی اجرا شوند، دسکتاپ متفاوت است. شما فقط یک کیبورد، یک ماوس و یک صفحه نمایش دارید. اگر دو عامل سعی کنند مالک آن سطح باشند، یکدیگر را مختل میکنند.
اولین ایدهی من این بود که وقتی تسک جدیدی میرسد، تسک قدیمی را لغو کنم. این یک اشتباه بود. کاربری که درخواست بهروزرسانی وضعیت را دارد، نباید فرآیند ورود (login) را متوقف کند.
مجبور شدم قوانین را تغییر دهم.
قوانین جدید برای قابلیت اطمینان عاملها:
- تسکهای مستقل به صورت موازی اجرا میشوند.
- تسکهایی که به دسکتاپ نیاز دارند باید در صف قرار بگیرند.
- لغو فقط زمانی اتفاق میافتد که کاربر درخواست کند.
در CliGate، ورودی دسکتاپ مانند یک اجاره (lease) عمل میکند. یک تسک دسکتاپ را در اختیار دارد. سایر تسکها منتظر نوبت خود میمانند.
منطق جدید به این صورت عمل میکند:
- یک تسک جدید میرسد.
- آیا به دسکتاپ نیاز دارد؟
- اگر نه، آن را به صورت موازی اجرا کن.
- اگر بله و دسکتاپ آزاد است، آن را بگیر.
- اگر بله و دسکتاپ مشغول است، به صف بپیوند.
- فقط اگر کاربر گفت متوقف شو، متوقف شو.
تلاشهای مجدد (Retries) میتواند اوضاع را بدتر کند. اگر تسکی مدام سعی کند ماوس را بگیرد در حالی که تسک دیگری در حال تایپ است، تداخل ایجاد میشود. راه حل این نیست که با شدت بیشتری تلاش مجدد کنید؛ راه حل این است که صادق باشید. دستیار باید بگوید: «دسکتاپ مشغول است. من در صف هستم. وقتی آزاد شد شروع خواهم کرد.»
این کار یک شکست را به رفتاری قابل پیشبینی تبدیل میکند.
همچنین یک قانون سخت اضافه کردم: یک عامل نمیتواند خودش را لغو کند. این کار از این جلوگیری میکند که عامل از روی دستپاچگی روی دکمه خاموش خودش کلیک کند.
ساخت ابزارهای هوش مصنوعی اغلب بیشتر به معنای ساده بودن است تا هوشمندانه بودن.
- اگر تسکها تداخلی ندارند، اجازه دهید اجرا شوند.
- اگر بر سر یک منبع فیزیکی با هم تداخل دارند، آنها را در صف قرار دهید.
- اگر کاربر وضعیت را پرسید، وضعیت را اعلام کنید.
- اگر کاربر گفت متوقف شو، متوقف شوید.
این کار باعث میشود دستیار انسانیتر به نظر برسد. او از جنگیدن برای کنترل دست میکشد و مانند اپراتوری عمل میکند که تفاوت بین یک سوال و یک دستور را میفهمد.
اگر هوش مصنوعی شما با دسکتاپ در ارتباط است، این را به خاطر بسپارید: اجرای موازی تسکها مشکلی ندارد، اما منابع فیزیکی نیاز به مالکیت دارند.
Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij
Optional learning community: https://t.me/GyaanSetuAi