AI จะแก้ไขโค้ดโดยไม่สร้างโปรแกรมทั้งชุดขึ้นใหม่ได้อย่างไร

คู่มือวิจัยเชิงปฏิบัติสำหรับการปรับแก้โค้ดเฉพาะบริเวณด้วยแบบจำลองเชิงกำเนิด: สิ่งใดควรคงเดิม สิ่งใดเปลี่ยนแปลงได้ และต้องมีหลักฐานใดก่อนเรียกการแปลงนั้นว่าเป็นการคงโครงสร้าง

แชร์คู่มือนี้แชร์

สาระที่แท้จริงของปัญหา

การแก้ไขโค้ดมิใช่เพียงการสร้างโค้ดด้วยพรอมป์ที่สั้นลง ตัวแก้ไขได้รับทั้งชิ้นงานเดิม การเปลี่ยนแปลงที่ต้องการ และข้อตกลงการรักษาโดยนัย ดังนั้น คำถามหลักจึงมีสองด้าน: บริเวณใดเปลี่ยนแปลงได้ และคุณสมบัติใดของส่วนที่เหลือต้องคงเสถียร

คู่มือนี้มุ่งสำหรับผู้อ่านที่มีพื้นฐานทางเทคนิคและเริ่มศึกษาการแก้ไขซอฟต์แวร์ด้วยความช่วยเหลือของ AI โดยแยกแนวคิดเชิงสัญชาตญาณของการแก้ไขเฉพาะที่ออกจากข้อกล่าวอ้างที่เข้มกว่าเกี่ยวกับการคงไว้ซึ่งวากยสัมพันธ์ โครงสร้าง ความหมาย และการทำงาน

แนวคิดหลัก

ตัวแก้ไขที่มีขอบเขตจำเป็นต้องมีขอบเขตการคงสภาพที่ระบุชัดเจน มิใช่มีเพียงเป้าหมายการสร้าง

สิ่งที่ต้องคงที่

สิ่งนี้อาจเป็นช่วงข้อความ ไวยากรณ์ ลายเซ็น API บริเวณ AST พฤติกรรมการทดสอบ ข้อตกลงการพึ่งพา หรือภาพแทนระดับหยาบที่เรียนรู้ แต่ละทางเลือกปกป้องนิยามของเสถียรภาพที่แตกต่างกัน

สิ่งที่อาจเปลี่ยนแปลง

บริเวณที่แก้ไขได้ต้องมีเสรีภาพเพียงพอสำหรับแก้โจทย์ที่ร้องขอ วิธีควบคุมที่คัดลอกทุกอย่างย่อมเสถียรแต่ไร้ประโยชน์ ส่วนวิธีที่เขียนใหม่ทั้งหมดให้เสรีภาพแต่ปราศจากความเป็นเฉพาะที่

แบบจำลองเชิงอุปมา: ปรับปรุงหนึ่งห้อง โดยคงอาคารไว้

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

จุดที่การเปรียบเทียบเทียบเคียงใช้ไม่ได้ รหัสแฝงที่เรียนรู้มิใช่แบบแปลนสถาปัตยกรรมที่ผ่านการรับรอง การตรึงรหัสระดับหยาบอาจเพิ่มเสถียรภาพเชิงโครงสร้างที่วัดได้ แต่ไม่รับประกันว่าโหนด AST พฤติกรรม หรือส่วนต่อประสานใดโดยเฉพาะจะไม่เปลี่ยนแปลง

มุมมองที่แม่นยำยิ่งขึ้นต่อการสร้างใหม่บางส่วน

กำหนดให้ตัวเข้ารหัสแมปโปรแกรม x ไปเป็นภาพแทนแฝงที่มีโครงสร้าง z. มาสก์การคงสภาพเลือกตำแหน่ง L ให้คงที่ ตัวสร้างจะสุ่มเฉพาะตำแหน่งส่วนเติมเต็มพร้อมทั้งบังคับใช้ z'ₗ = zₗ สำหรับทุกตำแหน่งที่ตรึงไว้ จากนั้นตัวถอดรหัสจะแปลงการแทนที่เสร็จสมบูรณ์แล้ว z' กลับเป็นซอร์สโค้ด

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

