Back to blog
چت‌بات و پردازش زبان

چطور چت‌بات فارسی را درست تست کنیم

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

تیم قطره۱۴ شهریور ۱۴۰۵7 min read
چطور چت‌بات فارسی را درست تست کنیم

بیشتر تیم‌ها چت‌بات را این‌طور تحویل می‌گیرند: چند پرسش می‌پرسند، پاسخ‌ها معقول به‌نظر می‌رسند، و سرویس تأیید می‌شود. این روش تقریباً هیچ‌چیز را اثبات نمی‌کند.

پاسخ کوتاه

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

چرا «پاسخ معقول بود» معیار نیست

یک سامانهٔ پاسخ‌گو تقریباً همیشه چیزی برمی‌گرداند. اگر موضوع را نشناسد، پاسخ عمومی می‌دهد؛ اگر موضوع را اشتباه بگیرد، پاسخی می‌دهد که به‌تنهایی درست است ولی به پرسش ربطی ندارد.

دومی فریبنده‌تر است چون خواندنی و روان است. در سنجش سامانهٔ خودمان، پرسش «آموزش سازمانی برای شرکت ما دارید؟» با متن زمان‌بندی پروژه پاسخ داده می‌شد — متنی کاملاً درست و کاملاً بی‌ربط. کسی که فقط پاسخ را می‌خواند، ایرادی نمی‌بیند.

راه‌حل این است که هر مورد آزمون، به‌جای «پاسخ خوب بود»، ادعا کند پاسخ باید حاوی چه نشانهٔ مشخصی باشد: نشانی صفحهٔ مقصد، یک عبارت کلیدی از متن مرجع، یا شمارهٔ تماس. آن‌وقت پاسخ زیبای بی‌ربط، رد می‌شود.

مجموعه پرسش را بسازید، نه چند تست پراکنده

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

فهرست ما به ۴۷ مورد رسید و این‌ها را پوشش می‌دهد:

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

آن مورد آخر را دست‌کم نگیرید. اگر خدمتی ندارید، سامانه باید صریح بگوید ندارید؛ کاربری که بر اساس وعدهٔ نادرست تماس بگیرد، هم وقت شما را می‌گیرد هم اعتماد را.

سه شکست خاموش که فقط با تست دیده می‌شوند

۱. محدودیت نرخ که پاسخ خالی برمی‌گرداند. میان‌افزار ما ۲۰ درخواست در دقیقه از هر نشانی اجازه می‌دهد. وقتی ۴۲ پرسش پشت‌سرهم فرستادیم، از مورد بیست‌ویکم به بعد همه پاسخ خالی گرفتند — که دقیقاً شبیه یک سرویس خراب به‌نظر می‌رسید، در حالی که سرویس سالم بود و آزمون اشتباه اجرا می‌شد. مجموعه پرسش باید با فاصله اجرا شود و کد وضعیت را هم گزارش کند، نه فقط متن پاسخ.

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

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

سرعت را از شبکه جدا کنید

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

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

در سنجش ما، زمان کل از بیرون حدود ۴۰۰ میلی‌ثانیه بود و همان درخواست روی خود سرور ۱۰ تا ۱۴ میلی‌ثانیه. یعنی تقریباً همه‌اش شبکه بود و بهینه‌سازی بیشتر کد، هیچ تغییری برای کاربر ایجاد نمی‌کرد. بدون اندازه‌گیری دوم، ممکن بود روزها صرف بهینه‌سازی جای اشتباه شود.

دفترچهٔ پرسش‌های بی‌پاسخ

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

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

اجرای این کار برای یک سازمان در کرج

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

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

پرسش‌های متداول

چند مورد آزمون کافی است؟

عدد جادویی ندارد، ولی سه گروه باید پوشش داده شود: پرسش‌های متعارف هر خدمت، هر نقصی که قبلاً پیدا شده، و پرسش‌های بی‌معنا. مجموعهٔ ما با ۴۲ مورد شروع شد و با هر نقص تازه بزرگ‌تر شد.

هر چند وقت باید اجرا شود؟

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

آیا می‌شود این را خودکار کرد؟

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

تفاوت این کار با آزمون یک وب‌سایت معمولی چیست؟

در وب‌سایت معمولی، خروجی درست یکتاست. در پاسخ‌گویی، چند پاسخ می‌توانند درست باشند. برای همین ادعا باید روی منبع پاسخ باشد نه روی متن دقیق آن — یعنی «پاسخ باید به صفحهٔ چت‌بات ارجاع دهد»، نه «پاسخ باید عیناً این جمله باشد».

آیا برای معماری مبتنی بر مدل زبانی هم همین روش جواب می‌دهد؟

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

اگر تیم فنی داخلی نداریم چه کنیم؟

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

خدمات مرتبط قطره