Chatbot สร้างไม่ยาก แต่ทำให้ดี…ไม่ง่าย บทเรียนจากป้ายุพิน

yupin chatbot

หลังจากที่ platformใหญ่ๆ อย่าง Facebook Messenger, LINE, และ Slack ได้เปิดให้นักพัฒนาสามารถเขียนโปรแกรมโต้ตอบกับผู้ใช้งานผ่านการ chat ได้ ตอนนี้ผู้คนในแวดวงเทคโนโลยีคงจะไม่มีใครไม่รู้จักกับ chatbot

“Bots are the new apps.”
— Microsoft CEO Satya Nadella

ธุรกิจทั้งใหญ่และเล็กต่างก็พากันตื่นตัวหันมาเพิ่มช่องทางการให้บริการด้วย chatbot เพื่อขยายโอกาสทางธุรกิจ (และไม่ให้ตกเทรนด์!) ไม่ว่าจะเป็นการค้นหาตั๋วเครื่องบิน (Hipmunk), ค้นหาร้านอาหาร (Wongnai), ช็อปปิ้ง (eBay), ทำธุรกรรมทางธนาคาร (KAI), ตรวจสอบสภาพอากาศ (Poncho), ติดตามข่าวสาร (TechCrunch) และอื่นๆอีกเพียบ

“ยุพิน” ที่ผมและทีมงานจิตอาสาได้ช่วยกันสร้างขึ้นมาก็เป็นหนึ่งในนั้น…

ยุพิน: หยุดบ่น ส่งพิน

ยุพิน หรือชื่ออังกฤษว่า YouPin เป็น application ให้คุณมาปัก pin รายงานปัญหาต่างๆในเมือง เช่น ทางเท้ามีน้ำท่วมขัง หรือขยะล้นส่งกลิ่น เพื่อรวบรวมข้อมูลและประสานงานส่งต่อไปยังหน่วยงานที่รับผิดชอบ #opendata #crowdsourcing #activecitizen

yupin location sharing
https://youpin.city/app

ยุพินน่าจะเป็นทีมพัฒนากลุ่มแรกๆ ในไทยที่หยิบเอา chatbot มาใช้ (ตั้งแต่ช่วงกลางปี 2016) โดยความตั้งใจของทีมในตอนนั้น คือ

  1. อยากให้คนรายงานปัญหาผ่านมือถือได้ง่าย เห็นปัญหาปุ๊ป สามารถหยิบมือถือขึ้นมาแล้วรายงานได้ทันที ไม่ต้องดาวน์โหลด app เพิ่ม (ซึ่งคนส่วนใหญ่ก็ไม่ค่อยอยากดาวน์โหลดอยู่แล้ว โดยเฉพาะอย่างยิ่ง app ที่นานๆจะได้ใช้ที) และให้เจ้าหน้าที่สามารถติดต่อกลับเพื่อสอบถามเพิ่มเติมหรือรายงานความคืบหน้าได้ง่าย
  2. อยากให้การรายงานปัญหาเป็นเรื่องที่สนุก คนที่เจอปัญหาน่าหงุดหงิดมา เค้าอยากจะบ่น อยากจะระบายให้คนอื่นฟัง (เหมือนที่เราเห็นกันอยู่เต็ม social media) ไม่มีใครอยากจะมานั่งกรอกแบบฟอร์มยาวๆบน website

สุดท้ายก็เลยได้ออกมาเป็น บอทป้ายุพิน คุณป้าใจดี(รึเปล่า?)ที่คอยรับฟังปัญหาของคนเมืองผ่าน Facebook Messenger App

youpin messenger app
คุยกับป้ายุพินได้ผ่าน Facebook Messenger App (ไปที่ Tab People แล้วเลือก Scan Code หรือไปที่ m.me/youpin.city ก็ได้)

หลังจากที่ได้เปิดตัวป้ายุพินออกไป ก็มีเพื่อนๆ มาถามถึงการทำ chatbot กันหลายคน เลยถือโอกาสนี้เขียนบันทึกเก็บไว้ให้ผู้ที่สนใจได้อ่านกัน

Chatbot กับการเป็น User Interface

