เพิ่มการครอบคลุมของ Intent และจัดการข้อผิดพลาดได้อย่างลงตัวด้วย Generativeโฆษณาสำรอง
เกี่ยวกับ Codelab นี้
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