หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
บทความนี้อธิบายคุณลักษณะและพฤติกรรมของหัวข้อที่มีทริกเกอร์การสนทนาใน standard harness เรียนรู้วิธีเข้าถึงฟีเจอร์มาตรฐานใน Access standard agent และ agent flows
บทความนี้เน้นแนวทางปฏิบัติที่ดีที่สุดในการออกแบบเพื่อหลีกเลี่ยงข้อความซ้ําซ้อน ข้อความซ้ําเกิดจากช่องว่างของบริบท ดังนั้นการออกแบบจึงเริ่มต้นด้วยการเข้าใจว่าบริบทไหลเวียนอย่างไร ดูแผนภาพใน Context distribution in standard harness เพื่อเข้าใจว่าชั้น orchestration แบ่งปันบริบทกับแต่ละองค์ประกอบอย่างไร
ในชุดเครื่องมือมาตรฐาน ผู้วางแผนจะเรียกใช้หัวข้อเหมือนกับที่เรียกใช้เครื่องมือและเอเจนต์ มันอ่านคําอธิบายของแต่ละหัวข้อเพื่อตัดสินใจว่าจะใช้หัวข้อเมื่อใด สร้างข้อมูลนําเข้าจากบริบทที่ใช้งานอยู่และจากผู้ใช้ และอ่านผลลัพธ์ของหัวข้อเมื่อหัวข้อจบลง หัวข้อที่มีคําอธิบายชัดเจน อินพุตที่กําหนดไว้อย่างชัดเจน และผลลัพธ์ที่ชัดเจน จะทํางานเหมือนตัวแทนขนาดเล็กในแผนงาน: ชั้นออร์เคสตราจะรวบรวมสิ่งที่หัวข้อต้องการ หัวข้อรันตรรกะของมัน ส่งคืนสิ่งที่มันสร้างขึ้น และชั้นออร์เคสตรอเรชันจะจัดรูปแบบและสื่อสารคําตอบไปยังผู้ใช้
สําหรับผู้ใช้ มินิเอเจนต์ให้ความรู้สึกเหมือนสนทนา ผู้ใช้สามารถพูดคุยได้อย่างเป็นธรรมชาติในขณะที่หัวข้อรวบรวมข้อมูลที่ต้องการ ถามคําถามติดตามผล และได้รับคําตอบที่มีคุณค่าจากตัวแทน
Tip
ในฮาร์เนสมาตรฐาน ให้เก็บตรรกะแบบกําหนดไว้ภายในหัวข้อ และปล่อยให้การสื่อสารของผู้ใช้เป็นหน้าที่ของชั้นออร์เคสตรา เก็บค่าที่หัวข้อต้องการเป็นอินพุตก่อนรัน และคืนค่าที่ได้เป็นผลลัพธ์หลังจากรัน
ตั้งชื่อและอธิบายหัวข้อเพื่อให้ชั้น orchestration สามารถนําทางไปยังหัวข้อนั้นได้
ชั้นออร์เคสตราใช้ชื่อหัวข้อและคําอธิบายเพื่อส่งคําขอไปยังหัวข้อนั้น เขียนทั้งสองส่วนสำหรับเลเยอร์การประสานงาน ตั้งชื่อหัวข้อให้ชัดเจนและเฉพาะเจาะจงซึ่งอธิบายว่ามันทําอะไร
เขียนคําอธิบายเป็นสองส่วน ก่อนอื่น อธิบายว่าเมื่อไหร่ควรใช้หัวข้อนั้น ประการที่สอง อธิบายสั้น ๆ ว่าต้องทําอย่างไรตามผลลัพธ์ของหัวข้อ รวมถึงวิธีที่ชั้น orchestration ควรส่งคําขอและจัดการผลลัพธ์หลังจากรันหัวข้อ อย่าอธิบายหน้าจอภายในหรือขั้นตอนของหัวข้อ
ตัวอย่างเช่น ใช้คําอธิบายต่อไปนี้สําหรับหัวข้อที่ตอบคําขอยอดคงเหลือบัญชีและรายงานผลตอบแทน:answered
This topic handles account balance requests.
If its answered output is true, the user has already received their response and it should not be answered again.
รวบรวมข้อมูลนําเข้าก่อนที่หัวข้อจะทํางาน
ให้หัวข้อมีข้อมูลที่ป้อนสําหรับแต่ละค่าที่ต้องการ เลเยอร์ออร์เคสตราสามารถรวบรวมค่าเหล่านั้นจากบริบทที่ใช้งานอยู่ และจากผู้ใช้ในรูปแบบสนทนา ก่อนที่หัวข้อจะทํางาน อินพุตจะถูกส่งไปยังตัวแปรที่ตรรกะของหัวข้อนั้นนําไปใช้
ใช้ชื่ออินพุต คําอธิบาย เอนทิตี และการตั้งค่าการตรวจสอบเพื่อช่วยให้ชั้นออร์เคสตรอเรชันเติมข้อมูลอินพุตได้อย่างถูกต้อง:
ชื่ออินพุต จะบอกเลเยอร์ออร์เคสตราว่ากําลังเก็บอะไรอยู่ และใช้สร้างคําถามหากเลเยอร์ออร์เคสตราต้องถามผู้ใช้เกี่ยวกับค่านั้น ตั้งชื่อตามค่า ไม่ใช่กลไก ตัวอย่างเช่น ตั้งชื่ออินพุต
The user's request about...แทนOData filter, เพื่อให้ชั้น orchestration ไม่ขอให้ผู้ใช้เขียนคําสั่ง queryคําอธิบายอินพุต เป็นเพียงพรอมต์ไปยังชั้นออร์เคสตรา ไม่ใช่ป้ายกํากับสําหรับผู้ใช้ ใช้เพื่อบอกเลเยอร์ออร์เคสตราว่าจะตีความ จํากัด หรือแปลงค่าอย่างไรก่อนที่หัวข้อจะได้รับค่านั้น ชั้นออร์เคสตราสามารถเติมข้อมูลนําเข้าจากการสนทนา จากผลลัพธ์ก่อนหน้า หรือจากข้อมูลโปรไฟล์ผู้ใช้ มันสามารถเลือกจากชุดค่า ใช้ข้อจํากัดบางอย่าง และเขียนคําสั่งสืบค้นตามข้อมูลสคีมา
คําอธิบายอินพุตยังสามารถสั่งให้เลเยอร์ออร์เคสตราสร้างค่าในรูปแบบเฉพาะได้ด้วย ตัวอย่างเช่น หัวข้อที่กรองรายการสามารถรับข้อมูลนําเข้าที่คําอธิบายบอกชั้นการจัดการว่าจะสร้างตัวกรองจากคําขอของผู้ใช้อย่างไร รวมถึงฟิลด์ที่มีอยู่ ไวยากรณ์ของคําสั่ง และตัวอย่างบางส่วน
เอนทิตี จะตั้งค่าประเภทและช่วงที่อนุญาตสําหรับอินพุต ดังนั้นเฉพาะค่าที่ถูกต้องเท่านั้นที่เข้าถึงตรรกะของหัวข้อ
การตรวจสอบความถูกต้องขั้นสูงและตรรกะเงื่อนไข รวมถึง Power FX ทําหน้าที่เป็นการตรวจสอบเชิงกําหนด มันสามารถป้องกันไม่ให้ป้อนข้อมูลเข้าไป หรือป้องกันไม่ให้หัวข้อทํางานเมื่อเงื่อนไขไม่เป็นไปตามที่กําหนด
การตรวจสอบข้อมูลแบบกําหนดแน่นอนมีความน่าเชื่อถือเทียบเท่ากับโค้ด ดังนั้นกฎธุรกิจและข้อจํากัดด้านการปฏิบัติตามจึงได้รับการเคารพแม้ในขณะที่แผนส่วนอื่น ๆ ถูกสร้างขึ้น
รักษาตรรกะและข้อควรระวังไว้ในหัวข้อ
เก็บงานเชิงกําหนดของหัวข้อไว้ภายในหัวข้อ: ขั้นตอนที่มันรัน การคํานวณที่ทํา และกฎที่มันบังคับใช้ ผู้ผลิตควบคุมและใช้ตรรกะทางธุรกิจที่สําคัญซึ่งทํางานเหมือนเดิมทุกครั้ง เหมือนเครื่องมือ
ส่งผลลัพธ์เป็นผลลัพธ์ ไม่ใช่ข้อความถึงผู้ใช้
เมื่อหัวข้อเสร็จสิ้น ให้ส่งผลลัพธ์ที่ผลิตออกมาเพื่อให้ชั้นจัดการสามารถนําไปใช้และตัดสินใจว่าจะตอบสนองอย่างไร ชอบวิธีนี้มากกว่าการให้หัวข้อส่งข้อความโดยตรงถึงผู้ใช้ หัวข้อที่เขียนถึงผู้ใช้ในขณะที่ชั้น orchestration ตอบกลับด้วย เป็นแหล่งที่มาของข้อความซ้ํากันทั่วไป—ชั้น orchestration ไม่รู้ว่าหัวข้อได้ตอบกลับไปแล้ว
สําคัญ
หัวข้อที่ไม่คืนผลลัพธ์ใด ๆ ถือเป็นสัญญาณเตือน ถ้าหัวข้อตอบผู้ใช้ เก็บค่า หรือแสดงการ์ดแต่ไม่คืนข้อมูล ชั้น orchestration จะไม่เห็นสิ่งที่เกิดขึ้นและอาจตอบคําขอเดิมอีกครั้ง พฤติกรรมนี้เป็นสาเหตุที่พบบ่อยที่สุดของข้อความซ้ําจากหัวข้อ
ผลลัพธ์ที่ผ่านการทดสอบต่อไปนี้ขอแนะนําอย่างยิ่งว่าเป็นรูปแบบที่เชื่อถือได้สําหรับบริบทและการสื่อสาร ข้อกําหนดเหล่านี้ใช้ได้ไม่ว่าจะเป็นหัวข้อตอบผู้ใช้โดยตรงหรือส่งข้อมูลทั้งหมดกลับไปยังชั้น orchestration เพื่อตอบ
| เอาท์พุท | คำอธิบาย | วิธีการใช้ |
|---|---|---|
answered |
เป็นจริงหากผู้ใช้ได้รับคําตอบที่น่าพอใจสําหรับคําขอของตนในหัวข้อนี้แล้ว | ตั้งค่าเป็น true ในหัวข้อเมื่อมันตอบหรือแสดงผลลัพธ์ ดูตัวอย่างคําสั่งระดับบนสุดที่ตามมา ซึ่งรับรองว่าชั้น orchestration จะถือว่าส่วนนั้นของคําขอได้รับการตอบแล้วและไม่ซ้ํา |
choiceReceived |
เป็นจริงหากผู้ใช้ได้เลือกในหัวข้อนี้แล้ว | ตั้งค่าเป็น true เมื่อผู้ใช้เลือก เช่น เลือกปุ่มการ์ด ชั้นการเรียบเรียงไม่ได้ถามคําถามนี้ซ้ํา |
balanceValue |
ค่าที่หัวข้อดึงมาและจัดหาให้ผู้ใช้แล้ว | ตั้งค่าให้เป็นข้อมูลสําคัญที่หัวข้อดึงมา และตั้งชื่อผลลัพธ์สําหรับข้อมูลนั้น เลเยอร์ออร์เคสตราใช้ซ้ําจากบริบทแทนที่จะดึงกลับมาใหม่ |
messageSummary |
สรุปสั้น ๆ ของสิ่งที่ได้แสดงให้ผู้ใช้เห็นแล้ว เพื่อให้เข้าใจบริบท | ตั้งค่าเมื่อข้อความมีข้อมูลที่แผนต้องการในภายหลัง ชั้น orchestration จะรับรู้สิ่งที่ผู้ใช้ได้รับแจ้งและไม่พูดซ้ําหรือขัดแย้งกับเนื้อหานั้น |
แค่เอาต์พุตก็เพียงพอสําหรับรุ่นเก่าแล้ว รุ่นใหม่ยังต้องมีคําสั่งระดับบนสุดที่บอกเลเยอร์ออเคสตราให้ตรวจสอบผลลัพธ์ก่อนตอบ
ตัวอย่างคําสั่งระดับบนสุดนี้เป็นตัวอย่างการทํางานที่ผ่านการทดสอบแล้ว แก้ไขและปรับแต่งได้ตามต้องการ
ทุกครั้งที่มีการเรียกหัวข้อหรือเอเจนต์ใด ๆ ให้มองหาผลลัพธ์บูลีนที่ 'ตอบแล้ว' ก่อนตัดสินใจว่าจะตอบอะไร หัวข้อและตัวแทนมีช่องทางการสื่อสารกับผู้ใช้ของตนเอง ถ้า 'ตอบแล้ว' เป็นจริง ให้สมมติว่าคําขอได้รับการตอบกลับอย่างถูกต้องโดยใช้ตัวแปรเอาต์พุตอย่างน้อยหนึ่งตัว และตรวจสอบตัวแปรใดตามคําอธิบายผลลัพธ์ อย่าแสดงท่าทีเก้ๆ กังๆ ต่อเนื้อหาที่ตอบไป ให้แค่ผลลัพธ์ที่ยังไม่ได้คําตอบ และพูดคุยต่ออย่างเป็นธรรมชาติในขั้นตอนถัดไป
คําว่า 'ช่องทาง ' ไม่ได้หมายถึงช่องทางการบูรณาการ มันเป็นอุปกรณ์แจ้งคําสั่งที่บอกชั้นออร์เคสตราว่าผู้ใช้อาจเคยเห็นคําตอบผ่านคอมโพเนนต์อื่นแล้ว ขึ้นอยู่กับโมเดลของเอเจนต์ อาจมีประสิทธิภาพมากกว่าหากวางคําสั่งที่คล้ายกันลงในคําสั่งของเอเจนต์เอง เรียนรู้เพิ่มเติมใน ออกแบบคำสั่งระดับบนที่รัดกุมเพื่อหลีกเลี่ยงข้อความซ้ำ
ถ้าหัวข้อต้องแสดงสิ่งที่ชั้น orchestration ไม่สามารถทําซ้ําได้ เช่น Adaptive Card ให้หัวข้อแสดงและส่งผลลัพธ์สถานะคําตอบ
Tip
เรียนรู้เพิ่มเติมเกี่ยวกับข้อความซ้ําและผลลัพธ์สถานะตอบกลับในแนวทางปฏิบัติที่ดีที่สุดด้านการออกแบบเพื่อหลีกเลี่ยงข้อความซ้ําซ้อน เรียนรู้ว่าบริบทเคลื่อนที่ระหว่างชั้นออร์เคสตราและหัวข้ออย่างไรในการจัดแจกแจงบริบทในฮาร์เนสมาตรฐาน
รวบรวมคําตอบเมื่อหัวข้อยังต้องการให้ผู้ใช้ป้อนข้อมูล
บางหัวข้อต้องถามคําถามหรือแสดงการ์ด เช่น เพื่อเก็บตัวเลือกที่มีปุ่ม แนวทางการออกแบบนี้ถือว่าเหมาะสม โปรดจําไว้ว่าคําถามหรือการ์ดที่เปิดอยู่ต้องได้รับการแก้ไขเมื่อผู้ใช้เปลี่ยนเส้นทางก่อนตอบ
ก่อนเพิ่มโหนดคําถาม ให้พิจารณาว่าค่านั้นสามารถเก็บเป็นอินพุตแทนได้หรือไม่ เมื่อเก็บโหนดคําถามไว้ ให้จัดการกรณีที่ผู้ใช้ถามคําถามอื่นในขณะที่คําถามยังเปิดอยู่ เรียนรู้เพิ่มเติมได้ในหัวข้อ คําถามเปิดหรือการคืนบัตรหลังจากคําขอที่แตกต่างถูกจัดการ
ตัวอย่าง: ป้องกันไม่ให้การถามซ้ําเกี่ยวกับการเลือกการ์ดแบบปรับเปลี่ยน
หัวข้อหนึ่งขอให้ผู้ใช้เลือกหมวดหมู่ที่มีการ์ดปรับเปลี่ยนได้:
ปัญหาของคุณคือหมวดหมู่ไหน?
[การเรียกเก็บเงิน][เทคนิค][บัญชี]
เลเยอร์การประสานงานจะได้รับข้อความคำถามผ่านประวัติการสนทนา แต่จะไม่ได้รับข้อมูลว่ามีการแสดงการ์ดหรือผู้ใช้ได้เลือกปุ่ม หลังจากผู้ใช้เลือกปุ่ม ชั้นออร์เคสตราอาจถามคําถามเดียวกันอีกครั้งในรูปแบบข้อความธรรมดา
ออกแบบหัวข้อให้รายงานการกระทําเพื่อหลีกเลี่ยงปัญหานี้:
| เอาท์พุท | ประเภท | ควรตั้งค่าเป็นอะไร |
|---|---|---|
answered |
จริง/เท็จ | เป็นจริงเมื่อหัวข้อแสดงคําตอบหรือพรอมต์ให้ผู้ใช้แล้ว |
choiceReceived |
จริง/เท็จ | เป็นจริงเมื่อผู้ใช้เลือกตัวเลือกไปแล้ว |
selectedCategory |
ข้อความ | เมื่อใดก็ตามที่ได้รับตัวเลือก ผลลัพธ์นี้จะประกอบด้วยหมวดหมู่ที่ผู้ใช้เลือก |
เพิ่มคําสั่งในคําอธิบายหัวข้อเพื่อให้ชั้น orchestration รู้ว่าการรันที่ประสบความสําเร็จหมายถึงอะไร ให้พึ่งพาคําสั่งระดับบนสุดใน Return results เป็นผลลัพธ์ ไม่ใช่ข้อความถึงผู้ใช้ เพื่อให้รุ่นใหม่ตรวจสอบผลลัพธ์เหล่านี้ก่อนจะถามอีกครั้ง
แนวทางปฏิบัติสําหรับหัวข้อในชุดเครื่องมือมาตรฐาน
- ตั้งชื่อหัวข้อให้ชัดเจนและเฉพาะเจาะจง พร้อมคําอธิบายที่บอกว่าเมื่อใดควรใช้ (และถ้าต้องการ ควรทําอย่างไรหลังจากรัน)
- เพิ่มอินพุตสําหรับแต่ละค่าที่หัวข้อต้องการ และเขียนคําอธิบายอินพุตเป็นพรอมต์ในชั้นออร์เคสตรา
- ตั้งชื่ออินพุตตามค่าที่อินพุตนั้นเก็บไว้ เนื่องจากชื่อนั้นจะกลายเป็นคำถามหากเลเยอร์ orchestration จำเป็นต้องถามผู้ใช้
- เก็บตรรกะเชิงกําหนดและกรอบป้องกัน เช่น เอนทิตี การตรวจสอบ และ Power FX ไว้ในหัวข้อ
- หลีกเลี่ยงการส่งข้อความถึงผู้ใช้โดยตรงภายในหัวข้อ ใช้โหนดข้อความ โหนดคําถาม หรือการ์ดปรับเปลี่ยนเฉพาะเมื่อจําเป็นเท่านั้น
- ส่งคืนผลลัพธ์เป็นผลลัพธ์ รวมถึงผลลัพธ์สถานะที่ตอบแล้ว
ข้อมูลที่เกี่ยวข้อง
- การกระจายบริบทในสายรัดมาตรฐาน
- ออกแบบแนวปฏิบัติที่ดีที่สุดเพื่อหลีกเลี่ยงข้อความซ้ําซ้อน
- ออกแบบซับเอเจนต์ที่หลีกเลี่ยงข้อความซ้ําซ้อน
- แก้ไขปัญหาข้อความซ้ําและคําตอบที่พลาด
- ทําตามแนวทางปฏิบัติที่ดีที่สุดในการเขียนหัวข้อ
- จัดการอินพุตและเอาต์พุตของหัวข้อ
- ประสานลักษณะการทำงานของเอเจนต์ด้วย AI สร้างสรรค์
- ใช้ความสามารถในการประสานรวมเชิงกําเนิด