# การดัดแปลงโค้ดเฉพาะส่วนด้วยแบบจําลองเชิงกําเนิด

Canonical HTML: https://aogavrilov.com/th/research-notes/localized-code-modification-generative-models/

Document language: th

บันทึกการวิจัย

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

เผยแพร่แล้ว 30 กรกฎาคม 2026 [Alexey Gavrilov](https://aogavrilov.com/about/)

คําตอบโดยตรง

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

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

## เหตุผลที่ความแตกต่างนี้สําคัญ

วิธีการและหลักประกันที่กล่าวอ้างต้องอ้างอิงขอบเขตที่สังเกตได้เดียวกัน

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

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

## กระบวนการเชิงปฏิบัติ

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

## หลักฐานที่ต้องกําหนดให้มี

ความหนักแน่นของข้ออ้างขึ้นอยู่กับสมบัติที่วัดภายหลังการสร้างหรือการถอดรหัส

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

### สิ่งที่งานวิจัยซึ่งเชื่อมโยงไว้รายงาน

- การทดลองที่เชื่อมโยงไว้บีบอัดฟังก์ชัน Python ขนาด 64 โทเคนเป็นตําแหน่งไม่ต่อเนื่องแบบลําดับชั้น และสร้างตําแหน่งแฝงที่เลือกขึ้นใหม่ภายใต้ข้อจํากัดบางส่วน
- การตรึงโค้ดระดับบนสี่ตําแหน่งเพิ่มอัตราการแจงจาก 0.453 เป็น 0.591 ขณะที่ตําแหน่งซึ่งไม่ถูกตรึงเปลี่ยนแปลงในอัตรา 0.936 และตัวอย่างแบบมีเงื่อนไขยังมีความเป็นเอกลักษณ์ 0.998
- การวัดเหล่านั้นเผยภาวะได้อย่างเสียอย่างระหว่างเสถียรภาพกับอิสระเหนือระดับโทเค็น แต่มิได้พิสูจน์การคงไว้ซึ่งช่วงซอร์ส AST ความหมาย หรือพฤติกรรมอย่างแม่นตรง

[อ่านภาพรวมสิ่งพิมพ์](https://aogavrilov.com/th/publications/inspectable-control/) [ค้นหาในเนื้อหาฉบับเต็มของบทความ](https://aogavrilov.com/publications/inspectable-control/full-text/)

## ขอบเขตของการศึกษา

- รหัสแฝงที่ล็อกไว้ไม่ได้เป็นโหนด AST ช่วงซอร์สที่ได้รับการปกป้อง หรืออินแวเรียนต์เชิงรูปนัยโดยอัตโนมัติ
- อัตราการแจงยืนยันความถูกต้องตามวากยสัมพันธ์ มิใช่ความถูกต้องเชิงหน้าที่หรือความสําเร็จของการซ่อมแซม
- หลักฐานที่รายงานมาจากฟังก์ชัน Python ขนาดสั้นที่ผ่านการประมวลผลล่วงหน้า และไม่ได้ยืนยันพฤติกรรมระดับคลังโค้ด

## แหล่งข้อมูลหลักและงานที่เกี่ยวข้อง

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

1. [Inspectable Control for Structure-Preserving Software Regeneration](https://aogavrilov.com/th/publications/inspectable-control/) บทความหลักและการทดลองปริภูมิแฝงแบบลําดับชั้นภายใต้ขอบเขตจํากัด
2. [EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding](https://arxiv.org/abs/2506.02780) การถอดรหัสที่มุ่งเน้นการแก้ไข โดยนําส่วนของต้นฉบับที่ไม่เปลี่ยนแปลงกลับมาใช้
3. [PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair](https://arxiv.org/abs/2604.03113) กําหนดการคงรักษาและการเปลี่ยนแปลงให้น้อยที่สุดไว้อย่างชัดเจนในการฝึกเพื่อซ่อมแซมโปรแกรม

ดูแลโดย Alexey Gavrilov . หน้านี้สรุปหลักฐานที่มีอยู่และไม่ได้เพิ่มผลการทดลองใดนอกเหนือจากแหล่งอ้างอิง