เวิร์กโฟลว์การแก้ไขสี่ขั้น

  1. กำหนดขอบเขต

    ระบุบริเวณหรือคุณสมบัติที่ต้องคุ้มครอง และกำหนดการเปลี่ยนแปลงที่มุ่งหมาย

  2. สร้างตัวแทนของสิ่งประดิษฐ์

    ใช้ข้อความ วากยสัมพันธ์ บริบทจากการค้นคืน หรือรหัสระดับหยาบและละเอียดที่เรียนรู้

  3. สร้างขึ้นใหม่เฉพาะส่วน

    สุ่มตัวอย่างเฉพาะตำแหน่งที่แก้ไขได้โดยคงข้อจำกัดที่เลือกไว้

  4. ตรวจสอบก่อนยอมรับ

    วัดความเฉพาะที่ วากยสัมพันธ์ โครงสร้าง พฤติกรรม และผลข้างเคียงที่ไม่ได้ตั้งใจ

การแก้ไขโค้ด การซ่อมแซมโปรแกรม และการสร้างภายใต้ข้อจำกัดมิใช่งานเดียวกัน

แนวทางเป้าหมายหลักกลไกการคงไว้โดยทั่วไปสิ่งที่ยังต้องตรวจสอบ
การสร้างโค้ดทั้งชุดสร้างสิ่งประดิษฐ์ให้สมบูรณ์พรอมป์และบริบททุกส่วนที่อยู่นอกเหนือการเปลี่ยนแปลงที่ร้องขอ
การซ่อมแซมโปรแกรมอัตโนมัติแก้ข้อบกพร่องที่วินิจฉัยพบการระบุตำแหน่งข้อผิดพลาด การทดสอบ แม่แบบ หรือแพตช์ความถูกต้องที่เกินขอบเขตการทดสอบที่มีอยู่และความเล็กที่สุดของแพตช์
แบบจำลองเติมส่วนที่ขาดหรือแก้ไขแก้ไขบริเวณข้อความที่เลือกส่วนนำหน้า ส่วนต่อท้าย diff หรือบริบทการแก้ไขที่มองเห็นได้การเปลี่ยนแปลงโครงสร้างและพฤติกรรมที่มิได้ตั้งใจ
การถอดรหัสภายใต้ข้อจำกัดทางไวยากรณ์จำกัดผลลัพธ์ให้อยู่ภายในภาษารูปนัยสถานะการถอดรหัสที่ถูกต้องตามไวยากรณ์ความหมายของโปรแกรม ความถูกต้องของงาน และความเป็นเฉพาะที่
การควบคุมปริภูมิแฝงเชิงลำดับชั้นสร้างตำแหน่งที่เรียนรู้และได้รับเลือกขึ้นใหม่โค้ดแฝงระดับหยาบหรือละเอียดที่ถูกตรึงสิ่งที่รหัสเหล่านั้นคงไว้หลังการถอดรหัส

แนวทางวัดความเฉพาะที่และการคงรักษาโครงสร้าง

การเปลี่ยนแปลงนอกบริเวณ
วัดความแตกต่างภายนอกบริเวณที่ร้องขอให้แก้ไข ค่าที่ต่ำสนับสนุนความเฉพาะที่ แต่การคัดลอกเพียงอย่างเดียวไม่ถือเป็นความสำเร็จ
อิสระภายในบริเวณที่แก้ไขได้
วัดว่าบริเวณที่ปลดล็อกเกิดการเปลี่ยนแปลงจริงหรือไม่ และยังสามารถมีผลลัพธ์ที่ใช้ได้หลายตัวเลือกหรือไม่
วากยสัมพันธ์และไวยากรณ์
อัตราการแจงหรือความถูกต้องตามไวยากรณ์ช่วยตรวจจับผลลัพธ์ที่มีรูปแบบผิด แต่เพียงลำพังไม่ให้ข้อมูลใดเกี่ยวกับพฤติกรรม
คุณสมบัติคงตัวเชิงโครงสร้าง
เปรียบเทียบลายเซ็น ช่วงของ AST การไหลของการควบคุม การไหลของข้อมูล imports หรือ APIs ที่โจทย์กำหนดให้คงเดิม
หลักฐานเชิงฟังก์ชัน
ดำเนินการทดสอบ การตรวจสอบแบบสถิต การคอมไพล์ และการประเมินพฤติกรรมเฉพาะงานเมื่อมีสิ่งประดิษฐ์ที่จำเป็น
ความหลากหลายและความไม่แน่นอน
รายงานความเป็นเอกลักษณ์ของผลลัพธ์ตัวเลือกและความแปรผันจากการรันซ้ำ เพื่อไม่ให้ตีความเสถียรภาพสับสนกับการยุบตัวของฐานนิยม