เวลาพูดถึง chatbot คนส่วนใหญ่มักจะนึกถึง AI ที่ฉลาด เข้าใจคำพูดมนุษย์ และโต้ตอบบทสนากับเราได้แบบเนียนๆ และมักจะมองข้ามไปว่า บทบาทที่สำคัญของ chatbot ไม่ว่าจะฉลาดหรือโง่ คือการเป็น user interface การเป็นตัวกลางระหว่างผู้ใช้งานกับระบบ เพื่อช่วยให้ผู้ใช้งานสามารถทำ task อะไรบางอย่างได้ ไม่ว่าจะเป็นการค้นหาร้านอาหาร โอนเงินให้เพื่อน หรือพินบอกปัญหาที่พบในเมือง

การสร้าง chatbot (หรือ conversational interface) อาจจะเปรียบได้กับการทำหน้าเว็บ (web interface) ให้คนเข้ามาปฏิสัมพันธ์กับระบบได้ ไม่ว่าจะอ่านข้อมูล เขียนข้อมูล หรือทำธุรกรรมต่างๆ chatbot ที่พูดจาน่าฟัง ไหลลื่น ไม่ถามวกไปวนมา อาจจะเปรียบได้กับเว็บไซต์ที่สวยงาม ใช้งานง่าย ในขณะที่ chatbot ที่ฉลาด อาจจะเปรียบเทียบได้กับเว็บล้ำๆ ที่รู้ว่าเราต้องการอะไร มีการทำ personalization หรือมีระบบแนะนำสินค้าและบริการต่างๆ

instagram interface
ตัวอย่าง interface ที่เข้าใจความตั้งใจของผู้ใช้งานเป็นอย่างดี | ซ้าย: หากเราพยายามจะเพิ่ม volume ขณะที่กำลังชมวิดีโอที่ไม่มีเสียง มันก็จะมีข้อความขึ้นมาบอกว่า วิดีโอนี้ไม่มีเสียงนะ หยุดปรับ volume ได้แล้ว | ขวา: หากเราพยายามจะบันทึก screenshot มันก็จะขึ้นข้อความเตือนว่าคุณสามารถกดแชร์รูปนี้กับเพื่อนได้นะ ไม่ต้องถ่าย screenshot ก็ได้

Chatbot สร้างได้ไม่ยาก

ข้อดีอย่างหนึ่งของการพัฒนา chatbot บน platform ต่างๆ ก็คือ เราสามารถเริ่มต้นได้ง่ายมากๆ เพียงแค่คิดข้อความ คำถาม คำตอบ ที่จะใช้ในแอปของเรา (แต่จะออกมาดีหรือไม่ นั่นอีกเรื่องหนึ่ง เดี๋ยวเราจะพูดถึงกันในหัวข้อถัดไป) หากเปรียบเทียบกับการทำเว็บ แค่การจะเอาข้อความๆ หนึ่งขึ้นมาแสดง เราก็ต้องใช้เวลาพอสมควรในการจัดวางหน้า เลือกสี เลือกฟอนต์

Youpin bot conversation
ตัวอย่างบทสนทนาจาก YouPin Bot

ความง่ายไม่ใช่แค่นั้น เราสามารถรับข้อมูลประเภทอื่นๆ ที่ platform รองรับ นอกเหนือจากตัวอักษรได้อีกด้วย

facebook messenger data type
ภาพจาก Facebook Messenger

เช่น ในแอปยุพิน ป้ายุพินก็จะถามหา location ของปัญหาที่พบ พร้อมภาพประกอบ ซึ่ง Facebook Messenger รองรับอยู่แล้ว หากเราเปลี่ยนจาก chatbot เป็น web application นักพัฒนาก็คงต้องใช้เวลาพอสมควร ในการสร้างฟังก์ชันการอัพโหลดรูป หรือต่อ Map API เพื่อให้ผู้ใช้งานระบุพิกัดสถานที่

youpin bot location conversation
ตัวอย่างบทสนทนากับป้ายุพินบน Facebook Messenger

สร้าง User Experience ที่ดี … ไม่ง่าย

