Conversation Design สำหรับการเขียน ChatBot ในยุค LLM
ก่อนหน้านี้ผมศึกษาเรื่อง Conversation Design เยอะมาก พยายามจะเอามาใช้กับ Chat Bot โดยเฉพาะกับ Google DialogFlow แต่ก็ล้มเลิกไป เพราะว่ามันออกแบบบทสนทนาดีๆ ยากมาก แค่จะให้มันซื้อของจบก็ยากมากแล้ว มันมีเส้นที่เป็นไปได้เยอะมาก
แค่ทำให้มันรู้จักคำทักทายครบ ก็เหนื่อยละ เช่น ไง, ดีจ้า, ดี, สวัสดี, Hi, Hello, จ้า, เฮ้ และอีกมากมาย
แต่พอมี LLM (Large Language Model) ความฝันก็กลับมาใหม่ 🤩 มันทำให้เรากำหนด Branding ได้ชัด อยากให้ตอบแบบสุภาพ หรือให้คนตอบเป็นหมายังได้เลย (“นุดชอบสินค้าเราป่าว”) เราปั้นมันได้หมด! สุดท้ายเลยมาจริงจังเรื่องนี้ถึงขั้นทำ DealDroid ขึ้นมาเลยละ
ความท้าทายใหม่: LLM คือ Bug Factory
แต่การเริ่มต้นใหม่ครั้งนี้ มันก็มาพร้อมกับ ความท้าทายที่ใหญ่มาก คือ “LLM เป็นระบบที่มีความไม่แน่นอนสูง” หลายคนเรียกว่ามันเป็น “Bug Factory” เลย 😫 ซึ่งต่างจากคอมพิวเตอร์แบบเดิมที่ Input เหมือนเดิม Output ต้องเหมือนเดิมเสมอ แต่ AI ไม่ใช่แบบนั้น! มันคือการทำงานใน ‘พื้นที่สีเทา’ ที่เราควบคุมยากมาก การทำ Conversation Design ยุคนี้เลยไม่ได้อยู่แค่การออกแบบบทสนทนาที่สวยงาม แต่คือการ ป้องกันความไม่แน่นอน นี้ด้วย!! 💪