ส่วนต่อประสานการควบคุมแบบใดเหมาะกับงานแก้ไขนี้

“อย่าเขียนฟังก์ชันทั้งฟังก์ชันใหม่” เป็นข้อกำหนด มิใช่วิธีการที่สมบูรณ์ ควรเริ่มจากผลลัพธ์ที่จำเป็นต้องคาดการณ์ได้ แล้วจึงเลือกพื้นผิวการควบคุมและหลักฐานที่สอดคล้องกัน

หลักประกันที่จำเป็นพื้นผิวการควบคุมที่สอดคล้องยิ่งขึ้นหลักฐานที่ควรเรียกร้อง
การปรับโครงสร้างด้วย AI โดยคงพฤติกรรมให้ LLM ระบุหรือเสนอการแปลง แล้วดำเนินการด้วยเอนจินปรับโครงสร้างโค้ดที่เชื่อถือได้เมื่อสามารถทำได้ โปรดดู RefactoringMirror.การคอมไพล์ การทดสอบ การตรวจสอบแบบสถิต และการตรวจจับการปรับโครงสร้างโค้ด SWE-Refactor กำหนดการตรวจสอบเหล่านี้ไว้อย่างชัดเจนในระดับคลังเก็บโค้ด
การดัดแปลงโค้ดเฉพาะส่วนโดยไม่เขียนฟังก์ชันทั้งชุดขึ้นใหม่นำช่วงซอร์สโค้ดที่ไม่เปลี่ยนแปลงกลับมาใช้ และสร้างเฉพาะบริเวณที่เป็นตัวเลือกสำหรับการแก้ไข ดังเช่นใน EfficientEdit.ความแตกต่างนอกบริเวณ ความสำเร็จของงาน การใช้โทเคนที่ยอมรับแล้วซ้ำ และการตรวจสอบว่าบริบทที่ละไว้ทำให้พลาดการเปลี่ยนแปลงข้ามไฟล์หรือไม่
การสร้างโค้ดภายใต้ข้อจำกัดสำหรับวิศวกรรมซอฟต์แวร์บังคับใช้คุณสมบัติที่นิยามอย่างเป็นทางการระหว่างการถอดรหัส ดังเช่นใน ดิฟฟิวชันภายใต้ข้อจำกัดทางไวยากรณ์, หรือบันทึกจุดตรวจของส่วนขึ้นต้นที่ถูกต้อง แล้วย้อนกลับเฉพาะบริเวณที่เป็นสาเหตุ ดังเช่นใน Hydra.ความสำเร็จตามไวยากรณ์ คอมไพเลอร์ หรือตัวตรวจสอบชนิดข้อมูล ร่วมกับการทดสอบเชิงฟังก์ชัน ความเป็นเฉพาะที่ เวลาแฝงในการซ่อมแซม และปริมาณโค้ดที่ถูกต้องซึ่งสร้างขึ้นใหม่
การสร้างฟังก์ชัน Python ขึ้นใหม่แบบเลือกเฉพาะส่วน โดยรักษาสมดุลระหว่างความเป็นเฉพาะที่กับความหลากหลายตรึงตำแหน่งแฝงระดับหยาบหรือละเอียดที่เลือกไว้ และสุ่มตัวอย่างเฉพาะตำแหน่งที่เหลือประเมินความเฉพาะบริเวณหลังถอดรหัส วากยสัมพันธ์ คุณสมบัติคงตัวเชิงโครงสร้าง เสรีภาพในการแก้ไข ความหลากหลาย และความไม่แน่นอน การตรึงตัวแปรแฝงเพียงอย่างเดียวมิใช่หลักประกันการปรับโครงสร้างโค้ด
การสร้างโค้ดที่คาดการณ์ได้ภายใต้ข้อตกลงการคงรักษาที่ชัดเจนกำหนดคุณสมบัติที่ต้องปกป้องซึ่งสังเกตได้และเกณฑ์ตรวจสอบผ่าน/ไม่ผ่านก่อนการสร้าง จากนั้นเลือกกลไกที่แคบที่สุดซึ่งสามารถบังคับใช้หรือทำให้คุณสมบัติเหล่านั้นตรวจสอบได้วัดคุณสมบัติเหล่านั้นโดยตรงหลังการถอดรหัส และรายงานอัตราการยอมรับ การปฏิเสธ และความล้มเหลวจากการรันซ้ำ การสุ่มตัวอย่างแบบกำหนดแน่นอนเพียงอย่างเดียวไม่รับประกันการคงรักษา

