การกระจายบริบทในสายรัดมาตรฐาน

ฮาร์เนสมาตรฐานจะกระจายบริบทไปยังส่วนประกอบที่จัดการคําขอ แต่ละองค์ประกอบทํางานจากบริบทของตัวเอง และฮาร์เนสไม่ได้ปรับบริบทในระดับสูงสุดโดยอัตโนมัติ การแยกนี้ให้ความยืดหยุ่น แต่อาจทําให้เกิดข้อความซ้ําหรือคําตอบที่พลาดได้ หากข้อมูลไม่ได้ถูกส่งกลับอย่างชัดเจนโดยส่วนประกอบอิสระ

บทความนี้อธิบายว่าทําไมบริบทจึงถูกกระจาย วิธีที่ 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 ที่หลีกเลี่ยงข้อความซ้ําซ้อน

ขั้นตอนต่อไป

ด้วยโมเดลบริบทนี้ บทความถัดไปในชุดนี้จะอธิบายว่าทําไมโมเดลนี้จึงทําให้เกิดข้อความซ้ําซ้อน และเสนอรูปแบบการออกแบบเพื่อป้องกันข้อความซ้ําซ้อน