ข้ามไปยังเนื้อหาหลัก
OpenAI

ยกระดับการเขียนโค้ดในภาษาโปรแกรมที่มีแหล่งข้อมูลจำกัด

กำลังโหลด…

ความก้าวหน้าล่าสุดของโมเดลเราช่วยเพิ่มความสามารถในการสร้างและย้ายซอฟต์แวร์ที่ใช้ภาษาโปรแกรมซึ่งมีแหล่งข้อมูลจำกัด เช่น COBOL, Fortran และ Visual Basic ภาษาเหล่านี้มีโค้ดและเอกสารให้โมเดลเรียนรู้น้อยกว่าภาษาอย่าง Python และ JavaScript แต่กลับรองรับโครงสร้างพื้นฐานที่สำคัญและบริการจำเป็นทั่วโลก COBOL รองรับ⁠(เปิดในหน้าต่างใหม่)ระบบธนาคารออนไลน์มากกว่า 40% ธุรกรรมบัตรเครดิตที่ทำ ณ จุดบริการ 80% และธุรกรรมผ่าน ATM 95% ส่วน Fortran ใช้ในการพยากรณ์อากาศ⁠(เปิดในหน้าต่างใหม่) และการวิเคราะห์ความปลอดภัยของเครื่องปฏิกรณ์นิวเคลียร์⁠(เปิดในหน้าต่างใหม่) การพัฒนาให้ AI ทำงานกับภาษาเหล่านี้ได้ดียิ่งขึ้นและทันสมัยยิ่งขึ้น อาจช่วยให้ทีมดูแลและปรับปรุงซอฟต์แวร์ที่จำเป็นต่อการให้บริการได้ดียิ่งขึ้น

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

เพื่อวัดความก้าวหน้า เราได้พัฒนาชุดการประเมินขึ้นสองชุด ได้แก่ MultiLangBench ซึ่งทดสอบว่าโมเดลสามารถสร้างเอนจินฐานข้อมูลที่เข้ากันได้กับ SQLite ขึ้นใหม่ตั้งแต่ต้น โดยใช้ภาษาโปรแกรมที่แตกต่างกัน 20 ภาษาได้หรือไม่ และการประเมินการย้ายระบบ COBOL ซึ่งทดสอบว่าโมเดลสามารถย้ายโปรแกรมที่มีอยู่ไปยังภาษาอื่น โดยยังคงรักษาพฤติกรรมการทำงานเดิมไว้ได้หรือไม่ การประเมินทั้งสองชุดนี้ทดสอบความสามารถสองด้านที่เสริมกัน ได้แก่ การสร้างซอฟต์แวร์ใหม่ และการรักษาพฤติกรรมการทำงานของซอฟต์แวร์ที่มีอยู่ให้คงเดิม

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

ในการประเมิน MultiLangBench นั้น GPT‑6 Astra มีอัตราการผ่านการทดสอบเฉลี่ย 87.4% ในภาษาโปรแกรม 20 ภาษา เพิ่มขึ้นจาก 26.8% ของ GPT‑5.6 Sol โดยทำได้ดีขึ้นในทุกภาษาที่ทดสอบ GPT‑6 Luna ก็ทำได้ดีกว่า GPT‑5.6 Sol เช่นกัน โดยมีอัตราการผ่านการทดสอบ 40.3% และมีค่าใช้จ่าย API โดยประมาณต่ำลงราว 78%

ในการประเมินการย้ายโค้ด COBOL ของเรา GPT‑6.1 Sol มีความแม่นยำ 86.6% เมื่อใช้การให้เหตุผลระดับต่ำ เทียบกับ GPT‑5.6 Sol ที่ทำได้เพียง 5.4% โดยมีค่าใช้จ่ายน้อยลง 39% เมื่อใช้การให้เหตุผลระดับที่สูงขึ้น ความแม่นยำเพิ่มเป็น 97.9% ซึ่งเกือบถึงเพดานของการประเมินนี้

