تیپ #۲۵

انسان در حلقه: تأیید را کجا بگذاریم؟

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

توضیح کامل‌تر

طراحی درست این است که هر ابزار (tool) در ایجنت با دو ویژگی برچسب بخورد: برگشت‌پذیری و دامنه‌ی اثر. ابزارهای فقط‌خواندنی مثل جست‌وجو در وب یا واکشی از دیتابیس معمولاً بی‌خطرند و می‌توانند بدون وقفه اجرا شوند، اما ابزارهایی که حالت سیستم را تغییر می‌دهند یا با دنیای بیرون حرف می‌زنند باید پشت یک دروازه‌ی تأیید بنشینند. این کار را می‌توان به‌صورت یک نردبان خودمختاری پیاده کرد: در پایین، ایجنت فقط پیشنهاد می‌دهد؛ در میانه، برای هر عمل حساس اجازه می‌گیرد؛ و در بالا، تن‌ها برای اعمال پرخطر و برگشت‌ناپذیر منتظر انسان می‌ماند. نکته‌ی مهم این است که اگر همه‌چیز را نیازمند تأیید کنید، کاربر پس از چند بار به‌صورت خودکار روی «تأیید» می‌زند و همان اتفاقی می‌افتد که می‌خواستید جلویش را بگیرید؛ به این پدیده خستگی تأیید می‌گویند. مثال ساده: یک ایجنت پشتیبانی می‌تواند بدون اجازه تیکت را بخواند و پیش‌نویس پاسخ بسازد، اما ارسال واقعی ایمیل یا صدور بازپرداخت باید تأیید انسانی بگیرد. متن تأیید هم باید دقیق باشد و بگوید چه چیزی، با چه پارامترهایی و روی چه داده‌ای اجرا می‌شود، نه یک پیام کلی «ادامه می‌دهید؟». در نهایت این سیاست باید در کد و در سطح ابزار اعمال شود، نه با امید به اینکه مدل خودش احتیاط کند.

مفاهیم پایهنکته پیشرفته
← بازگشت به همهٔ نکته‌های روز