วันนี้ผมขอเล่าเรื่อง Conversation Design จากเรื่อง Guard Rail ก่อนเลย มันเป็นผลที่ได้จากการทำวิจัยตัว AI ที่ผมทำอยู่นี่ละครับ เพราะถ้าต้องการให้แม่ค้าไว้ใจ เราต้องกำหนด Guard Rails ไว้ในหลายๆ เรื่อง โดยหลักการแก้ปัญหา Hallucination ที่ได้ผลมากที่สุดที่เราใช้ คือการใช้เทคนิค “Validate-before-Response” หรือที่หลายคนเรียกกันว่า “2-Agent Check” ครับ! 🚀
ผมจะไล่ Guard Rails ที่ผมใช้ไปที่ละตัวนะครับ
1. Price Hallucination 💰
คือ AI มันก็มีชุดความรู้ของมัน ดังนั้นมันจะรู้ราคาคร่าวๆ ในใจ ถ้ามีคนถามมา แล้วเราไม่ได้มีราคาอยู่ใน Prompt มันก็จะปั้นราคาขึ้นมาเอง โดยเฉพาะเวลาที่คนย้ำถามเยอะๆ แล้วเราดันบอกให้ AI พยายามตอบด้วยนะ
เช่น ตอนต้น prompt เราบอกว่า
"You are sale expert. Your primary task is to analyze the user's message
and all provided context, then generate a natural conversational response
to keep the response concise and natural for chat message"
อันนี้ดูไปก็ Ok เป็นการใช้เทคนิค Role play ใน Prompt Engineer แต่ปัญหาก็คือเวลาที่ลูกค้าถามย้ำๆ ว่า “ราคาเท่าไหร!!!” Bot มันก็จะพยายาม Analyze และพยายาม Keep response เพราะเป็น Primary task จนมันอาจจะหลุดบอกราคาปลอมๆ ออกไป
วิธีแก้ไข
ทางแก้ไม่ใช่การแก้ Prompt ตัวนี้ แต่เป็นการส่งคำตอบไปถาม AI อีกรอบ (บางคนจะเรียกอีก Agent) โดยตัว AI ที่สองจะไม่ได้มีหน้าที่ในการสร้างข้อความ แต่มีหน้าที่แค่ตรวจข้อความ แล้วถ้าไม่ถูกก็ให้บอกว่าไม่ถูกเพราะอะไร แล้วส่งกลับไปให้ AI ตัวแรกหาคำตอบอีกครั้ง
2. Product Feature Hallucination 🎁
อันนี้จริงๆ คล้ายกับอันแรกมากๆ แต่จุดพลาดมักจะเกิดตอนที่ลูกค้าดันบอก Bot ว่าร้านเรามี Promotion นี้ แล้วเจ้า Bot ซึ่งพยายามจะตอบอยู่แล้ว มันก็จะเล่นตามน้ำไป แล้วก็บอกว่าร้านเรามี Promotion นี้ด้วย แถมบางทีก็บอกส่วนลดให้เสร็จสรรพ
ถึงเราจะย้ำไปใน Prompt ว่าห้ามบอก Promotion ที่ไม่มี แต่วินาทีนี้ลูกค้ายืนยันแล้วว่ามี มันก็จะถือว่าไม่ผิดละ เพราะมี Promotion ไง ลูกค้าบอกมา
วิธีแก้ไข
ทางออกก็แบบเดียวกับแบบแรก คือโยนให้ AI คิดอีกรอบ แต่ครั้งนี้ให้ AI ทำหน้าที่ตรวจอย่างเดียว เช่น
Set "has_hallucinated_content" to true when you find:
- Delivery/shipping services or policies not mentioned in Context
- Warranties, guarantees, or return policies beyond what's stated in Context
- Promotions, discounts, or special offers not mentioned in Context
ในกรณีนี้ผมให้ AI ตัวที่สอง return json ไฟล์ ก็จะบอกมันว่าให้ flag hallucinated เมื่อไหร แล้วเราก็ส่ง Content ที่ AI ตัวแรกตัดสินใจไปให้มันด้วย
3. Quantity/Stock Hallucination 📦
ข้อนี้สำหรับคนทำ Bot จะยากมาก โดยเฉพาะกรณีที่เราไม่สามารถตรวจ Stock แบบ realtime ได้ตลอด เราต้องหาทางลงเอาไว้ว่าเมื่อไหรที่ลูกค้าถามให้เราตอบว่าอะไร และถ้าลูกค้าถามย้ำ คือพยายามบังคับให้ Bot ตอบ เราก็ต้องเตรียมคิดคำตอบกรณีที่ AI โดนบังคับเอาไว้ด้วย
ตัวอย่างความ Hallucinate:
- "Only 3 bags left!" → ถ้าไม่มีข้อมูล stock แต่ลูกค้าบังคับให้ตอบ
- "Limited edition" → ถ้าโดนถามว่ามีจำกัดมั๊ย มันจะพยายามขาย ซึ่งถ้าบอกว่าจำกัดอาจจะขายได้
- "Out of stock" → เพราะเข้าใจว่าเลิกผลิตแปลว่าไม่มีสินค้า
ทีนี้มันไม่ได้มีแค่เรื่องจำนวนสินค้า มันจะมีพวกสินค้าที่เป็น Limited Edition ที่มีโอกาสที่ Bot จะเข้าใจผิดว่านี่เป็นการถามถึง Stock สินค้า และทำให้มันบอกว่าเป็นคำตอบที่ผิดเพราะพูดถึง Stock หรือในกรณีที่สินค้าเลิกผลิตแล้ว แต่เรายังขายอยู่ในกรณีนี้เราจะให้ Bot ตอบลูกค้าว่าอะไร และจะให้แนะนำสินค้าตัวไหนแทนก็ต้องบอกเอาไว้เลย
ข้อมูล
อีกทางออกนึงที่เป็นไปได้ในการตอบคือการส่งต่อให้กับพนักงาน เมื่อลูกค้าถามถึง Stock ก็ให้ Bot ตอบว่า “ไม่แน่ใจ ขอถามทีมงานก่อน” แล้วก็ให้ส่ง e-mail ไปให้พนักงานเข้ามาช่วยตอบแทน
4. Inappropriate Language Mixing 🌏
อันนี้สนุกมาก โดยเฉพาะภาษา SEA ที่มีหลากหลาย มันก็จะมีปนจีนบ้าง ญี่ปุ่นบ้าง บางทีให้ตอบภาษาลาวก็มีภาษาไทยเข้าไปปนด้วย เช่น
ตัวอย่างที่ไม่ควรเกิด:
- "สวัสดี! 我们有很好的狗粮!" (มี Chinese characters ผสม)
- "こんにちは! We have great dog food" (มี Japanese)
- "안녕하세요 มีอาหารสุนัขครับ" (มี Korean)
แต่ถ้าเราจะให้มันตรวจว่ามีแค่ภาษาเดียวก็ไม่ได้เพราะบางทีการพูดไทยปนอังกฤษมันก็เป็นเรื่องปกตินี่นา
ตัวอย่างที่ OK (Borrowed Words):
- "เรามี organic dog food" (OK - borrowed word)
- "ของเรา premium quality" (OK)
- "มี delivery ส่งฟรี" (OK)
ดังนั้นพวกคำยืมทั้งหลาย (Borrowed Words) เราก็ต้องให้มันพูดได้ด้วย ยิ่งถ้าลูกค้าเป็นคนเปิดใช้คำพวกนี้ก่อน ถ้าเราใช้ตามก็จะทำให้การสื่อสารดีขึ้นอีก
ตัวที่ทำ Guardrail ก็ต้องคอยวางเงื่อนไขการตรวจให้ดี (และทดสอบให้หนัก)
5. Competitor Mention 🏆
อันนี้ต้องทำใจว่าไม่ง่ายเพราะมีหลายปัจจัย ตั้งแต่ตัว AI จะตัดสินใจได้อย่างไรว่าใครเป็น Competitor
เช่นเราเทียบ DJI กับ GoPro ตัว Bot ก็อาจจะมองว่า DJI เป็น Drone ส่วน GoPro เป็นกล้อง ไม่ได้อยู่สนามเดียวกัน หรือมองว่าเราสามารถเอา GoPro มาต่อกับ DJI ได้แสดงว่าเป็นส่วนเสริมกัน และอาจจะมองยาวไปว่า GoPro เป็นสินค้าของเราเลยก็ได้ ทั้งๆ ที่เราอยากให้ GoPro เป็นคู่แข่งเพราะ DJI ก็มีกล้องขาย
วิธีแก้ไข
ทางออกสำหรับส่วนนี้คือให้เรากำหนดไปเลยว่าคู่แข่งของเรามีใครบ้าง และบอกไปเลยว่าไม่ให้ Mention ถึง
แต่ก็ต้องระวังเพราะถ้าลูกค้าให้เราเปรียบเทียบ Bot ก็อาจจะตกอยู่ในสถานการณ์ลำบาก เพราะเราห้ามไม่ให้พูด แต่ลูกค้าอยากให้พูด และ Bot ก็มักจะเชื่อลูกค้าด้วย ดังนั้นสิ่งที่เราต้องทำต่อคือหาทางลงให้ Bot ให้บอกไปเลยว่าถ้าต้องพูดถึงจะพูดอย่างไรได้บ้าง
Guard Rails อื่นๆ ที่สำคัญ
นอกจากนั้นจะมีพวก การเติมหัวข้อที่ห้ามคุย “Forbidden Topic” “remove white space” ที่เป็นรายละเอียดเล็กๆ น้อยๆ ที่ทำให้บทสนทนาดีขึ้น รวมถึงการจบประโยคสนทนาด้วยคำถาม หรือการชวนให้ลูกค้าเกิด Conversion ไปยัง Marketing Funnel ถัดไป
แล้วถ้าไม่อยากให้ตัว guard rails มันทำแค่ป้องกัน แต่อยากให้มันเสนอวิธีแก้ด้วย อันนี้ก็สนุกเช่นกัน เพราะเราก็ไม่ต้องการให้มันคิดใหม่ แค่อยากให้แก้ไขข้อความเท่านั้น ดังนั้นเลยมีเงื่อนไขที่ไม่เหมือนตอนสร้างข้อความ (ไว้เอามาเล่าอีก)
การทำ Conversation Design มันสนุกไม่แพ้การออกแบบ UI หรือการทำ UX Writer เลยครับ เพราะทุกครั้งที่เราเก็บ “Guard Rail” ก็เหมือนการทำให้ UX ของบทสนทนาดีขึ้นเรื่อย ๆ
ความท้าทายที่ใหญ่มากๆ คือความไม่แน่นอนของ AI แต่นั่นแหละคือสิ่งที่ทำให้ เราต้องพยายาม Empathy AI ครับ 🧠 เราต้องยอมรับว่า “AI ก็ไว้วางใจไม่ได้เหมือนกัน” การวาง Guardrails เอาไว้ ก็จะช่วยให้ทีมงานไว้ใจน้อง Bot มากขึ้นแน่นอน🧠
✨ สรุปแล้ว: Conversation Design สำหรับ AI แบบ LLM ไม่ใช่แค่การออกแบบ “เส้นทางที่ใช่” แต่ต้องเพิ่ม “ขอบเขตที่ไม่ผิด” ให้กับ AI ด้วย มันต้องเป็นขอบเขตที่ไม่กว้างจนทำผิดได้ และไม่แคบจน AI ขาดอิสระ เพราะในบทสนทนาจริง มันจะมีเรื่องที่เราคาดไม่ถึงเกิดขึ้นเสมอ 😊
แล้วเพื่อนๆ ล่ะครับเจอ Hallucinate อะไรกันบ้าง ใส่ Guard Rail ตัวไหนที่ใช้แล้วดีๆ อยากมาแชร์บ้างไหมครับ? ผมสนุกกับเรื่องนี้มากๆ กำลังไล่ศึกษาเรื่อง Conversation Design อยู่เรื่อยๆ ใครอ่านอันไหนแล้วดี แนะนำได้เลยนะครับ 🙏
Comments