ผลลัพธ์เหล่านี้แสดงให้เห็นว่าโมเดลของเราทำงานกับภาษาโปรแกรมที่หลากหลายได้ดีขึ้นอย่างมาก และคุ้มค่ามากขึ้นด้วย

1. การสร้าง SQLite ขึ้นใหม่ตั้งแต่ต้น (MultiLangBench)

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

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

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

เมื่อใช้การให้เหตุผลระดับสูงสุด GPT‑6 Astra มีอัตราการผ่านการทดสอบเฉลี่ย 87.4% ใน 20 ภาษา เพิ่มขึ้นจาก 26.8% ของ GPT‑5.6 Sol ผลลัพธ์ดีขึ้นในทุกภาษาที่ทดสอบ รวมถึง COBOL (จาก 10.9% เป็น 72.1%) OCaml (จาก 25.6% เป็น 85.8%) Fortran (จาก 21.4% เป็น 83.5%) และ Visual Basic (จาก 27.5% เป็น 89.4%) Astra ได้คะแนนมากกว่า 83% ใน 19 จาก 20 ภาษา โดย COBOL ยังคงเป็นภาษาที่ยากที่สุด ซึ่งได้คะแนน 72%

GPT‑6 Luna เป็นตัวเลือกที่มีค่าใช้จ่ายต่ำกว่า และยังทำได้ดีกว่า GPT‑5.6 Sol ในทุกภาษาที่ทดสอบ เมื่อใช้การให้เหตุผลระดับสูงสุด โมเดลนี้มีอัตราการผ่านการทดสอบเฉลี่ย 40.3% ภาษาที่ทำได้ดีขึ้น ได้แก่ COBOL (จาก 10.9% เป็น 17.1%) OCaml (จาก 25.6% เป็น 34.1%) Fortran (จาก 21.4% เป็น 31.4%) และ Visual Basic (จาก 27.5% เป็น 41.6%) ผลลัพธ์ที่ดีขึ้นนี้มีค่าใช้จ่าย API เฉลี่ยโดยประมาณ 0.77 ดอลลาร์ต่อตัวอย่าง เทียบกับ 3.48 ดอลลาร์สำหรับ GPT‑5.6 Sol หรือต่ำลงราว 78%

เรากำลังเผยแพร่ชุดเครื่องมือประเมินและชุดทดสอบ MultiLangBench บน GitHub⁠(เปิดในหน้าต่างใหม่) พร้อมผลลัพธ์ของแต่ละภาษา นักพัฒนาสามารถตรวจสอบว่าการประเมินนี้ได้ทดสอบอะไรบ้าง ดูประสิทธิภาพในภาษาที่ตนใช้ และระบุจุดที่ยังขาดซึ่งสำคัญต่องานของตน

2. การย้ายโค้ดเบส COBOL

การประเมินชุดที่สองของเราให้โมเดลย้ายโปรแกรม COBOL ไปเป็น C++ Java Kotlin Python หรือ Rust โดยคงการทำงานของแต่ละโปรแกรมไว้

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

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

ในการประเมินนี้ GPT‑6.1 Sol มีความแม่นยำ 86.6% เมื่อใช้การให้เหตุผลระดับต่ำ เทียบกับ GPT‑5.6 Sol ที่ได้ 5.4% ในการตั้งค่าเดียวกัน โดยมีค่าใช้จ่าย API เพียง 61% ของ GPT‑5.6 Sol เมื่อใช้การให้เหตุผลระดับที่สูงขึ้น ความแม่นยำเพิ่มเป็น 97.9% ซึ่งใกล้ถึงเพดานของการประเมินนี้ ผลการประเมินเหล่านี้แสดงให้เห็นถึงความก้าวหน้าในการช่วยให้ทีมต่างๆ ย้ายโค้ดได้แม่นยำยิ่งขึ้น และมีค่าใช้จ่ายที่ต่ำลง ขณะปรับปรุงซอฟต์แวร์ที่ธุรกิจของตนต้องพึ่งพาให้ทันสมัยยิ่งขึ้น

ยกระดับความสามารถสำหรับซอฟต์แวร์ขององค์กร

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

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

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