ความท้าทายอย่างหนึ่งของ conversational UI คือ ผู้ใช้งานอาจจะพูดอะไรมาก็ได้ ซึ่งมีความเป็นไปได้สูงมากที่ chatbot ของเราจะไม่เข้าใจ และไม่รู้จะตอบว่าอะไรดี หรือในทางตรงกันข้ามผู้ใช้งานบางกลุ่มอาจจะยังไม่คุ้นเคย และไม่รู้ว่าควรจะพูดอะไรหรือไม่รู้ว่า chatbot เราทำอะไรได้บ้าง กลายเป็นปัญหา discoverability ไป

Is it possible to even figure out what actions are possible and where and how to perform them?
— The Design of Everyday Things (Don Norman)

นอกจากนี้ในการออกแบบ conversational UI ที่ดี เรายังต้องคำนึงถึง

  • การเริ่มต้น และปิดจบบทสนทนา
  • จังหวะจะโคนในการโต้ตอบบทสนทนา ตอนไหนควรหยุดฟัง ตอนไหนควรถามคำถาม หรือตอนไหนควรอธิบาย
  • การวาง persona ให้กับ chatbot
chatbot design checklist
Check list ของการออกแบบ conversational UI จาก Google (g.co/dev/ActionsChecklist)

สิ่งที่สำคัญมากในการออกแบบบทสนทนาให้กับ chatbot คือ การทดสอบบ่อยๆ อย่ามัวเสียเวลานั่งวาด flow chart ใหญ่โตอยู่คนเดียว เพราะคุณไม่มีทางเดาได้เลยว่าผู้ใช้งานอาจจะตอบอะไรมาบ้าง นอกจากนี้การทดสอบอาจจะทำได้ตั้งแต่ตอนที่ยังเป็น prototype โดยการใช้คนจริงๆ มาทำตัวเป็น chatbot เพื่อศึกษาการตอบสนองของผู้ใช้งาน หรือที่เรียกว่าการทำ Wizard of Oz

 

ในส่วนของป้ายุพิน จะมีขั้นตอนหนึ่งที่ป้าจะให้ผู้ใช้งานเล่ารายละเอียดปัญหาที่พบให้ฟัง ในเวอร์ชันแรกที่ออกแบบมา ทันทีที่ผู้ใช้งานบรรยายปัญหาตอบกลับมาหนึ่งข้อความ ป้าก็จะถามคำถามสำหรับขั้นตอนถัดไปทันที แต่หลังจากที่เอาไปทดสอบกับผู้ใช้งานจริง พบว่าผู้ใช้งานหลายคน บรรยายปัญหาไม่จบในข้อความเดียว กด Enter ทุกๆ สามสี่คำ ทำให้ระบบและผู้ใช้งานสับสนกันไปหมด ????

ในเวอร์ชันที่สอง เราเลยลองเปลี่ยนให้ผู้ใช้งานสามารถส่งข้อความมาได้ไม่จำกัด และป้าจะถามคำถามต่อไปก็ต่อเมื่อผู้ใช้งานเงียบไปเกิน 5 วินาที ผลปรากฏว่าผู้ใช้งานส่วนใหญ่พอเห็นป้าเงียบไปเกินสามวินาทีก็จะคิดว่าป้าเดี้ยงไปแล้ว ผู้หวังดีหลายท่านก็จะส่งข้อความมาถามว่าป้ายังอยู่ไม๊ โอเครึเปล่า ทำให้ไม่ได้ไปขั้นต่อไปสักที #ติดลูป แต่ถ้าเราลดเวลารอให้น้อยลงไปกว่านี้ ก็มีโอกาสที่เราจะข้ามไปขั้นต่อไปในขณะที่ผู้ใช้งานกำลังพิมพ์บรรยายปัญหาอยู่

ในเวอร์ชันสุดท้าย เราจึงให้ผู้ใช้งานบอกเราเองเลยว่าอธิบายปัญหาเสร็จแล้วด้วย hashtag #จบนะ จะได้ไม่ต้องเดาผิดเดาถูกว่าตกลงผู้ใช้งานรายงานปัญหาเสร็จหรือยัง

ending-conversation-chatbot
การใช้ #จบนะ เป็นตัวบอกความตั้งใจ (intent) ของผู้ใช้งาน