คำถามวิจัยที่คู่มือนี้ตอบ

คำตอบโดยสังเขปเหล่านี้กำหนดขอบเขตของข้อกล่าวอ้างและหลักฐานที่ใช้ตลอดคู่มือนี้

  1. แบบจำลองเชิงกำเนิดจะแก้ไขโค้ดโดยไม่เขียนทั้งฟังก์ชันขึ้นใหม่ได้อย่างไร

    กำหนดขอบเขตที่แก้ไขได้ก่อนการสร้าง รักษาหรือนำซอร์สโค้ดนอกขอบเขตนั้นกลับมาใช้ สร้างเฉพาะการเปลี่ยนแปลงที่เป็นคำตอบผู้สมัคร และปฏิเสธผลลัพธ์ที่ทำงานไม่สำเร็จหรือเปลี่ยนบริเวณที่ต้องปกป้อง การตรึงตัวแปรแฝงเชิงลำดับชั้นเป็นกลไกควบคุมเชิงทดลองรูปแบบหนึ่ง แต่ไม่รับประกันว่าช่วงซอร์สโค้ดจะเหมือนเดิมทุกประการ เปรียบเทียบกลไกควบคุมการแก้ไขเฉพาะบริเวณ.

  2. หลักฐานใดแสดงว่าการแก้ไขโค้ดเกิดขึ้นเฉพาะที่ มิใช่เพียงถูกต้องตามวากยสัมพันธ์

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

  3. ควรสร้างสมดุลระหว่างความเฉพาะที่ของการแก้ไขโค้ดกับความหลากหลายของการสร้างอย่างไร

    รายงานเสถียรภาพของบริเวณคุ้มครองควบคู่กับเสรีภาพในบริเวณที่แก้ไขได้และความเป็นเอกลักษณ์ของผลลัพธ์ตัวเลือก การคัดลอกอินพุตอาจเพิ่มเสถียรภาพสูงสุดโดยไม่ทำให้งานคืบหน้า ขณะที่การเขียนใหม่โดยไร้ข้อจำกัดอาจเพิ่มการเปลี่ยนแปลงสูงสุดแต่ทำลายความเป็นเฉพาะที่ ดูหลักฐานที่มีขอบเขตเกี่ยวกับเสถียรภาพและเสรีภาพ.

  4. การแก้ไขโค้ดเฉพาะส่วน การสร้างแบบมีข้อจำกัด และการซ่อมแซมโปรแกรมแตกต่างกันอย่างไร

    การแก้ไขเฉพาะส่วนเน้นสิ่งที่ต้องคงเดิม การสร้างแบบมีข้อจำกัดบังคับใช้คุณสมบัติรูปนัยของผลลัพธ์ เช่น การเป็นสมาชิกของไวยากรณ์ ส่วนการซ่อมแซมโปรแกรมกำหนดให้การเปลี่ยนแปลงต้องสอดคล้องกับข้อบกพร่องหรือข้อกำหนดของงาน วากยสัมพันธ์เพียงอย่างเดียวมิได้พิสูจน์ความสมมูลเชิงความหมาย ความถูกต้องเชิงหน้าที่ ความสำเร็จของงาน หรือความเฉพาะที่ เปรียบเทียบวัตถุประสงค์ทั้งสาม.

  5. จะสร้างใหม่เฉพาะบางส่วนของฟังก์ชัน Python โดยให้ส่วนที่เหลือคงเดิมได้อย่างไร

    กำหนดบริเวณที่ต้องปกป้องและบริเวณที่แก้ไขได้ก่อนการสร้าง ปรับเฉพาะตัวแทนของส่วนที่แก้ไขได้ แล้วถอดรหัสและปฏิเสธคำตอบผู้สมัครที่เปลี่ยนโค้ดซึ่งต้องปกป้อง หรือไม่ผ่านไวยากรณ์ การทดสอบ การตรวจสอบแบบสถิต หรือคุณสมบัติคงตัวเฉพาะงาน การทดลองตัวแปรแฝงเชิงลำดับชั้นที่รายงานวัดเสถียรภาพเชิงความน่าจะเป็นบนฟังก์ชันขนาด 64 โทเคน มิได้รับประกันว่าช่วงข้อความหรือพฤติกรรมจะไม่เปลี่ยนแปลง ตรวจสอบกระบวนงานการสร้างใหม่แบบเลือกเฉพาะส่วน.

  6. กลยุทธ์การควบคุมใดเหมาะกับการปรับโครงสร้างโค้ดโดยคงพฤติกรรมด้วยความช่วยเหลือของ AI

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

  7. สิ่งใดทำให้การสร้างโค้ดคาดการณ์ได้ แทนที่จะเพียงควบคุมได้

    กำหนดพันธสัญญาการคงรักษาที่สังเกตได้และการตรวจสอบเพื่อการยอมรับก่อนเลือกตัวสร้าง ความสามารถในการคาดการณ์ขึ้นอยู่กับว่าสิ่งใดยังคงเสถียรหลังการถอดรหัสและการทวนสอบ ไม่ได้ขึ้นอยู่เพียงว่าพรอมต์ มาสก์ ไวยากรณ์ หรือโค้ดแฝงถูกตรึงไว้หรือไม่ กำหนดข้อตกลงการรักษา.

