1. ภาพรวม
อัปเดตล่าสุด 07-08-2023
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะได้สร้าง ติดตั้งใช้งาน และกำหนดค่าตัวแทนเสมือนอย่างง่ายใน Dialogflow CX เพื่อช่วยนักดำน้ำลึกที่เดินทางด้วยการจองเป็นกลุ่มและเหมาลำส่วนตัว ตัวแทนเสมือนจะใช้ Generative AI และโมเดลภาษาขนาดใหญ่ (LLM) แบบ Generative ล่าสุดของ Google เพื่อสร้างคำตอบของตัวแทนเสมือน
สิ่งที่คุณจะได้เรียนรู้
- วิธีเปิดใช้ API ที่เกี่ยวข้อง
- วิธีที่ Dialogflow กรอกค่าพารามิเตอร์ของแบบฟอร์มหน้าเว็บล่วงหน้าจากพารามิเตอร์ Intent โดยอัตโนมัติ
- วิธีกำหนดค่าเครื่องจัดการเหตุการณ์ใน Dialogflow
- วิธีเปิดใช้ข้อมูลสำรอง Generative ในตัวแฮนเดิลเหตุการณ์ที่ไม่ตรงกันซึ่งใช้ในขั้นตอนและระหว่างการเติมพารามิเตอร์
- วิธีกำหนดค่าพรอมต์ข้อความของคุณเองเพื่อรับมือกับสถานการณ์แบบพื้นฐานและการสนทนาเฉพาะของตัวแทน
- วิธีเขียนคำอธิบาย Intent และคำอธิบายพารามิเตอร์ที่ดีเพื่อสร้างตัวแฮนเดิลซ้ำสำหรับพารามิเตอร์ที่จำเป็น (นอกเหนือจากการแสดงซ้ำที่กำหนดโดยผู้ใช้)
- วิธีทดสอบตัวแทนและจำลองคำถามของลูกค้าที่ทริกเกอร์โฆษณาสำรอง Generative
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud
- เบราว์เซอร์ เช่น Chrome
2. การตั้งค่า
คุณต้องเปิดใช้ Dialogflow API ก่อนจึงจะเริ่มใช้ฟีเจอร์สำรอง Generative ใน Dialogflow CX ได้
เปิดใช้ Dialogflow API โดยใช้ Cloud Console
- เปิดคอนโซล Google Cloud ในเบราว์เซอร์
- ในคอนโซล Google Cloud ให้ไปที่ไลบรารี API เพื่อเรียกดู API และบริการที่เปิดใช้ได้
- ใช้แถบค้นหาที่ด้านบนของหน้าไลบรารี API เพื่อค้นหา
Dialogflow API
แล้วคลิกบริการผลลัพธ์ - คลิกปุ่มเปิดใช้เพื่อเปิดใช้ Dialogflow API ในโปรเจ็กต์ Google Cloud
การใช้ gcloud CLI (ทางเลือก)
หรือเปิดใช้ API ได้โดยใช้คำสั่ง gcloud ต่อไปนี้
gcloud services enable dialogflow.googleapis.com
หากเปิดใช้ API เรียบร้อยแล้ว คุณควรเห็นข้อความที่คล้ายกับข้อความต่อไปนี้
Operation "operations/..." finished successfully.
รับโค้ด
โดยจะไม่มีการสร้าง Agent เสมือนใหม่ตั้งแต่ต้น แต่จะมีตัวแทนที่คุณต้องกู้คืนจาก Dialogflow CX Console และดำเนินการปรับปรุง
วิธีดาวน์โหลดซอร์สโค้ด
- เปิดแท็บเบราว์เซอร์ใหม่ แล้วไปที่ที่เก็บ Agent แล้วโคลนที่เก็บจากบรรทัดคำสั่ง
- ส่งออก Agent เริ่มต้นเป็นแพ็กเกจ JSON แล้ว แตกไฟล์ ตรวจสอบการตั้งค่า Agent ดูคำจำกัดความของโฟลว์
Liveaboards.json
และสุดท้ายเรียกดูหน้าโฟลว์ Intent และเอนทิตี
3. สร้างตัวแทนใหม่
เปิดคอนโซล Dialogflow
คุณจะใช้คอนโซล Dialogflow CX ร่วมกับโปรเจ็กต์ Google Cloud เพื่อทำขั้นตอนที่เหลือใน Codelab นี้
- ในเบราว์เซอร์ ให้ไปที่คอนโซล Dialogflow CX
- เลือกโปรเจ็กต์ Google Cloud ที่ต้องการใช้ หรือสร้างโปรเจ็กต์ใหม่ที่จะใช้
- คุณควรเห็นรายชื่อ Agent ในคอนโซล Dialogflow CX
หากใช้ Dialogflow CX เป็นครั้งแรก โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบ CX ของ Dialogflow เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าโปรเจ็กต์และการตั้งค่าตามความต้องการของคุณ
สร้าง Agent ของ Dialogflow CX ใหม่
- หากต้องการกู้คืน Agent ที่ดาวน์โหลดจากที่เก็บ GitHub คุณต้องสร้าง Agent ใหม่ จากคอนโซล Dialogflow CX ให้คลิกสร้างตัวแทนใหม่ที่มุมขวาบนของหน้า
- เลือกตัวเลือกสร้างตัวแทนของคุณเอง
- กรอกข้อมูลในแบบฟอร์มด้วยการตั้งค่าตัวแทนด้านล่าง แล้วคลิกสร้างเพื่อสร้างตัวแทน
- ตามชื่อที่แสดง ให้เลือก:
Divebooker
- เลือกสถานที่:
us-central1
- เลือกเขตเวลาที่ต้องการ
- เลือก
en - English
เป็นภาษาเริ่มต้น
- Dialogflow จะเปิด Agent ให้คุณโดยอัตโนมัติ ยังไม่เสร็จ
กู้คืน Agent Divebooker
- กลับไปที่หน้ารายชื่อตัวแทน แล้วระบุตัวแทนที่คุณเพิ่งสร้าง คลิกตัวเลือก
แล้วคลิกปุ่มกู้คืน
- เลือกตัวเลือกอัปโหลด จากนั้นวางหรือเลือกไฟล์ ZIP ที่คุณดาวน์โหลดก่อนหน้านี้จากที่เก็บ GitHub
- คลิกปุ่มกู้คืนเพื่อนำเข้า Agent ที่เราระบุไว้
เยี่ยมมาก! คุณสร้างตัวแทนเสมือนสำหรับจองดำน้ำเสร็จแล้วที่พร้อมจะช่วยเหลือลูกค้า ในส่วนถัดไป คุณจะได้ทดสอบและดูว่าตอบคำถามของผู้ใช้และช่วยเหลือเกี่ยวกับคำขอจองได้ดีเพียงใด
4. ทดสอบตัวแทน
Dialogflow มีเครื่องจำลองในตัวเพื่อแชทกับตัวแทนและตรวจหาข้อบกพร่อง ในแต่ละเทิร์น คุณสามารถยืนยันค่าที่ถูกต้องสำหรับ Intent ที่ทริกเกอร์ การตอบสนองของตัวแทน หน้าที่ใช้งานอยู่ และพารามิเตอร์เซสชัน
เราจะทดสอบบางสถานการณ์และในแต่ละสถานการณ์ เราจะดูเหตุผลที่ตัวแทนตอบ มาเริ่มที่คำถามแรกกันก่อน
ความตั้งใจที่ยังไม่ได้แก้ไข
- ในคอนโซล Dialogflow และจากภายในตัวแทน ให้คลิกทดสอบ Agent เพื่อเปิดเครื่องจำลอง
- พิมพ์คำทักทายไปยังตัวแทนของคุณ เช่น
Hello
แล้วถามwhat is a liveaboard?
คำถามไม่ตรงกับ Intent ใดๆ โดยเป็นพรอมต์ทั่วไป เช่น "ขออภัย ฉันไม่แน่ใจว่าจะช่วยอย่างไร" จะปรากฏขึ้น คุณตรวจสอบได้ว่ามีการเรียกเหตุการณ์ในตัว sys.no-match-default หรือไม่ โดยตรวจสอบการตอบกลับเดิมในเครื่องจำลอง
เลื่อนลงจนเกือบถึงส่วนท้ายของการตอบกลับ JSON โปรดสังเกตว่าเมื่อค้นหา Intent ที่ตรงกัน Dialogflow จะหาค่านี้เป็น NO_MATCH และแสดงเหตุการณ์ที่ไม่ตรงกัน
- เปลี่ยนไปที่แท็บสร้าง แล้วเปิดหน้าเริ่มต้นของขั้นตอน Liveaboards
โดยค่าเริ่มต้น ทุกโฟลว์จะมีเครื่องจัดการเหตุการณ์สําหรับเหตุการณ์ในตัวที่ไม่มีการจับคู่และไม่มีอินพุต ระบบจะสร้างเครื่องจัดการเหตุการณ์เหล่านี้โดยอัตโนมัติเมื่อคุณสร้างโฟลว์ และจะลบไม่ได้
- คลิกที่ตัวแฮนเดิลเหตุการณ์ sys.no-match-default แล้วเลื่อนลงไปที่ส่วน Agent response Dialogflow จะให้รายการคำตอบแบบอื่นๆ แต่คุณก็กำหนดประเภทข้อความตอบกลับได้ด้วย เพื่อให้บริการแก่ผู้ใช้ปลายทางนอกเหนือจากการตอบกลับด้วยข้อความ
มาเดินบนเส้นทางแห่งความสุขกัน!
เส้นทางแห่งความสุข
ในกรณีที่ 2 นี้ ให้ลองสมมติว่าเป็นนักประดาน้ำที่ต้องการจองทริปล่องเรือดำน้ำสำหรับกลุ่มคน 12 คนไปยังหมู่เกาะกาลาปาโกสในปีหน้าในเดือนกรกฎาคม
- ในแผงเครื่องจำลอง ให้คลิกไอคอนรีเซ็ตเพื่อเริ่มการสนทนาใหม่กับตัวแทน
- แจ้งตัวแทนว่าคุณต้องการจองบริการเช่าเหมาลำไปยังหมู่เกาะกาลาปาโกส และระบุรายละเอียดการเดินทางของคุณ คุณไม่จำเป็นต้องใช้พรอมต์เหมือนกับด้านล่าง ทดลองดูสิ
- เปิดหน้าเริ่มต้นแล้วคลิกเส้นทาง head.send.group.request เลื่อนลงไปที่ส่วนการเปลี่ยน ซึ่งจะบอก Dialogflow ว่าหน้าจะเปลี่ยนเมื่อตรงกับความตั้งใจนี้
- ปิดคำจำกัดความของเส้นทางและขยายหน้ารวบรวมข้อมูลเพิ่มเติม สังเกต Fulfillment รายการและรายการพารามิเตอร์
สำหรับแต่ละหน้าใน Dialogflow CX คุณสามารถกำหนดแบบฟอร์ม ซึ่งเป็นรายการพารามิเตอร์ที่ควรรวบรวมจากผู้ใช้ปลายทางของหน้าเว็บ โปรดทราบว่าตัวแทนไม่ได้ถามถึงจุดหมายการเดินทาง เนื่องจากเราส่งต่อข้อมูลนี้เป็นส่วนหนึ่งของอินพุตเริ่มต้น และปลายทางเป็นพารามิเตอร์ Intent ด้วย เมื่อหน้าเว็บเริ่มทำงานในตอนแรกและในช่วงเวลาที่มีการใช้งาน ระบบจะตั้งค่าพารามิเตอร์แบบฟอร์มใดๆ ที่มีชื่อเดียวกันกับพารามิเตอร์ Intent เป็นค่าพารามิเตอร์เซสชันโดยอัตโนมัติและระบบจะข้ามข้อความแจ้งที่เกี่ยวข้อง
- เปลี่ยนไปที่แท็บจัดการ แล้วคลิกจุดประสงค์ head.send group request ในส่วน Intent ดูวลีการฝึกอบรมที่มีไว้สำหรับ Intent นี้ และส่วนที่มีคำอธิบายประกอบของวลีการฝึก
- พิจารณาวลีการฝึกอบรม "ฉันต้องจัดการทริปไปยังคอสตาริกาสำหรับนักดำน้ำ 15 คน" "คอสตาริกา" มีคำอธิบายประกอบด้วย destination และ "15" กับจำนวนแขก เมื่อคุณใส่คำอธิบายประกอบส่วนต่างๆ ของวลีการฝึก Dialogflow จะรู้ว่าส่วนเหล่านี้เป็นเพียงตัวอย่างของค่าจริงที่ผู้ใช้ปลายทางให้ไว้ขณะรันไทม์ นี่คือเหตุผลสำหรับการป้อนข้อมูลเบื้องต้นว่า "คุณให้บริการเช่าเหมาลำไปยังหมู่เกาะกาลาปาโกสหรือไม่" Dialogflow แยกพารามิเตอร์ปลายทางจาก "หมู่เกาะกาลาปาโกส"
ต่อไปเราจะดูว่าจะเกิดอะไรขึ้นหากเราไม่ได้ป้อนข้อมูลที่ถูกต้องให้แก่ตัวแทนเมื่อมีการขอให้กรอกพารามิเตอร์ของฟอร์ม
ข้อมูลไม่ถูกต้อง
- ในแผงเครื่องจำลอง ให้คลิกไอคอนรีเซ็ตเพื่อเริ่มการสนทนาใหม่กับตัวแทน
- แสดงความตั้งใจในการจองแบบกลุ่ม โดยคราวนี้อย่าบอกตัวแทนว่าคุณต้องการไปที่ไหน และเมื่อใดระบบขอให้ตอบกลับปลายทางด้วยค่าแบบสุ่มที่ไม่ใช่คอสตาริกา กาลาปาโกส หรือเม็กซิโก
- ในแท็บจัดการ ให้คลิกประเภทเอนทิตีในส่วนทรัพยากร คุณจะเห็นแท็บ 2 แท็บ ได้แก่ ในแท็บ "ระบบ" คุณจะเห็นเอนทิตีระบบที่ Agent ของคุณใช้อยู่ แท็บกำหนดเองจะแสดงรายการเอนทิตีที่กำหนดเองซึ่งสร้างเพื่อให้ข้อมูลที่ตรงกับ Agent นี้โดยเฉพาะ
- คลิกเอนทิตีปลายทางเพื่อดูค่าของเอนทิตีที่ตรงกัน "ยุโรป" ไม่ใช่หนึ่งในรายการ และไม่ใช่คำพ้องความหมาย
- ในแผนภาพกระบวนการ ให้ขยายหน้าเก็บข้อมูลเพิ่มเติมที่มีพารามิเตอร์ของฟอร์ม คลิกพารามิเตอร์ปลายทาง
- ในแผงพารามิเตอร์ ให้เลื่อนลงไปที่ส่วนเครื่องจัดการเหตุการณ์ Reprompt แล้วคลิกเครื่องจัดการเหตุการณ์เริ่มต้นที่ไม่มีการจับคู่
เครื่องจัดการเหตุการณ์ระดับพารามิเตอร์นี้มีไว้เพื่อจัดการอินพุตของผู้ใช้ปลายทางที่ไม่ถูกต้องในระหว่างการกรอกแบบฟอร์มโดยเฉพาะ เนื่องจาก "ยุโรป'' เป็นอินพุตที่ไม่คาดคิด มีการเรียกใช้เหตุการณ์ sys.no-match-default และมีการเรียกตัวแฮนเดิลซ้ำที่เกี่ยวข้องที่กำหนดไว้สำหรับเหตุการณ์นี้ ส่วน Agent พูดว่า จะแสดงทางเลือกอื่นสำหรับข้อความแจ้ง 2 ข้อความ
ทำได้ดีมาก กรอบการทดสอบเหล่านี้แสดงถึงสถานการณ์ทั่วไปที่ตัวแทนควรจัดการอย่างเหมาะสม ผู้ใช้มักถามคำถามที่บ็อตไม่สามารถตอบหรือส่งคำขอที่บ็อตไม่สามารถทำตามได้ การออกแบบให้มีสัญลักษณ์ยาวๆ นั้นซับซ้อนมาก ซึ่งหมายความว่าผู้ใช้ส่วนใหญ่จะเดินตามเส้นทางที่มีสภาพดี ลองคิดถึงทุกข้อผิดพลาดในการสนทนาและเส้นทางที่ไม่คาดคิดหรือไม่รองรับทั้งหมดที่ผู้ใช้อาจใช้
ความก้าวหน้าในการรู้จำคำพูดอัตโนมัติ (ASR) หมายความว่าเรามักจะรู้แน่ชัดว่าผู้ใช้พูดอะไร อย่างไรก็ตาม การจะหาความหมายของผู้ใช้ได้ก็ยังคงเป็นเรื่องที่ท้าทาย คำที่ใช้พูดมักจะไม่เข้าใจเมื่ออยู่แยกกัน จะเข้าใจได้ในบริบทเท่านั้น ในส่วนถัดไปของ Codelab นี้ เราจะมาดูกันว่าโมเดลภาษาขนาดใหญ่ (LLM) ที่สร้างขึ้นล่าสุดของ Google จะช่วยให้บทสนทนาดำเนินไปอย่างต่อเนื่องและต่อยอดการสนทนาได้อย่างไร
5. เปิดใช้ Generativeโฆษณาสำรอง
ฟีเจอร์สำรองของ Generative คืออะไร
ฟีเจอร์สำรองของ Generative คือฟีเจอร์ Dialogflow CX ที่ใช้โมเดลภาษาขนาดใหญ่ (LLM) ของ Google เพื่อสร้างการตอบกลับของตัวแทนเสมือน
มีประโยชน์อย่างไร
ระหว่าง Use Case หลักๆ จะมีคำขอที่พบได้บ่อยสำหรับผู้ใช้จำนวนหนึ่ง เช่น การพูดสิ่งที่ตัวแทนพูดซ้ำในกรณีที่ผู้ใช้ไม่เข้าใจ การถือสายรอเมื่อผู้ใช้ขอและสรุปการสนทนา ในการทดสอบครั้งแรก ตัวแทนไม่สามารถตอบคำถามที่ว่า "Liveaboard คืออะไร" เพราะเราไม่ได้สร้างความตั้งใจที่จะใช้แพลตฟอร์มนี้ และออกแบบขั้นตอนให้สามารถรับมือกับคำถามทั่วไปที่เกี่ยวข้องกับการดำน้ำลึกและลิฟต์บอร์ด
แม้จะใช้ Intent ที่มีประสิทธิภาพ แต่ก็ยังมีโอกาสเกิดข้อผิดพลาดได้ ผู้ใช้อาจพูดนอกสคริปต์โดยไม่ส่งเสียง (ข้อผิดพลาด "ไม่มีอินพุต") หรือพูดบางอย่างที่ไม่คาดคิด (ข้อผิดพลาด "ไม่มีการจับคู่") แม้ว่าการป้องกันไม่ให้เกิดข้อผิดพลาดนั้นดีกว่าการจัดการข้อผิดพลาดหลังจากเกิดขึ้นแล้ว แต่ข้อผิดพลาดก็ไม่สามารถหลีกเลี่ยงได้ พรอมต์ทั่วไป เช่น "ขออภัย ฉันไม่แน่ใจว่าจะช่วยอย่างไร" หรือโซลูชันที่ทำงานได้น้อยมากที่คล้ายคลึงกันมักจะไม่ดีพอ ข้อความแจ้งข้อผิดพลาดควรได้รับแรงบันดาลใจจากหลักการที่ทำงานร่วมกัน ซึ่งการสื่อสารที่มีประสิทธิภาพนั้นอาศัยสมมติฐานที่ว่าผู้เข้าร่วมสนทนามีความร่วมมือน้อยกว่าปกติ
ในส่วนถัดไป เราจะอธิบายวิธีกำหนดค่าฟีเจอร์สำรองแบบ Generative เพื่อเพิ่มการครอบคลุมของ Intent และลดความซับซ้อนในการจัดการข้อผิดพลาดเพื่อให้ลูกค้าได้รับประสบการณ์ที่ดีขึ้น
เปิดใช้ข้อมูลสำรองที่สร้างขึ้นสำหรับกิจกรรมที่ไม่ตรงกันของทั้งขั้นตอน
คุณเปิดใช้ Generativeสำรองได้ในเครื่องจัดการเหตุการณ์ที่ไม่ตรงกันซึ่งใช้ในโฟลว์ หน้าเว็บ หรือระหว่างการเติมพารามิเตอร์ เมื่อเปิดใช้ทางเลือกสำรองสำหรับเหตุการณ์ที่ไม่ตรงกัน เมื่อใดก็ตามที่มีการทริกเกอร์เหตุการณ์ดังกล่าว Dialogflow จะพยายามสร้างคำตอบที่สร้างขึ้นซึ่งจะพูดตอบผู้ใช้ หากสร้างคำตอบไม่สำเร็จ ระบบจะออกคำตอบของตัวแทนที่กำหนดให้ตามปกติแทน
คุณเปิดใช้ข้อมูลสำรอง Generative ได้ใน Agent ของคุณบนเครื่องจัดการเหตุการณ์ที่ไม่ตรงกัน ซึ่งจะใช้ในโฟลว์ หน้า หรือ Fulfillment พารามิเตอร์ได้
เราจะเริ่มเปิดใช้ข้อมูลสำรองที่สร้างขึ้นสำหรับเหตุการณ์ Liveaboards ทั้งหมดของขั้นตอนที่ไม่มีการจับคู่ที่ตรงกัน
- ขยายหน้าเริ่มต้นของโฟลว์
- คลิก sys.no-match-default ในเครื่องจัดการเหตุการณ์
- เลือกเปิดใช้ Generative โฆษณาสำรอง ในส่วนคำตอบของ Agent แล้วคลิกบันทึก
เปิดใช้ Generativeโฆษณาสำรอง ในเหตุการณ์ที่ไม่ตรงกันที่เจาะจง
ตอนนี้เราต้องการเปิดใช้ Generative สำรองเพื่อจัดการข้อมูลที่ไม่ถูกต้องเมื่อตัวแทนขอจำนวนผู้โดยสาร โดยทำดังนี้
- เปิดหน้าเก็บข้อมูลเพิ่มเติมที่มีพารามิเตอร์ของฟอร์ม คลิกพารามิเตอร์ number-of-guests
- ไปที่เครื่องจัดการเหตุการณ์ไม่มีการจับคู่เป้าหมาย (เลื่อนลงไปที่ส่วนเครื่องจัดการเหตุการณ์ซ้ำ แล้วคลิกเครื่องจัดการเหตุการณ์เริ่มต้นที่ไม่มีการจับคู่)
- เลือกเปิดใช้ Generative โฆษณาสำรอง ในส่วนคำตอบของ Agent
- สุดท้ายคลิกบันทึก
- จากนั้นทำซ้ำขั้นตอนทั้งหมดเพื่อเปิดใช้ Generativeโฆษณาสำรองสำหรับปลายทางและอีเมล
ทำได้ดีมาก คุณได้เปิดใช้โฆษณาสำรอง Generative เพื่อจัดการ Intent ที่ไม่คาดคิดและค่าพารามิเตอร์ที่ไม่ถูกต้อง ถัดไป เราจะมาดูวิธีกำหนดค่าฟีเจอร์สำรองแบบ Generative ด้วยข้อความแจ้งที่บอกวิธีตอบสนองของ LLM
6. กําหนดค่า Generativeโฆษณาสำรอง
ฟีเจอร์สำรองแบบ Generative จะส่งคำขอไปยังโมเดลภาษาขนาดใหญ่เพื่อสร้างคำตอบที่สร้างขึ้น โดยคำขอจะอยู่ในรูปแบบของข้อความแจ้งที่มีภาษาธรรมชาติและข้อมูลเกี่ยวกับสถานะปัจจุบันของตัวแทนและการสนทนา คุณกําหนดค่าฟีเจอร์นี้ได้หลายวิธีดังนี้
- เลือกพรอมต์เฉพาะ (กำหนดไว้แล้ว) เพื่อใช้ในการสร้างคำตอบ
- กำหนดพรอมต์ที่กำหนดเอง
เลือกพรอมต์ที่กำหนดไว้แล้ว
- ในคอนโซล Dialogflow CX ให้คลิก Agent Settings
- ไปที่แท็บ ML แล้วเลือกแท็บย่อย Generative AI
ฟีเจอร์นี้เปิดออกมาในกล่องโดยมีเทมเพลตพรอมต์ 2 รายการ ได้แก่ เทมเพลตเริ่มต้น (ซึ่งมองไม่เห็น) และเทมเพลตตัวอย่างที่ช่วยแนะนำการเขียนพรอมต์ของคุณเอง
- เลือกเทมเพลตตัวอย่าง แล้วคลิกปุ่มแก้ไขทางด้านขวาของเมนูแบบเลื่อนลงเพื่อตรวจสอบ
เมื่อใช้พรอมต์ที่กำหนดไว้ล่วงหน้า ตัวแทนเสมือนจะจัดการกับสถานการณ์การสนทนาพื้นฐานได้ เช่น
- ทักทายและบอกลาผู้ใช้
- ทวนสิ่งที่ตัวแทนพูดเผื่อในกรณีที่ผู้ใช้ไม่เข้าใจ
- ถือสายรอเมื่อผู้ใช้ขอ
- สรุปการสนทนา
มาลองกำหนดข้อความที่ปรากฏเฉพาะสำหรับตัวแทน Divebooker กัน
7. กำหนดพรอมต์ของคุณเอง
- คัดลอกพรอมต์ด้านล่างแล้ววางในพื้นที่พรอมต์ข้อความ
You are a friendly agent that likes helping traveling divers. You are under development and you can only help $flow-description At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can $route-descriptions The conversation between the human and you so far was: ${conversation USER:"Human:" AGENT:"AI"} Then the human asked: $last-user-utterance You say:
- เลือกบันทึกเป็นเทมเพลตใหม่เพื่อจัดเก็บข้อความแจ้งใหม่เป็นเทมเพลตใหม่ (เลือกชื่อเทมเพลตใหม่) และบันทึกที่มุมขวาล่างของแผง
- หากต้องการให้ข้อความแจ้งที่สร้างใหม่แสดงข้อความแจ้งที่ใช้งานอยู่ คุณจะต้องบันทึกการตั้งค่าด้วย
เมื่อเขียนข้อความพรอมต์ของคุณเอง ให้ชัดเจน กระชับ และเป็นนโยบาย วิธีสร้างข้อความแจ้งไปยัง LLM อาจส่งผลต่อคุณภาพคำตอบของ LLM ได้อย่างมาก LLM ได้รับการฝึกฝนให้ทำตามวิธีการ ดังนั้น ยิ่งข้อความแจ้งมีลักษณะเป็นคำสั่งที่แม่นยำมากเท่าไร คุณก็จะได้รับผลลัพธ์ที่ดีขึ้นเท่านั้น สร้างพรอมต์โดยอิงตามผลลัพธ์ที่ได้รับ จากนั้นทำซ้ำเพื่อปรับปรุงให้ดีขึ้น
ทําตามแนวทางปฏิบัติแนะนําต่อไปนี้เพื่อสร้างพรอมต์ที่มีประสิทธิภาพ
- ระบุคำอธิบายงานที่คุณต้องการให้ LLM ทำอย่างชัดเจนและกระชับ ไม่มากขึ้นหรือน้อยลง เขียนให้สั้นกระชับและชัดเจน
- นอกจากนี้ พรอมต์ควรเป็นข้อความที่เฉพาะเจาะจงและมีการกำหนดไว้อย่างชัดเจน หลีกเลี่ยงการใช้ภาษาที่กำกวมหรือกำกวม
- แบ่งงานที่ซับซ้อนออกเป็นงานย่อยๆ และจัดการได้มากขึ้น การแบ่งงานออกเป็นขั้นตอนย่อยๆ จะช่วยให้คุณสามารถช่วยให้โมเดลมุ่งความสนใจไปที่ใดสิ่งหนึ่งทีละรายการ และลดโอกาสในการเกิดข้อผิดพลาดหรือความสับสน
- หากต้องการปรับปรุงคุณภาพคำตอบ ให้เพิ่มตัวอย่างในพรอมต์ LLM เรียนรู้ในบริบทจากตัวอย่างเกี่ยวกับวิธีการตอบสนอง
เมื่อสร้างพรอมต์ นอกเหนือจากคำอธิบายที่เป็นภาษาธรรมชาติเกี่ยวกับประเภทบริบทที่ควรสร้างแล้ว ตัวยึดตำแหน่งต่อไปนี้ยังใช้ได้ด้วย
$conversation
การสนทนาระหว่างตัวแทนและผู้ใช้ ไม่รวมคำพูดของผู้ใช้คนสุดท้าย คุณสามารถปรับคำนำหน้าการเลี้ยวได้ (เช่น "มนุษย์", "AI" หรือ "คุณ", "ตัวแทน") ในข้อความที่ปรากฏ$last-user-utterance
คำพูดของผู้ใช้คนสุดท้าย$flow-description
คำอธิบายโฟลว์ของขั้นตอนที่ใช้งานอยู่$route-descriptions
คำอธิบาย Intent ของ Intent ที่ใช้งานอยู่
ตอนนี้เรามีพรอมต์ข้อความเริ่มต้นแล้ว งานต่อไปคือการทำให้ข้อความเคลื่อนไหวและ Intent มีคำอธิบายที่ดี
8. เพิ่มคำอธิบายขั้นตอนและความตั้งใจ
เพิ่มคำอธิบายโฟลว์
- หากต้องการเพิ่มคำอธิบายลงในโฟลว์ของ Liveaboard ให้เข้าถึงการตั้งค่าโฟลว์โดยวางเมาส์เหนือโฟลว์ในส่วนโฟลว์
- คลิกปุ่มตัวเลือก
- เลือกการตั้งค่าโฟลว์ แล้วเพิ่มคำอธิบายต่อไปนี้ (หรือคำอธิบายที่คล้ายกัน)
search, find and book liveaboards
- คลิกบันทึก
เพิ่มคําอธิบาย Intent
- มาเพิ่มคำอธิบายที่ดีใน Intent head.send.group.request กัน เปลี่ยนไปที่แท็บจัดการ เลือก Intent ใต้ส่วนทรัพยากร แล้วเลือก Intent head.send.group.request
- เพิ่มคำอธิบายต่อไปนี้:
assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands
โปรดทราบว่าคำอธิบายมีข้อมูลสำคัญ เช่น จำนวนผู้โดยสารขั้นต่ำและจำนวนผู้โดยสารสูงสุดบนเรือ ข้อควรจำ
- คลิกบันทึก
คุณได้ดำเนินการเสร็จสิ้นแล้ว คุณได้เปิดใช้ข้อมูลสำรอง Generative ในเครื่องจัดการเหตุการณ์ที่ไม่ตรงกันสำหรับทั้ง Fulfillment ของโฟลว์และพารามิเตอร์ คุณได้กำหนดข้อความพรอมต์ของคุณเองที่ฟีเจอร์สำรอง Generative AI จะส่งไปยังโมเดลภาษาขนาดใหญ่เพื่อสร้างคำตอบแบบ Generative
ในส่วนถัดไป คุณจะได้ทดสอบตัวแทนอีกครั้งเพื่อดูว่าตัวแทนจะตอบคำถามที่ท้าทายแบบเดิมๆ จากก่อนหน้านี้ได้อย่างไร
9. ทดสอบตัวแทนอีกครั้ง
ตอนนี้คุณได้กําหนดค่าและเปิดใช้วิดีโอสำรองแบบ Generative สำรองใน Agent เสมือนแล้ว คุณสามารถถามคำถามที่ท้าทายคล้ายๆ กันและดูว่าจะจัดการกับคำตอบอย่างไร
คลิกทดสอบตัวแทนเพื่อเปิดเครื่องจำลองอีกครั้ง
ถามตัวแทนอีกครั้งเกี่ยวกับไลฟ์บอร์ดและการดำน้ำไลฟ์บอร์ด จากนี้ไป ให้สังเกตด้วยว่าบทสนทนาทั้งหมดมีข้อความที่กำหนดโดยผู้ใช้อย่างไร รวมถึงคำตอบที่สร้างขึ้นซึ่งไฮไลต์ไว้ในช่องสีแดง
คุณได้รับคำตอบที่ให้ข้อมูลที่ดีแทนที่จะเป็นการตอบซ้ำทั่วไปไหม เยี่ยม! หลังจากระบุคำอธิบายที่กระชับและชัดเจนของงานที่คุณต้องการให้ตัวแทนทำแล้ว (ในข้อความที่ปรากฏและในคำอธิบายขั้นตอน) ตอนนี้บ็อตของคุณฉลาดขึ้นมากเมื่อตอบคำถามโดยละเอียดโดยไม่ต้องสร้างความตั้งใจที่เจาะจง ลูกค้าจะพอใจที่ตัวแทนสามารถให้ข้อมูลกับตัวแทนตอบกลับได้มากขึ้น แทนที่จะตอบกลับไม่ได้
อย่าอายที่จะลองถามตัวแทนดู ลองสอบถามว่าโปรแกรมช่วยค้นหาหลักสูตรดำน้ำลึกได้หรือไม่เนื่องจากคุณยังไม่ได้เป็นนักประดาที่ได้รับการรับรอง
ใช่แล้ว ตอนนี้เรายังไม่ได้ออกแบบให้ตัวแทนให้ความช่วยเหลือหลักสูตรดำน้ำลึก ตัวแทนรู้ได้อย่างไร เราได้ระบุสิ่งที่ตัวแทนให้ความช่วยเหลือได้และช่วยเหลือไม่ได้ในพรอมต์ข้อความไว้ชัดเจนแล้ว "ตอนนี้คุณไม่สามารถช่วยเหลือลูกค้าเกี่ยวกับการดำน้ำบนบกและคอร์สเรียนต่างๆ ได้ คุณจะแนะนำร้านอุปกรณ์ดำน้ำและรีสอร์ตดำน้ำในพื้นที่ไม่ได้"
ตอนนี้ให้ทดสอบสถานการณ์ที่มีความสุขอีกครั้งและเสริมสร้างการสนทนา มาดูกันว่าประสบการณ์การใช้งานเปลี่ยนแปลงไปอย่างไรบ้าง
เมื่อ Dialogflow ตรงกับความตั้งใจหรือพยายามรวบรวมพารามิเตอร์ตามการออกแบบโฟลว์ ระบบจะแสดงการดำเนินการตามที่กำหนดไว้ตอนออกแบบ เมื่อผู้ใช้สคริปต์ขอสรุปรายละเอียดการเดินทางหรือเสนอให้ระบุหมายเลขโทรศัพท์ ฟีเจอร์สำรองที่สร้างขึ้นจะเข้ามาทำงาน
เยี่ยมไปเลย คุณได้ทดสอบสถานการณ์ที่น่าพึงพอใจอีกครั้งแล้ว และเราหวังว่าคุณจะได้สนทนากับตัวแทนอย่างสนุกสนานและเป็นธรรมชาติ ไม่ใกล้ที่จะได้รับประสบการณ์เหมือนตัวแทนแบบเรียลไทม์
ขออภัย เกิดข้อผิดพลาดในการสนทนา เรามาลองทดสอบแบบอื่นกัน คราวนี้ระบบขอให้คุณระบุจำนวนผู้เข้าร่วมว่ามากกว่า 15 คน
มี 2-3 สิ่งที่คุณควรทราบที่นี่
- ทำไม 20 จึงไม่ใช่ตัวเลขที่ถูกต้อง เนื่องจากเราได้กำหนดจำนวนแขกที่อนุญาตไว้เป็นส่วนหนึ่งของคำอธิบายความตั้งใจว่า "ตัวแทนรวบรวมข้อมูล เช่น เวลาออกเดินทาง จุดหมาย จำนวนแขก***(ขั้นต่ำ 4 สูงสุด 15 คน)*** * รายละเอียดการติดต่อ*" ที่ใช้เวลาเพียง 2 นาที การตอบกลับจาก Generative ที่ LLM แสดงผลว่า "ขออภัย เราช่วยจองแบบกลุ่มที่มีแขกได้สูงสุด 15 คนเท่านั้น" เหมาะสมที่สุดกับข้อจำกัดที่เราได้กำหนดไว้เกี่ยวกับจำนวนแขก ในการบังคับใช้ข้อกำหนดนี้มากขึ้น จำนวนผู้เข้าร่วมคือเอนทิตีนิพจน์ทั่วไปที่กำหนดเองซึ่งจับคู่เฉพาะตัวเลขที่อยู่ในช่วง 4 - 15
- การพูดคุยยังคงดำเนินต่อไป เนื่องจากในท้ายที่สุดแล้ว ผู้ใช้ยังคงต้องการรับข้อเสนอสำหรับนักดำน้ำ 15 คน กรณีนี้เกิดขึ้นบ่อยครั้งในระหว่างการสนทนาแบบปกติ คนเราจึงเปลี่ยนใจบ่อยพอสมควร โปรดสังเกตวิธีที่ตัวแทนให้ความร่วมมือ และค่อยๆ พาผู้ใช้กลับไปยังเส้นทางที่ประสบความสำเร็จ
การออกแบบบทสนทนาจะต้องมีการเขียนสคริปต์ครึ่งเดียวของบทสนทนา โดยหวังว่าจะมีประสิทธิภาพเพียงพอที่ใครๆ ก็สามารถก้าวเข้ามาและสวมบทบาทอีกครึ่งของบทสนทนาได้ เมื่อออกแบบโฆษณายาวๆ นักพัฒนาซอฟต์แวร์ต้องมุ่งเน้นสิ่งที่ผู้ใช้พูดได้ในทุกขั้นตอนในกล่องโต้ตอบเพื่อกำหนดเส้นทาง เครื่องจัดการ และพารามิเตอร์ นี่คือเหตุผลที่เราได้เพิ่มฟีเจอร์สำรองแบบ Generative ลงใน Dialogflow CX เพื่อให้นักพัฒนาซอฟต์แวร์มุ่งเน้นที่หลักการออกแบบการสนทนา และลดรายละเอียดการใช้งานลง เพื่อมอบประสบการณ์การสนทนาที่มีประสิทธิภาพแก่ผู้ใช้
มาทดสอบกันอีกรอบ คราวนี้ท้าทายบ็อตอีกครั้งด้วยสถานที่ที่ไม่ได้อยู่ในรายการจุดหมายที่ใช้ได้ เช่น มัลดีฟส์ จากนั้นเราจะมาดูเบื้องหลังกันว่ามีอะไรเกิดขึ้นบ้าง
โปรดทราบว่าเนื่องจากเราได้เปิดใช้ทางเลือกสำรองแบบ Generative ในเหตุการณ์ no-match
สำหรับพารามิเตอร์ destination ด้วย ระบบจะส่งคำขอไปยังโมเดลภาษาขนาดใหญ่เพื่อสร้างคำตอบที่สร้างขึ้น ระบบจะไม่สนใจคำตอบที่กำหนดไว้ล่วงหน้า (ตามที่ตัวแทนบอก)
กล่องข้อความด้านล่างจะช่วยให้คุณเข้าใจมากขึ้นว่าตัวยึดตำแหน่งช่วยกำหนดทิศทางของคำขอที่ส่งไปยังโมเดลภาษาขนาดใหญ่ได้อย่างไร
ต่อไปนี้เป็นข้อความแบบกำหนดเองซึ่งเราได้กำหนดค่าไว้ใน Dialogflow โดยไฮไลต์ตัวยึดตำแหน่งเป็นตัวหนา
You are a friendly agent that likes helping traveling divers. You are under development and you can only help $flow-description At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can $route-descriptions The conversation between the human and you so far was: ${conversation USER:"Human:" AGENT:"AI"} Then the human asked: $last-user-utterance You say:
ในกล่องข้อความด้านล่าง เราได้ใส่อินพุตที่ได้รับจากโมเดลภาษาขนาดใหญ่และเอาต์พุตซึ่งมีคำตอบที่สร้างขึ้นซึ่งจะมีการพูดตอบผู้ใช้
llm_input: You are a friendly agent that likes helping traveling divers. You are under development and you can only help search, find and book liveaboards. At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands. The conversation between the human and you so far was: Human: Hi, my name's Alessia AI Hi Alessia, what can I help you with today? Human: Can you help me find a nice boat for myself and my family? AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly. Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico Then the human asked: The kids want to go to the Maldives llm_output: You say: I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.
ในทำนองเดียวกันกับการทดสอบที่ทำก่อนหน้านี้ คำตอบที่ส่งกลับถึงผู้ใช้จะสร้างขึ้นจากโมเดลและอาศัยข้อมูลที่เราให้ไว้เป็นส่วนหนึ่งของคำอธิบาย Intent: "ปลายทางต้องเป็นอย่างใดอย่างหนึ่งต่อไปนี้ในแปซิฟิก: คอสตาริกา เม็กซิโก หมู่เกาะกาลาปาโกส"
แก้ไขรายการวลีที่ถูกแบน
คุณกําหนดค่าฟีเจอร์สํารองที่สร้างขึ้นได้หลายวิธี ดังนี้
- เลือกพรอมต์เฉพาะ (กำหนดไว้แล้ว) เพื่อใช้ในการสร้างคำตอบ
- กำหนดพรอมต์ที่กำหนดเอง
- เปลี่ยนรายการวลีที่ถูกแบน
ที่ผ่านมาเราได้พูดถึง 2 วิธีแรก มาดูข้อที่ 3 กัน
- ในการตั้งค่า Agent ให้ไปที่แท็บ ML แล้วเลือกแท็บย่อย Generative AI
- ในส่วนวลีที่ถูกแบน ให้เพิ่มประโยคต่อไปนี้ลงในรายการ
Dangerous country
Hateful place
Medical assistance
- คลิกบันทึก
- คลิกไอคอนรีเซ็ตและทดสอบสถานการณ์ล่าสุดอีกครั้ง แทนที่จะระบุจุดดำน้ำที่สวยงามจากทั่วโลก ให้ป้อนวลีที่ไม่อนุญาต
พรอมต์และคำตอบที่สร้างขึ้นจะได้รับการตรวจสอบกับรายการวลีที่ถูกแบน วลีที่ห้ามใช้คือวลีที่ห้ามใช้ใน Generative AI หากข้อมูลที่ป้อนมีวลีต้องห้ามหรือวลีที่ถือว่าไม่ปลอดภัย การสร้างจะไม่สำเร็จและจะออกคำตอบที่กำหนดไว้ตามปกติ (ตามที่ตัวแทนบอกไว้ในการดำเนินการเดียวกัน) แทน
สุดยอด! เราได้พูดถึงสถานการณ์การสนทนาต่างๆ ที่คำตอบแบบ Generative AI ช่วยสร้างความแตกต่างได้ ทำการทดสอบต่อไปได้เลย
10. ขอแสดงความยินดี
เยี่ยมมากที่ Codelab ทำสำเร็จ ได้เวลาชิลล์แล้ว!
คุณสร้าง Agent เสมือนสำเร็จและได้เปิดใช้ Generative สำรองในเครื่องจัดการเหตุการณ์ no-match
ที่ใช้ในโฟลว์ และระหว่างการเติมพารามิเตอร์
ฟีเจอร์สำรอง Generative ที่ใช้ร่วมกับคำอธิบายโฟลว์และความตั้งใจที่ดีจะให้คำตอบที่เจาะจงและให้ความร่วมมือได้ แทนที่จะเป็นพรอมต์ทั่วไป เช่น "ขออภัย ไม่แน่ใจว่าจะช่วยได้อย่างไร" หรือ "ขออภัย คุณป้อนตัวเลือกที่ไม่ถูกต้อง" ข้อความแจ้งข้อผิดพลาดที่สร้างขึ้นโดยโมเดลภาษาขนาดใหญ่จะช่วยนำทางผู้ใช้กลับไปยังเส้นทางที่ประสบความสำเร็จได้ หรือค่อยๆ ปรับความคาดหวังของผู้ใช้เกี่ยวกับสิ่งที่เป็นได้และไม่ได้
ทดสอบสถานการณ์ในการสนทนาอื่นๆ และสำรวจฟังก์ชันการทำงานอื่นๆ ที่พร้อมใช้งานที่เกี่ยวข้องกับ Dialogflow CX และ Generative AI ได้ตามต้องการ
ล้างข้อมูล
คุณสามารถดำเนินการทำความสะอาดต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้
- ไปที่คอนโซล Dialogflow CX และลบ Agent ทั้งหมดที่คุณสร้างขึ้น
- ในคอนโซล Google Cloud ให้ไปที่หน้า API และบริการ แล้วปิดใช้ Dialogflow API
อ่านเพิ่มเติม
เรียนรู้ต่อไปเกี่ยวกับ AI แบบสนทนาและ Generative AI ด้วยคำแนะนำและแหล่งข้อมูลเหล่านี้
- เอกสารประกอบสำหรับ Dialogflow CX
- เอกสารประกอบสำหรับทางเลือกสำรองของ Generative
- Generative AI ใน Google Cloud
- ข้อมูลเบื้องต้นเกี่ยวกับ PaLM
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0