โฟลว์กระบวนการพร้อมท์ของผู้ใช้ GitHub Copilot
ในหน่วยนี้ เราจะอธิบายวิธีที่ GitHub Copilot เปลี่ยนพร้อมท์ของคุณให้เป็นโค้ดอัจฉริยะที่ใช้งานได้ โดยทั่วไป GitHub Copilot จะได้รับพร้อมท์และส่งกลับคำแนะนำโค้ดหรือการตอบกลับในกระแสข้อมูล กระบวนการนี้แนะนําโฟลว์ขาเข้าและขาออก
โฟลว์ขาเข้า:
มาดูขั้นตอนทั้งหมดที่ Copilot ใช้เพื่อประมวลผลพร้อมท์ของผู้ใช้ให้เป็นคำแนะนำโค้ด
1. การส่งพร้อมท์และการรวบรวมบริบทที่ปลอดภัย
กระบวนการเริ่มต้นด้วยการส่งพร้อมท์ผู้ใช้ผ่าน HTTPS อย่างปลอดภัย ซึ่งรับรองว่าข้อคิดเห็นภาษาธรรมชาติของคุณที่ส่งไปยังเซิร์ฟเวอร์ของ GitHub Copilot มีความปลอดภัยและเป็นความลับ เพื่อปกป้องข้อมูลที่ละเอียดอ่อน
GitHub Copilot ได้รับพร้อมท์ของผู้ใช้อย่างปลอดภัย ซึ่งอาจเป็นการแชทของ Copilot หรือข้อคิดเห็นภาษาธรรมชาติที่คุณให้ไว้ภายในโค้ดของคุณ
Copilot จะรวบรวมรายละเอียดบริบทไปพร้อมกัน:
- โค้ดก่อนและหลังตำแหน่งเคอร์เซอร์ ซึ่งช่วยให้เข้าใจบริบทของพร้อมท์ได้ทันที
- ชื่อไฟล์และชนิดของไฟล์ที่กำลังแก้ไข ทำให้สามารถปรับแต่งคำแนะนำโค้ดสำหรับประเภทไฟล์เฉพาะได้
- ข้อมูลเกี่ยวกับแท็บเปิดที่อยู่ติดกัน ช่วยให้มั่นใจว่าโค้ดที่สร้างขึ้นจะสอดคล้องกับส่วนโค้ดอื่นๆ ในโครงการเดียวกัน
- ข้อมูลเกี่ยวกับโครงสร้างโครงการและพาธของไฟล์
- ข้อมูลเกี่ยวกับภาษาโปรแกรมและเฟรมเวิร์ก
- การประมวลผลล่วงหน้าโดยใช้เทคนิค Fill-in-the-Middle (FIM) เพื่อพิจารณาทั้งบริบทของโค้ดก่อนหน้าและต่อไปนี้ ขยายความเข้าใจของแบบจําลองให้การอนุญาตให้ Copilot สร้างคําแนะนําโค้ดที่ถูกต้องและเกี่ยวข้องมากขึ้นโดยใช้ประโยชน์จากบริบทที่กว้างขึ้น
ขั้นตอนเหล่านี้แปลคำขอระดับสูงของผู้ใช้ให้เป็นงานการเขียนโค้ดที่ชัดเจน
2. ตัวกรองพร็อกซี
เมื่อรวบรวมบริบทและสร้างพรอมต์แล้ว จะถูกส่งผ่านไปยังเซิร์ฟเวอร์พร็อกซีอย่างปลอดภัย ซึ่งเป็นโฮสต์ใน Microsoft Azure ในนามของผู้เช่า GitHub พร็อกซีทำหน้าที่กรองข้อมูลการรับส่ง, บล็อกความพยายามในการแฮ็คพร้อมท์หรือจัดการระบบเพื่อเปิดเผยรายละเอียดเกี่ยวกับวิธีที่โมเดลสร้างคำแนะนำโค้ด
3. การกรองความเป็นพิษ
Copilot รวมกลไกการกรองเนื้อหาไว้ก่อนดำเนินการแยกจุดประสงค์และสร้างโค้ด เพื่อให้แน่ใจว่าโค้ดและการตอบสนองที่สร้างขึ้นจะไม่รวมหรือเลื่อนระดับ:
- คำพูดที่ก่อความเกลียดชังและเนื้อหาที่ไม่เหมาะสม: Copilot ใช้อัลกอริทึมเพื่อตรวจหาและป้องกันการสร้างคำพูดที่แสดงความเกลียดชัง ภาษาที่ไม่เหมาะสม หรือเนื้อหาที่ไม่เหมาะสมที่อาจเป็นอันตรายหรือก้าวร้าว
- ข้อมูลส่วนบุคคล: Copilot จะกรองข้อมูลส่วนบุคคล เช่น ชื่อ ที่อยู่ หรือหมายเลขประจำตัว เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้และความปลอดภัยของข้อมูล
4. การสร้างโค้ดด้วย LLM
สุดท้าย พร้อมท์ที่กรองและวิเคราะห์จะถูกส่งผ่านไปยังแบบจําลอง LLM ซึ่งสร้างคําแนะนําโค้ดที่เหมาะสม คําแนะนําเหล่านี้ขึ้นอยู่กับความเข้าใจของพร้อมท์และบริบทโดยรอบของ Copilot’เพื่อให้แน่ใจว่าโค้ดที่สร้างขึ้นมีความเกี่ยวข้อง ใช้งานได้ และสอดคล้องกับข้อกําหนดเฉพาะของโครงการ
โฟลว์ขาออก:
5. หลังการประมวลผลและการตรวจสอบการตอบสนอง
เมื่อโมเดลก่อให้เกิดการตอบสนองตัวกรองความเป็นพิษจะกําจัดเนื้อหาที่เป็นอันตรายหรือเนื้อหาที่สร้างขึ้นไม่เหมาะสม พร็อกซีเซิร์ฟเวอร์จะใช้เลเยอร์สุดท้ายของการตรวจสอบเพื่อให้แน่ใจว่าโค้ดมีคุณภาพ ความปลอดภัย และมาตรฐานทางจริยธรรม การตรวจสอบเหล่านี้รวมถึง:
- คุณภาพโค้ด : การตอบสนองจะถูกตรวจสอบสําหรับข้อบกพร่องหรือช่องโหว่ทั่วไป เช่น การเขียนสคริปต์ข้ามไซต์ (XSS) หรือการฉีด SQL เพื่อให้แน่ใจว่าโค้ดที่สร้างขึ้นนั้นมีเสถียรภาพและปลอดภัย
- การจับคู่โค้ดสาธารณะ (ไม่บังคับ): ไม่บังคับ ผู้ดูแลระบบสามารถเปิดใช้งานตัวกรองที่ป้องกันไม่ให้ Copilot ส่งกลับคําแนะนํามากกว่า ~150 ตัว หากคล้ายกับรหัสสาธารณะที่มีอยู่ใน GitHub อย่างใกล้ชิด การดำเนินการนี้จะป้องกันไม่ให้มีการแนะนำการจับคู่ที่เหมือนกันว่าเป็นเนื้อหาต้นฉบับ หากคําตอบส่วนใดส่วนหนึ่งล้มเหลวในการตรวจสอบเหล่านี้ แสดงว่ารายการถูกตัดทอนหรือถูกละทิ้ง
6. การส่งมอบคําแนะนําและการเริ่มต้นรอบข้อเสนอแนะ
เฉพาะคําตอบที่ส่งผ่านตัวกรองทั้งหมดจะถูกส่งไปยังผู้ใช้เท่านั้น จากนั้น Copilot เริ่มต้นรอบคําติชมตามการดําเนินการของคุณเพื่อให้บรรลุสิ่งต่อไปนี้:
- ขยายความรู้ของตนจากคำแนะนำที่ยอมรับ
- เรียนรู้และปรับปรุงผ่านการปรับเปลี่ยนและการปฏิเสธคำแนะนำ
7. ทำซ้ำสำหรับคำสั่งที่ตามมา
กระบวนการนี้จะทำซ้ำเมื่อคุณระบุพร้อมท์เพิ่มเติม โดยที่ Copilot จะจัดการคำขอของผู้ใช้ ทำความเข้าใจจุดประสงค์ และสร้างโค้ดเพื่อตอบสนองอย่างต่อเนื่อง เมื่อเวลาผ่านไป Copilot จะนำข้อมูลตอบรับและการโต้ตอบที่สะสมมาใช้ ซึ่งรวมถึงรายละเอียดบริบท เพื่อปรับปรุงความเข้าใจเกี่ยวกับจุดประสงค์ของผู้ใช้และปรับปรุงความสามารถในการสร้างโค้ด