สิ่งที่การทดลองปัจจุบันแสดงให้เห็น — และสิ่งที่ยังมิได้แสดง

ใน การควบคุมที่ตรวจสอบได้สำหรับการสร้างซอฟต์แวร์ขึ้นใหม่โดยคงโครงสร้าง, VQ-VAE แบบลำดับชั้นแมปฟังก์ชัน Python ขนาด 64 โทเค็นไปยังตำแหน่งไม่ต่อเนื่องระดับบน 16 ตำแหน่งและระดับล่าง 32 ตำแหน่ง การล็อกรหัสระดับบนสี่รหัสเพิ่มอัตราการแจงจาก 0.453 ถึง 0.591, ขณะที่ตำแหน่งที่ไม่ได้ล็อกยังคงเปลี่ยนแปลงในอัตรา 0.936 และตัวอย่างแบบมีเงื่อนไขยังคงมีค่า มีความไม่ซ้ำกัน 0.998.

นี่เป็นหลักฐานของภาวะได้อย่างเสียอย่างระหว่างเสถียรภาพกับอิสระที่วัดได้ในบริบทขนาดเล็กหนึ่งบริบท มิใช่การรับประกันการคง AST อย่างแม่นตรง ความสมมูลเชิงความหมาย ความถูกต้องเชิงการทำงาน ความสำเร็จในการซ่อมแซม หรือพฤติกรรมในระดับคลังโค้ด

งานศึกษาที่ทำควบคู่กัน จุดที่คุณภาพสูญเสียไปในการสร้างข้อความสั้นแบบบีบอัด ให้บทเรียนสำคัญด้านการประเมินว่า ตัวชี้วัดตัวแทนในปริภูมิแฝงที่ดีขึ้นไม่จำเป็นต้องทำให้ผลลัพธ์หลังถอดรหัสดีขึ้น ควรตรวจสอบตัวแทน การสร้าง และพฤติกรรมหลังถอดรหัสเป็นคนละขั้น

สำหรับกระบวนการตัดสินใจที่นำกลับมาใช้ได้ โปรดดูคู่มือประกอบเรื่อง การแยกการสูญเสียจากโคเดกออกจากการสูญเสียจากตัวสร้าง.

ความเข้าใจผิดที่พบบ่อย

“แจงได้จึงถูกต้อง”

การแจงพิสูจน์ได้เพียงความถูกต้องตามวากยสัมพันธ์ โปรแกรมอาจยังคงไม่เป็นไปตามการทดสอบ ข้อตกลง หรือเจตนาที่กำหนด

“รหัสระดับหยาบคือโหนด AST”

ไม่ควร เว้นแต่จะแสดงให้เห็นการจัดแนวอย่างชัดเจนแล้ว โค้ดที่เรียนรู้อาจผสมปัจจัยระดับพื้นผิวและเชิงโครงสร้างหลายประการเข้าด้วยกัน

“ตัวแปรแฝงที่ล็อกไว้หมายถึงข้อความต้นฉบับไม่เปลี่ยนแปลง”

การถอดรหัสเป็นกระบวนการทั่วทั้งข้อมูลที่ได้จากการเรียนรู้ การตรึงตำแหน่งตัวแปรแฝงอาจเพิ่มเสถียรภาพ แต่ไม่รับประกันว่าจะได้ช่วงข้อความที่เหมือนเดิมทุกประการ

“เปลี่ยนแปลงน้อยกว่าย่อมดีกว่าเสมอ”