ปล.​ จริงๆ แล้ว #จบนะ อาจจะไม่ใช่ทางออกที่ดีที่สุด เพราะการเปลี่ยนแป้นพิมพ์จากภาษาไทย เพื่อไปพิมพ์ตัว # แล้วเปลี่ยนกลับมา ออกจะยุ่งยากไปสักนิด แต่ก็หวังว่าผู้ใช้งานน่าจะชินกับการใช้ hashtag บน social media แล้ว #แถ และก็เป็น gimmick เล็กๆ ให้กับป้ายุพินของเราไป #จบนะ

AI กับ Chatbot

Chatbot ที่ไม่ค่อยฉลาด (เช่น ป้ายุพิน ????) สามารถสร้างได้โดยการระบุกฎต่างๆ เพื่อกำหนด flow ของบทสนทนา หรือที่เรียกกันว่า rule-based chatbots

conversation-flow-chatbot-example
ตัวอย่าง Flow บทสนทนาของป้ายุพิน

การที่จะทำให้ rule-based chatbots ทำงานได้ดีนั้น เราจะต้องระบุกฎให้ครอบคลุมทุกคำตอบที่ผู้ใช้งานอาจจะตอบเข้ามา ซึ่งทำได้ค่อนข้างยาก #ถึก ด้วยเหตุนี้เอง AI จึงถูกนำเข้ามาใช้เพื่อเรียนรู้ pattern จากบทสนทนาที่เกิดขึ้นจริง และช่วยให้ chatbot สามารถเข้าใจสิ่งที่ผู้ใช้งานพูดได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

หน้าที่หลักๆ ของ AI ใน chatbot คือ การเข้ามาช่วยทำนายว่าผู้ใช้งานมีความตั้งใจ (intent) ที่จะทำอะไร และดึงข้อมูลบริบทที่เกี่ยวข้องออกมาจากบทสนทนา จากตัวอย่างด้านล่าง ในการถามสภาพอากาศ ผู้ใช้งานอาจจะถามได้หลายวิธี และอาจมีการระบุข้อมูลเวลาหรือสถานที่มาด้วย

weather-conversation-condition
การถามสภาพอากาศอาจจะทำได้หลากหลายวิธี (DialogFlow)

ข้อความจาก chatbot โดยทั่วไปมักจะมาจาก template ที่ถูกเตรียมเอาไว้แล้วสำหรับ การโต้ตอบในกรณีต่างๆ แต่ถ้าอยากจะล้ำขึ้นไปอีกขั้น เราก็สามารถนำ AI มาใช้สร้างข้อความโต้ตอบที่หลากหลายได้เช่นกัน ผ่านสิ่งที่เรียกว่า generative models

chatbot-text-response
ตัวอย่าง template คำตอบ (DialogFlow)

หัวใจสำคัญในการนำ AI มาใช้สร้าง chatbot คือ ข้อมูลปริมาณมากที่จะนำมาใช้สอนให้เครื่องเรียนรู้บทสนทนาในรูปแบบที่แตกต่างกันออกไป ซึ่งหากคุณไม่ได้ทำงานอยู่ในองค์กรขนาดใหญ่ที่มีการบันทึกบทสนทนาจาก call center ไว้อยู่แล้ว ก็อาจจะเป็นไปได้ค่อนข้างยาก และคงต้องเริ่มจาก chatbot ง่ายๆ ก่อนเพื่อเริ่มเก็บตัวอย่างข้อความจากผู้ใช้งาน

ทิ้งท้าย

Conversational UI อาจจะได้ไม่ได้เหมาะสมกับงานทุกอย่าง โดยเฉพาะงานที่ซับซ้อนและต้องการความถูกต้องแม่นยำสูง ด้วยข้อจำกัดและความท้าทายในการสร้าง chatbot ที่เล่ามาข้างต้น ก่อนจะลงมือสร้าง chatbot ขึ้นมาสักอัน อยากให้คุณลองถามตัวเองดูสักเล็กน้อยว่างานของคุณนั้น เหมาะสมกับ interface อื่นๆ อย่าง web หรือ mobile application มากกว่าหรือไม่

Resources

Leave a Reply

Your email address will not be published. Required fields are marked *