Conversation Node — Node ที่ Agent ใช้พูดคุยกับลูกค้า
Node สีน้ำเงินที่ใช้บ่อยที่สุด ทุก Flow มีอย่างน้อยหนึ่งตัว และโดยทั่วไปมักมี 5–15 ตัวต่อหนึ่ง Flow
Conversation Node คืออะไร
Conversation Node (Node สีน้ำเงิน) คือขั้นตอนที่ Agent พูดกับลูกค้าแล้วรอฟังคำตอบ ทุกครั้งที่ Agent ต้องสื่อสารกับลูกค้า จะทำผ่าน Conversation Node เสมอ
เปรียบเทียบให้เห็นภาพ: เปรียบได้กับ การ์ดบทพูด ที่เขียนไว้ว่า "พูดประโยคนี้ แล้วรอลูกค้าตอบ หากลูกค้าตอบแบบ A ให้ไปการ์ดใบที่ 2 หากตอบแบบ B ให้ไปการ์ดใบที่ 5" Conversation Node ก็คือการ์ดหนึ่งใบ ที่ระบุทั้งคำพูดและทางออกไว้ในตัว
โดยทั่วไป Conversation Node จะมีจำนวนมากที่สุดในหนึ่ง Flow เพราะทุกคำถามและทุกประโยคที่ Agent พูด ต้องใช้อย่างน้อยหนึ่ง Node
ส่วนประกอบของ Conversation Node
เมื่อคลิกที่ Node สีน้ำเงินบน Canvas (พื้นที่ทำงานตรงกลาง) แผงด้านขวาจะแสดงส่วนประกอบทั้ง 4 ส่วน ดังนี้
Name (ชื่อ Node)
ชื่อนี้ใช้อ้างอิงภายในเท่านั้น ลูกค้าจะไม่ได้ยิน จึงควรตั้งชื่อให้สื่อความหมายว่า Node นี้ทำหน้าที่อะไร
ตัวอย่างที่ดี: ทักทาย, ถามจุดประสงค์, เสนอราคา, นัดวันชำระ
ตัวอย่างที่ควรเลี่ยง: Node 1, asdf — เมื่อกลับมาแก้ไขภายหลังจะค้นหาได้ยาก
Prompt (บทบาทและคำสั่งสำหรับ Agent)
ส่วนที่สำคัญที่สุด ใช้ระบุให้ Agent ทราบว่าใน Node นี้ต้อง พูดอะไร ฟังอะไร และ ใช้ท่าทีอย่างไร
เขียนเป็นคำสั่งด้วยภาษาทั่วไป ไม่จำเป็นต้องเขียนโค้ด เช่น "ทักทายลูกค้าด้วยถ้อยคำสุภาพ แจ้งว่าโทรจาก... และสอบถามว่าสะดวกสนทนาหรือไม่"
Transition (ทางออก)
เงื่อนไขสำหรับ ออกจาก Node นี้เพื่อไปยัง Node ถัดไป โดยกำหนดได้หลายทาง
เช่น หากลูกค้าสะดวกสนทนา ให้ไปยัง Node เสนอขาย แต่หากไม่สะดวก ให้ไปยัง Node ขอนัดหมายใหม่
ดูรายละเอียดเพิ่มเติมได้ในหัวข้อ Transition
Variables (ตัวแปร — หากมี)
หาก Node นี้ต้อง แทรกข้อมูลของลูกค้า ลงในประโยค (เช่น ชื่อ หรือยอดหนี้) ให้ใส่ตัวแปรในรูปแบบ {{variable_name}}
ดูรายละเอียดเพิ่มเติมได้ในหัวข้อ Input Variable
วิธีเขียน Prompt ให้ Agent พูดตามที่ต้องการ
Prompt คือสิ่งที่กำหนดคุณภาพการทำงานของ Agent หากเขียนได้ดี Agent จะพูดได้อย่างเป็นธรรมชาติและลื่นไหล แต่หากเขียนได้ไม่ดี Agent จะฟังดูเหมือนหุ่นยนต์
โครงสร้าง Prompt ที่แนะนำ
ระบุบทบาท (Role) — Agent คือใคร
เริ่มต้น Prompt ด้วยการระบุว่า Agent ทำหน้าที่เป็นใคร เช่น
คุณคือพนักงานติดตามหนี้ของธนาคาร ABC สนทนาอย่างสุภาพและไม่กดดันลูกค้า
การระบุบทบาทช่วยให้ Agent เลือกใช้ถ้อยคำและวิธีการพูดได้เหมาะสมกับสถานการณ์
ระบุเป้าหมาย (Goal) — Node นี้ต้องการอะไร
ระบุให้ชัดเจนว่า Node นี้ต้องทำสิ่งใดให้สำเร็จ เช่น
เป้าหมาย: ขอให้ลูกค้ายืนยันว่าจะชำระเงินภายในวันที่ตกลงกันไว้
ใส่บริบท (Context) — ข้อมูลที่ Agent ต้องทราบ
ดึงข้อมูลจากตัวแปร (Variables) มาใส่ใน Prompt เช่น
ลูกค้าชื่อ {{customer_name}} มียอดหนี้ {{debt_amount}} บาท ครบกำหนดชำระวันที่ {{debt_due_date}}
ระบุสิ่งที่ห้ามทำ (Don't)
ระบุข้อจำกัดให้ชัดเจน เช่น
ห้ามใช้คำว่า "ทวงหนี้" "ฟ้องร้อง" หรือถ้อยคำที่ทำให้ลูกค้ารู้สึกถูกข่มขู่หากลูกค้าไม่พอใจ ให้กล่าวขอโทษและส่งต่อไปยังทีม Support ทันที
ระบุสิ่งที่ต้องทำให้สำเร็จ (Must)
สิ่งที่ Node นี้ต้องเก็บข้อมูลหรือยืนยันให้ได้ก่อนไปยัง Node ถัดไป เช่น
ต้องได้รับคำตอบจากลูกค้าว่าสะดวกสนทนาหรือไม่ หากลูกค้าไม่ตอบ ให้สอบถามซ้ำอีกหนึ่งครั้ง
ตัวอย่าง Prompt — ดี vs ไม่ดี
ทักทายลูกค้า
เหตุผล: สั้นเกินไป ไม่ระบุบทบาทและไม่มีบริบท ทำให้ Agent ต้องคาดเดาเอง ผลลัพธ์คือพูดสั้น ๆ เพียง "สวัสดีค่ะ" อย่างไม่เป็นธรรมชาติ
เป้าหมาย: ทักทายลูกค้า บอกว่าโทรมาจากธนาคารอะไร และถามว่าสะดวกคุยไหมด้วยประโยคนี้
"สวัสดีค่ะ ดิชั้นเป็นเอไอติดต่อจากธนาคารเอบีซีนะคะ เรียนสายคุณ{{customer_name}} ไม่ทราบว่าสะดวกเรียนสายซักครู่มั้ยคะ"
บริบท:
- ลูกค้าชื่อ {{customer_name}}
- มียอดค้างชำระ {{debt_amount}} บาท (อย่าเพิ่งพูดยอดในรอบนี้)
ห้าม:
- ห้ามใช้คำว่า "ทวงหนี้" หรือ "ฟ้องร้อง"
- ห้ามพูดยอดเงินก่อนได้รับคำยืนยันว่าลูกค้าสะดวก
ต้อง:
- ถามว่า "สะดวกคุยไหมคะ" และรอคำตอบ เหตุผล: ระบุบทบาท เป้าหมาย และข้อจำกัดไว้ชัดเจน ทำให้ Agent พูดได้อย่างลื่นไหล สุภาพ และไม่ละเมิดข้อกำหนด
การออกจาก Conversation Node
หลังจาก Agent ฟังคำตอบของลูกค้าแล้ว จะต้องเลือก ทางออก ไปยัง Node ถัดไป — Conversation Node ใช้ Transition แบบเงื่อนไข (Condition) เท่านั้น โดยเขียนเงื่อนไขด้วยภาษาทั่วไป เช่น
หากลูกค้าตอบว่าสะดวกสนทนาให้ไปยัง Node "เสนอราคา"หากลูกค้าตอบว่าไม่สะดวกหรือไม่ว่างให้ไปยัง Node "ขอนัดหมายใหม่"หากลูกค้าไม่พอใจหรือขอสนทนากับเจ้าหน้าที่ให้ไปยัง Transfer Node
แม้แต่ Node ที่ต้องการให้ไปต่อ "ทันที" โดยไม่ขึ้นกับคำตอบ (เช่น Node ทักทายที่จบด้วยการแจ้งข้อมูลอย่างเดียว) ก็ยังใช้ Transition แบบเงื่อนไขเช่นกัน เพียงแต่เขียนเงื่อนไขให้ครอบคลุมกว้างพอ เช่น เมื่อ Agent พูดจบประโยคทักทายแล้ว
ดูวิธีเขียนเงื่อนไขที่ดีโดยละเอียดได้ในหัวข้อ Transition
ข้อผิดพลาดที่เจอบ่อย
❌ Prompt สั้นเกินไป
ตัวอย่าง: ถามชื่อ
ปัญหา: Agent ไม่ทราบว่าควรถามในลักษณะใด จึงพูดสั้น ๆ อย่างไม่เป็นธรรมชาติ
วิธีแก้: เพิ่มบทบาท บริบท และวิธีถาม เช่น "สอบถามชื่อ-นามสกุลของลูกค้าอย่างสุภาพ พร้อมแจ้งเหตุผลว่าใช้เพื่อยืนยันตัวตน"
❌ Prompt รวมหลายเรื่องไว้ใน Node เดียว
ตัวอย่าง: "ทักทาย ถามชื่อ ถามเหตุผล แจ้งราคา แล้วถามว่าจะชำระหรือไม่"
ปัญหา: Agent อาจข้ามขั้นตอน หรือพูดรวบรัดเร็วเกินไปจนลูกค้าตามไม่ทัน
วิธีแก้: ยึดหลัก 1 Node ต่อ 1 วัตถุประสงค์ โดยแยกออกเป็น 5 Node ที่เชื่อมต่อกัน
❌ ลืมกำหนด Transition
ปัญหา: เมื่อ Agent พูดจบแล้วไม่ทราบว่าต้องไปต่อที่ใด จึงวางสายทันทีหรือพูดวนซ้ำ
วิธีแก้: ทุก Conversation Node ต้องมี ทางออกอย่างน้อยหนึ่งทาง โดยลากเส้นเชื่อมไปยัง Node ถัดไป หรือไปยัง End Node
❌ ใช้ตัวแปรที่ไม่มีอยู่จริง
ตัวอย่าง: ใน Prompt มี {{customer_name}} แต่ไม่ได้สร้างตัวแปรนี้ไว้ในรายการด้านซ้าย
ปัญหา: Agent จะอ่านชื่อตัวแปรออกมาเป็นตัวอักษรตรง ๆ แทนที่จะแทนค่าด้วยข้อมูลจริง
วิธีแก้: ดูหัวข้อ Input Variable เพื่อสร้างตัวแปรให้เรียบร้อยก่อนนำไปใช้