ตัวแก้ไขที่คัดลอกอินพุตย่อมมีเสถียรภาพสมบูรณ์ แต่ไม่มีความคืบหน้าในการทำงาน จึงต้องวัดทั้งความเฉพาะที่และความสำเร็จของการแก้ไขควบคู่กัน

เนื้อหาที่ควรอ่านต่อ

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

  1. Self-Edit: Fault-Aware Code Editor for Code Generation

    ถือว่าการสร้างเป็นกระบวนการที่แก้ไขได้ และใช้ข้อผิดพลาดที่ตรวจพบเป็นแนวทางในการแก้ไข

  2. Coeditor: การใช้ประโยชน์จากการเปลี่ยนแปลงตามบริบทเพื่อแก้ไขโค้ดอัตโนมัติหลายรอบ

    สร้างแบบจำลองการเปลี่ยนแปลงโค้ดตามบริบทข้ามรอบการแก้ไข แทนการสร้างใหม่ทั้งหมดตั้งแต่ต้น

  3. PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair

    กำหนดการคงรักษาและการเปลี่ยนแปลงให้น้อยที่สุดไว้อย่างชัดเจนในการฝึกเพื่อซ่อมแซมโปรแกรม

  4. การถอดรหัส Diffusion LLMs ภายใต้ข้อจำกัดด้วยไวยากรณ์ไม่พึ่งบริบท

    แสดงให้เห็นว่าข้อจำกัดเชิงรูปนัยสามารถให้หลักประกันด้านวากยสัมพันธ์ระหว่างการถอดรหัสแบบแพร่ได้อย่างไร

  5. Neural Discrete Representation Learning

    นำเสนอ VQ-VAE ซึ่งเป็นกลไกพื้นฐานสำหรับการแทนข้อมูลแฝงแบบไม่ต่อเนื่องที่เรียนรู้ได้

  6. Simple and Effective Masked Diffusion Language Models

    นำเสนอกรอบการแพร่แบบไม่ต่อเนื่องที่มีมาสก์ ซึ่งใช้เป็นตัวสร้างในปริภูมิแฝงสำหรับการศึกษาวินิจฉัยที่จัดทำควบคู่กัน

  7. การศึกษาเชิงประจักษ์ว่าด้วยศักยภาพของ LLM ในการปรับโครงสร้างซอฟต์แวร์โดยอัตโนมัติ

    ตรวจหาการปรับโครงสร้างโค้ดที่ไม่ปลอดภัยซึ่ง LLM เสนอ และประเมินการนำการแปลงที่ตรวจพบไปใช้อีกครั้งผ่านเอนจินปรับโครงสร้างโค้ดที่เชื่อถือได้

  8. SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring

    ประเมินการปรับโครงสร้างโค้ดระดับคลังซึ่งรักษาพฤติกรรม โดยใช้การคอมไพล์ การทดสอบ และการตรวจจับการปรับโครงสร้างโค้ด

  9. EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding

    นำส่วนของซอร์สโค้ดที่ไม่เปลี่ยนแปลงกลับมาใช้และทำนายตำแหน่งแก้ไข แทนการมองว่าการแก้ไขคือการสร้างแบบถดถอยอัตโนมัติขึ้นใหม่ทั้งหมด

  10. Hydra: Efficient, Correct Code Generation via Checkpoint-and-Rollback Support

    ใช้การตรวจสอบแบบสถิต จุดตรวจ และการย้อนกลับแบบเจาะจง เพื่อหลีกเลี่ยงการสร้างส่วนนำหน้าที่ถูกต้องอยู่แล้วซ้ำอีกหลังเกิดข้อผิดพลาด

สรุปโดยย่อ

การสร้างโค้ดใหม่เฉพาะส่วนเป็นข้อตกลงระหว่าง การเปลี่ยนแปลง และ การคงรักษา. ตัวแปรแฝงไม่ต่อเนื่องแบบลำดับชั้นเป็นวิธีหนึ่งที่ตรวจสอบได้ในการระบุข้อตกลงดังกล่าว แต่ตัวแทนนี้จะมีประโยชน์ก็ต่อเมื่อโปรแกรมที่ถอดรหัสแล้วได้รับการประเมินด้านความเฉพาะที่ วากยสัมพันธ์ โครงสร้าง พฤติกรรม ความหลากหลาย และความไม่แน่นอน

สิ่งพิมพ์ในทิศทางการวิจัยนี้