หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ฮาร์เนสมาตรฐานจะกระจายบริบทไปยังส่วนประกอบที่จัดการคําขอ แต่ละองค์ประกอบทํางานจากบริบทของตัวเอง และฮาร์เนสไม่ได้ปรับบริบทในระดับสูงสุดโดยอัตโนมัติ การแยกนี้ให้ความยืดหยุ่น แต่อาจทําให้เกิดข้อความซ้ําหรือคําตอบที่พลาดได้ หากข้อมูลไม่ได้ถูกส่งกลับอย่างชัดเจนโดยส่วนประกอบอิสระ
บทความนี้อธิบายว่าทําไมบริบทจึงถูกกระจาย วิธีที่ GitHub Copilot harness แตกต่างกัน บริบทเคลื่อนที่ระหว่างชั้นการจัดการเอเจนต์กับคอมโพเนนต์อย่างไร และแต่ละคอมโพเนนต์สามารถเห็นและส่งกลับได้อย่างไร ใช้ข้อมูลนี้เพื่อระบุช่องว่างในบริบทและออกแบบเอเจนต์ที่จัดการบริบทอย่างตั้งใจ
แผนภาพต่อไปนี้แสดงให้เห็นว่าบริบทและการสื่อสารไหลเวียนอย่างไรระหว่างชั้นออร์เคสตรา ส่วนประกอบแต่ละส่วน และผู้ใช้ในฮาร์เนสมาตรฐาน
Note
บทความนี้อธิบายคุณสมบัติและพฤติกรรมของสายรัดมาตรฐาน เรียนรู้วิธีเข้าถึงฟีเจอร์มาตรฐานใน Access standard agent และ agent flows
ชุดเครื่องมือเป็นพลังเบื้องหลังทุกสิ่งที่สร้างขึ้นใน Copilot Studio และโมเดลที่เลือกจะทำหน้าที่ให้การใช้เหตุผลและการสร้างเนื้อหา ฮาร์เนสเป็นรันไทม์ที่อยู่ระหว่างสองสิ่งนี้: มันกําหนดเวลาที่จะเรียกใช้โมเดล จะส่งคอมโพเนนต์ใด ตีความสิ่งที่กลับมา และเรียกใช้เครื่องมือที่เหมาะสม เรียนรู้เพิ่มเติมเกี่ยวกับสายรัด Copilot Studio
ทําไมฮาร์เนสมาตรฐานจึงกระจายบริบท
สายรัดมาตรฐานถูกออกแบบมาเพื่อความยืดหยุ่น:
- มันจัดการงานและสนับสนุนกรณีการใช้งานเชิงธุรกรรม
- มันสมดุลระหว่างการควบคุมแบบกําหนดและ AI ผ่านตัวแปร ทริกเกอร์ และฟีเจอร์เฉพาะทาง
- มันกระจายการควบคุมไปยังส่วนประกอบต่าง ๆ เช่น หัวข้อ ความรู้ ตัวแทนลูก ตัวแทนที่เชื่อมต่อ และเครื่องมือ
- รองรับตัวเลือกการยืนยันตัวตน ช่องทาง และการผสานรวมหลายแบบ
การกระจายงานไปยังส่วนประกอบอิสระช่วยให้มีความยืดหยุ่น แต่ก็อาจสร้างช่องว่างในบริบท:
- ชั้นการประสานงานเอเจนต์จะส่งมอบการควบคุมในระหว่างการเรียกใช้คอมโพเนนต์บางรายการ
- ขณะที่คอมโพเนนต์กําลังทํางาน ชั้นออร์เคสตราจะไม่เห็นข้อความที่คอมโพเนนต์ส่งถึงผู้ใช้
- ชั้นการเรียบเรียงดนตรีไม่สามารถประสานบริบทในระดับบนสุดได้
ถ้าการออกแบบไม่จัดการบริบทของเอเจนต์ ช่องว่างจะเกิดขึ้น และคําขออาจดูเหมือนไม่ได้รับการตอบกลับ ช่องว่างเหล่านี้อาจทําให้คําตอบซ้ําหรือพลาดได้
ฮาร์เนสของ GitHub Copilot แตกต่างอย่างไร
ชั้นออร์เคสตราของฮาร์เนส GitHub Copilot ช่วยหลีกเลี่ยงความไม่ตรงกันของบริบทโดยเป็นผู้สื่อสารเพียงคนเดียวกับผู้ใช้ มันไม่เคยปล่อยให้เอเจนต์ที่เชื่อมต่อเข้ามาควบคุมการสื่อสาร:
- วงจรการใช้เหตุผลและการสื่อสารทํางานโดยไม่ต้องมีการจัดการบริบทอย่างตั้งใจ
- ข้อความของเอเจนต์ที่เชื่อมต่อจะผ่านชั้น AI ของรายการหลักทุกขั้นตอน
ชั้นออร์เคสตราของฮาร์เนส GitHub Copilot ยังจัดการกับขนาดบริบทที่แตกต่างกัน ซึ่งทําให้บริบทของมันใหญ่กว่าฮาร์เนสมาตรฐานหลายเท่า:
- มันสามารถเข้าถึงบริบทของโมเดลได้โดยตรง
- มันสามารถใช้การอัดแน่นได้
- มันสามารถเขียนข้อมูลและไฟล์ลงในคอนเทนเนอร์ Bash sandbox ได้
วิธีที่บริบทส่งไปยังคอมโพเนนต์และกลับไปยังชั้นออร์เคสตรา
เพื่อจัดการบริบทอย่างมีประสิทธิภาพในฮาร์เนสมาตรฐาน ให้พิจารณาทั้งสิ่งที่ชั้นออร์เคสตรอเรชันส่งต่อไปยังคอมโพเนนต์และสิ่งที่คอมโพเนนต์ส่งคืน
บริบทถูกส่งไปยังคอมโพเนนต์ได้สองวิธี:
อินพุตและคําขอแบบชัดเจน: ชั้นออร์เคสตราจะเติมอินพุตของแต่ละคอมโพเนนต์จากบริบทที่ใช้งานอยู่และส่งคําขอตามที่ออกแบบไว้
บริบทสนทนาแบบนัย: ชั้น orchestration ยังส่งบริบทสนทนาที่ยาวกว่าไปยังส่วนประกอบ เช่น ความรู้และซับเอเจนต์ โดยไม่ต้องกําหนดค่าอย่างชัดเจน โปรดทราบว่าเอเจนต์ลูกจะได้รับบริบทการสนทนาของเอเจนต์แม่เสมอ เอเจนต์ที่เชื่อมต่อมีการตั้งค่าสำหรับรวมหรือไม่รวมเอเจนต์นั้น เครื่องมือหรือโฟลว์จะได้รับเฉพาะอินพุตของมันเท่านั้น
คอมโพเนนต์ส่งข้อมูลกลับไปยังชั้นออร์เคสตราในสองวิธี:
- ผลลัพธ์และการตอบสนองที่ชัดเจนตามที่ออกแบบไว้
- บริบทโดยนัย จากส่วนประกอบบางอย่าง
สิ่งที่คอมโพเนนต์แสดงให้ผู้ใช้เห็น หรือเก็บไว้ในตัวแปรของตัวเอง อาจจะไม่ถึงชั้นออร์เคสตราเลย เว้นแต่จะกลับมาผ่านช่องทางใดช่องทางหนึ่ง
การส่งข้อมูลโดยนัยทําให้เกิดกรณีประมาณครึ่งหนึ่งที่มีคําตอบซ้ําหรือพลาด เพราะส่วนประกอบสามารถดําเนินการตามคําขอที่ไม่เคยถูกส่งต่อโดยตรง
บริบทแตกต่างกันระหว่างส่วนประกอบอย่างไร
บทสนทนาที่ผู้ใช้มองเห็นได้และบริบทของชั้นออร์เคสตร้ามีความทับซ้อนกัน แต่ไม่เหมือนกัน หลักการต่อไปนี้ใช้กับสิ่งที่เข้าถึงบริบทของชั้นออร์เคสตรอเรชันจากการเรียกคอมโพเนนต์:
สิ่งที่คอมโพเนนต์เก็บไว้ภายในย่อมถูกซ่อนไว้ ตัวแปรหัวข้อและบทสนทนาหลายรอบภายในซับเอเจนต์มีอยู่ภายในคอมโพเนนต์ ชั้นออร์เคสตราจะเห็นข้อมูลเหล่านั้นก็ต่อเมื่อส่งคืนเป็นผลลัพธ์เท่านั้น
มีข้อมูลเพียงสองประเภทเท่านั้นที่ส่งคืน ชั้นออร์เคสตราจะได้รับผลลัพธ์ที่ออกแบบไว้และบริบทโดยนัยจากคอมโพเนนต์ คอมโพเนนต์ที่ทํางานได้แต่ไม่คืนอะไรเลย อาจทําให้ชั้นออร์เคสตราไม่รู้ว่าเกิดอะไรขึ้น
แต่ละองค์ประกอบมีบริบทหรือมุมมองของตัวเอง ชั้นออร์เคสตราชันใช้บริบทที่ใช้งานอยู่เพื่อเลือกขั้นตอนและสร้างอินพุต เอเจนต์ที่เชื่อมต่อมีชั้นการจัดเรียงของตัวเอง คําสั่งของตัวเอง และเครื่องมือและคําสั่งความรู้ภายในของตัวเอง
ใช้ตารางต่อไปนี้เพื่อถามคําถามที่ชัดเจน: องค์ประกอบใดที่มีข้อเท็จจริงในบริบทที่ใช้งานอยู่?
| มุมมอง | มีอยู่ในบริบทที่ใช้งานอยู่ | สามารถเขียนไปยังหน้าต่างแชทได้ | สามารถใช้เป็นบริบทได้ |
|---|---|---|---|
| เลเยอร์การประสานรวม | คําขอของผู้ใช้, บริบทการสนทนา, คําอธิบายส่วนประกอบ, คําอธิบายอินพุต, คําอธิบายผลลัพธ์, สถานะแผน, การตอบสนองโดยนัย (แต่ ไม่ รวมว่าข้อมูลนัยนั้นถูกแสดงให้ผู้ใช้เห็นหรือไม่) | ใช่ คําถามและคําตอบของมันเอง | คําถาม คําตอบ เหตุผล และแผนการของมันเอง |
| หัวข้อ | ตัวแปรหัวข้อ, สถานะโหนดปัจจุบัน | ใช่ ผ่านโหนดข้อความ โหนดคําถาม และ Ask with Adaptive Card | ผลลัพธ์ของหัวข้อและการแลกเปลี่ยนข้อความโดยนัยที่ยังคงทําให้เกิดการซ้ําซ้อนได้ |
| เครื่องมือ หรือ โฟลว์ | อินพุตที่สร้างขึ้นโดยชั้นออร์เคสตรา | ไม่ใช่ | เอาต์พุตของเครื่องมือหรือโฟลว์ |
| ขั้นตอนความรู้ | คําขอของผู้ใช้บวกกับบริบทที่ใช้งานอยู่ของเอเจนต์ | ไม่ใช่ มันเขียนถึงเอเจนต์ของตัวเอง ไม่ใช่ไปที่แผงแชท | คําตอบของมัน |
| โหนดคำตอบที่สร้างโดยอัตโนมัติ (ภายในหัวข้อ) | สิ่งที่ส่งเข้ามาในข้อมูลนําเข้า รวมถึงบริบทของเอเจนต์ | ใช่ โดยตรง หรือไปยังตัวแปรหัวข้อ | ไม่ระบุอย่างชัดเจน อาจถูกทําซ้ําได้ |
| ตัวแทนย่อย (ตัวแทนลูกหรือตัวแทนที่เชื่อมต่อ) | คําขอเริ่มต้น รวมถึงอินพุตที่รายการหลักให้มาและบริบทของรายการหลักที่รวมอยู่ในบริบทของเลเยอร์การประสานการทำงานของตัวเอง | ใช่ ถ้ามันถูกตั้งค่าหรือสั่งให้ตอบสนองโดยตรง | คําตอบและผลลัพธ์ของมัน |
สําคัญ
หัวข้อ: บริบทโดยนัยที่ส่งคืนโดยหัวข้อจะรวมข้อมูลข้อความธรรมดาเท่านั้น แต่ไม่รวมว่าผู้ใช้เห็นหรือไม่ ข้อมูลข้อความธรรมดาอาจมาจากโหนดข้อความ โหนดคําถาม เนื้อหาการ์ดปรับเปลี่ยน และการตอบกลับที่พิมพ์ของผู้ใช้ อย่างไรก็ตาม ปุ่มการดำเนินการของการ์ดที่ปรับเปลี่ยนได้และการโต้ตอบของผู้ใช้ที่มากับเอเจนต์ยังไม่ถึงบริบทมาตรฐานของชุดเครื่องมือ การจัดการการ์ดแบบปรับเปลี่ยนได้ทําให้เกิดความไม่ตรงกันของบริบทส่วนใหญ่ อย่าพึ่งเนื้อหาการ์ดเป็นบริบท ให้คืนค่าข้อมูลใด ๆ ที่ขั้นตอนถัดไปต้องการเป็นผลลัพธ์หัวข้อ และตั้งค่าผลลัพธ์สถานะคําตอบ เรียนรู้เพิ่มเติมเกี่ยวกับหัวข้อการออกแบบในฐานะมินิเอเจนต์ที่หลีกเลี่ยงข้อความซ้ําซ้อน
ซับเอเจนต์: เมื่อบริบทแม่ถูกส่งไปยังเอเจนต์ที่เชื่อมต่อ จะส่งผลต่อทุกเครื่องมือ หัวข้อ และการเรียกความรู้ที่เอเจนต์ทํา ถ้าบริบทที่แนบมายังมีคําขอที่ดูเหมือนไม่ได้รับการตอบกลับ ตัวแทนที่เชื่อมต่ออาจพยายามชดเชยและตอบกลับอีกครั้ง เจ้าหน้าที่เด็กก็มีความเสี่ยงเดียวกันแต่ควบคุมได้น้อยกว่า มันทำงานอยู่ภายใน parent และจะได้รับบริบทการสนทนาของ parent เสมอ โดยไม่มีการตั้งค่าให้ยกเว้นได้ เรียนรู้เพิ่มเติมในหัวข้อ Design subagent ที่หลีกเลี่ยงข้อความซ้ําซ้อน
ขั้นตอนต่อไป
ด้วยโมเดลบริบทนี้ บทความถัดไปในชุดนี้จะอธิบายว่าทําไมโมเดลนี้จึงทําให้เกิดข้อความซ้ําซ้อน และเสนอรูปแบบการออกแบบเพื่อป้องกันข้อความซ้ําซ้อน
ข้อมูลที่เกี่ยวข้อง
- ออกแบบแนวปฏิบัติที่ดีที่สุดเพื่อหลีกเลี่ยงข้อความซ้ําซ้อน
- ออกแบบหัวข้อเป็นมินิเอเจนต์ที่หลีกเลี่ยงข้อความซ้ําซ้อน
- ออกแบบซับเอเจนต์ที่หลีกเลี่ยงข้อความซ้ําซ้อน
- แก้ไขปัญหาข้อความซ้ําและคําตอบที่พลาด
- ใช้ความสามารถในการประสานรวมเชิงกําเนิด
- ประสานลักษณะการทำงานของเอเจนต์ด้วย AI สร้างสรรค์
- โซลูชันตัวแทนสถาปนิก: หลักการและรูปแบบ