ทุกสิ่งที่คุณต้องรู้เกี่ยวกับ Github Copilot
Copilot เป็นนวัตกรรมใหม่ล่าสุดจาก OpenAI บริษัท AI ในซานฟรานซิสโก ที่เพิ่งได้รับเงินลงทุน 1 พันล้านดอลลาร์จาก Microsoft โดยมีตัว GPT3 (Generative Pre-trained Transformer) ซึ่งเป็นโมเดลภาษารุ่นที่สามของ OpenAI ซึ่งอิงตามโครงข่ายประสาทเทียมขนาดใหญ่(Huge Neural Network ) ที่มีพารามิเตอร์ 175 พันล้านตัวซึ่งได้รับการฝึกฝนบนคลังข้อความขนาดใหญ่ (Big Data) ที่เป็นข่าวพาดหัวเมื่อเร็วๆ นี้
หลายคนได้ทดลองใช้ OpenAI GPT-3 API และต้องบอกว่าน่าประทับใจมาก มีความสอดคล้องกันมากกว่าระบบภาษา AI ใดๆ ที่ใครหลาย ๆ คนเคยลองใช้ พัฒนาจาก GPT-2
GPT3 สามารถสร้างข้อความที่เหมือนจริงอย่างน่าทึ่งเพื่อตอบสนองต่อสิ่งเร้าพื้นฐาน มีหลายบริษัทไดสร้างผลิตภัณฑ์ที่น่าสนใจมากมายโดยใช้ API ของ OpenAI รวมถึงเสิร์ชเอ็นจิ้นแบบคำถาม(question-based search engine) เช่น แชทบอท(Chatbot) ที่ให้คุณพูดคุยกับบุคคลสำคัญทางประวัติศาสตร์ และแม้แต่การผลิตแทปกีตาร์ และอีกสาระพัดข้อมูล
ตัว Copilot สร้างขึ้นบน Codex ซึ่งเป็นโมเดลใหม่ที่อิงตาม GPT3 ที่ได้รับการฝึกอบรม(Training Model) เกี่ยวกับโค้ดโอเพ่นซอร์สจำนวนมหาศาลจาก GitHub เชื่อมต่อโดยตรงกับ VSCode เพื่อสร้างคำแนะนำโดยอิงตามบริบทปัจจุบัน (เช่น code ของคุณ) และ "ความรู้" ที่ได้รับในระหว่างกระบวนการฝึก(Train)
นอกจากนี้ จะสังเกตได้ว่าการลงทุนเชิงกลยุทธ์ของ Microsoft (การสนับสนุน OpenAI, การซื้อ GitHub และการพัฒนา VSCode) รวมกันเพื่อสร้างสินค้าใหม่ในอนาคตที่สุดยอดอย่างแน่นอน ตอนนี้ Google เลยกลัว เพราะจริง ๆ ทาง Google ก็มีการพัฒนาเรื่อง AI มาก่อนแต่ไม่ได้เผยแพร่และให้บริการแบบสาธารณะเพราะยังทดสอบอยู่ และเป็นข่าวแล้วใน Project LaMDA ซึ่งเคยมีข่าววิศวกร Google หลุดปากบอกว่าโปรเจค LaMDA ระบบ AI เริ่มมีความรู้สึกนึกคิด (ดีเกินคาดจนน่ากลัว)
Copilot สามารถพาคุณไปได้ไกลแค่ไหน?
ในขณะนี้ คำตอบคือ “ไม่ไกลมาก” แม้จะมีคำศัพท์ต่างๆ เช่น "ฉลาด(intelligence)" "บริบท (contextual )" และ "ซินธิไซเซอร์(synthesizer)" แต่ Copilot ก็มีความเข้าใจที่จำกัดเกี่ยวกับจุดมุ่งหมายที่แท้จริงของคุณและสิ่งที่คุณคิดว่า Code ของคุณต้องทำให้สำเร็จ
เมื่อคำนวณคำแนะนำ Copilot จะพิจารณาไฟล์ปัจจุบันของคุณ จะไม่ดูว่ารหัส(code) ของคุณถูกใช้งานอย่างไรตลอดทั้งโปรแกรมของคุณ แม้ว่าแนวคิดเบื้องหลัง ไฟล์จะยังคงเหมือนเดิม แต่มุมมองของ AI ต่องานของคุณอาจแตกต่างจากของคุณอย่างมาก และอาจแตกต่างกันไปในแต่ละไฟล์ (ประมาณว่าคุณคิดว่ามันควรเป็นแบบนี้ แต่ AI แนะนำแบบนี้)
ผลลัพธ์ของ Copilot ไม่รับประกันว่าจะแสดงถึงวิธีการที่ “เหมาะสมที่สุด” หรือแม้แต่โค้ดที่ใช้งานได้ ตามข้อมูลของ GitHub คุณอาจพบช่องโหว่ด้านความปลอดภัย บรรทัดที่ใช้คุณสมบัติภาษาที่ล้าสมัยหรือเลิกใช้งาน หรือรหัส(code) ที่ไม่ทำงานหรือไม่สมเหตุสมผล เพื่อให้แน่ใจว่าโครงการของคุณยังคงคอมไพล์และรัน คุณควรตรวจสอบคำแนะนำของ Copilot แต่ละข้อที่คุณใช้
จุดประสงค์ที่แท้จริงของ Copilot ในกระบวนการพัฒนา มีความชัดเจน: เป็นเทคโนโลยีช่วยเหลือ ไม่ใช่หุ่นยนต์ที่แท้จริง ออกแบบมาเพื่อทำให้เรื่องธรรมดาง่ายขึ้นเล็กน้อย พิจารณาว่าเป็นเนวิเกเตอร์หรือเพื่อนสนิทแทนที่จะเป็นนักพัฒนาที่รอบรู้เรื่องการพัฒนาโค้ดให้คุณ
Copilot ไม่สามารถปรับขนาดได้
เมื่อคุณอนุญาตให้ Copilot ช่วยคุณในการเขียนฟังก์ชันที่ตอบสนองต่อการใช้งานบ่อยๆ ก็ถือว่าดีที่สุดแล้ว สิ่งที่ไม่สามารถทำได้คือเข้าใจบริบทของโค้ดของคุณโดยรวม ขนาดของ Copilot ถูกจำกัด โดยปราศจากความสามารถในการเข้าใจเป้าหมายของคุณอย่างแท้จริง (คุณก็ต้องไปหาวิดี Optimize Code หรือจัดการอะไรที่มันเขียนยาวเกินหรือหากต้องการเพิ่มเนื้อหาใน source code เอง)
จากข้อมูลของ GitHub บริษัทมีเป้าหมายที่จะทำให้ Copilot ฉลาดขึ้นและมีประโยชน์มากขึ้น อย่างไรก็ตาม ยังไม่ชัดเจนว่าจะเพิ่มงานได้อย่างไรจนกว่าจะสามารถดูโปรเจ็กต์ทั้งหมดของคุณ ไม่ใช่แค่ไฟล์เดียว Copilot คือการเติมข้อความอัตโนมัติที่ได้รับการยกย่องในเวอร์ชันปัจจุบัน คุณสามารถยอมรับคำแนะนำสำหรับฟังก์ชันต่างๆ แทนการคลิกแท็บเพื่อป้อนชื่อฟังก์ชันไลบรารีมาตรฐานโดยอัตโนมัติ
ในเว็บไซต์การเขียนโปรแกรมเช่น Stack Overflow มีวิธีแก้ปัญหาทางเทคนิคที่เป็นนามธรรมอยู่แล้ว Copilot ช่วยคุณประหยัดเวลาโดยทำให้กระบวนการค้นหาคำถาม ตรวจสอบคำตอบ และคัดลอกและวางโค้ดเป็นไปโดยอัตโนมัติ หลังจากที่คุณตรวจสอบแล้วว่าคำแนะนำของ Copilot ใช้ได้ผล คุณจะต้องหาวิธีรวมโซลูชันเข้ากับระบบโดยรวมของคุณเอง
Copilot ไม่ใช่การเขียนโปรแกรมจริงๆ กรุณาตรวจสอบสิ่งที่คุณเขียน อนุมานสิ่งที่คุณพยายามทำให้สำเร็จ จากนั้นพยายามปะติดปะต่อบางสิ่งจากคำตอบที่สอนก่อนหน้านี้ Copilot ให้บริการคุณมากกว่าวิธีอื่นๆ มันไม่สามารถคิดอย่างสร้างสรรค์ หรือเสนอสถาปัตยกรรมระดับสูง หรือสร้างระบบที่เป็นหนึ่งเดียวได้ คำแนะนำแต่ละรายการมีอยู่ในตัวเองและได้มาจากโค้ดในไฟล์ต้นฉบับที่เกี่ยวข้องเท่านั้น
Copilot อ้างอิงจาก GitHub และที่แน่ ๆ มันพึ่งพาคุณอย่างสมบูรณ์ เมื่อโค้ดฐาน (Codebase) ของคุณได้รับการจัดระเบียบตามตรรกะ(Logical) เป็นฟังก์ชันแยกจากกันด้วยการพิมพ์ ความคิดเห็น และส่วนเอกสารอย่างชัดเจน เครื่องมือนี้ก็ทำงานได้ดี คุณจะต้องแนะนำ Copilot ด้วยการเขียนโค้ดคุณภาพสูง ถ้าคุณต้องการผลลัพธ์ที่ดีที่สุด
ข้อตกลงกับใบอนุญาตคืออะไร?
Copilot ได้รับการฝึก(Train) เกี่ยวกับโครงการ GitHub สาธารณะหลายรายการพร้อมใบอนุญาตต่างๆ ตาม GitHub นี้ถือเป็น "การใช้งานที่เหมาะสม" ของโครงการดังกล่าว สิ่งที่ไม่ชัดเจนคือสิ่งที่คุณจะต้องรับผิดชอบหากคุณยอมรับคำแนะนำของ Copilot
ผลลัพธ์ของ Copilot "เป็นของคุณ" และ "คุณต้องรับผิดชอบ" ตาม GitHub เป็นการระบุอย่างชัดเจนว่าคุณไม่จำเป็นต้องรับทราบ Copilot หรือแหล่งข้อมูลอื่นใดหากคุณใช้ตัวอย่างข้อมูลที่แนะนำ Copilot กำลังวางตลาดในฐานะ "ตัวสังเคราะห์รหัส (code synthesizer)" ที่สร้างผลลัพธ์ที่สร้างสรรค์แทนที่จะเป็นเครื่องมือค้นหาสำหรับตัวอย่างที่จัดทำดัชนี
นี่คือปัญหาเมื่อเริ่มต้นใช้ Copilot ยังคงต้องปรับเปลี่ยนการมีส่วนร่วมในการจะสร้างส่วนของรหัส(Code) ได้อย่างถูกต้อง สิ่งนี้อาจทำให้โครงการของคุณประสบปัญหาอย่างมาก ทั้งนี้ขึ้นอยู่กับการอนุญาตของคนในทีมด้วย เนื่องจาก Copilot ได้รับการฝึกอบรม(Train) ในโครงการ GitHub ข้อมูลส่วนบุคคลอาจถูกนำเข้าสู่ไฟล์ต้นฉบับของคุณด้วย
สิ่งเหล่านี้น่าจะเป็นเหตุการณ์ที่ไม่ปกติ หากบริบทของโค้ดโดยรวมของทีมไม่ดีหรือไม่ชัดเจน และพึงระวังเรื่อง GPL-licensed
เนื่องจากงานลอกเลียนแบบภายใต้ GPL และใบอนุญาตอื่นๆ ที่เทียบเคียงได้จะต้องรวมการอนุญาตแบบเดียวกัน การใส่รหัส GPL ลงในผลิตภัณฑ์เชิงพาณิชย์ถือเป็นการละเมิดใบอนุญาต ด้วยเหตุนี้ การใช้ Copilot จึงมีผลทางกฎหมายที่สำคัญซึ่งคุณควรพิจารณาก่อนติดตั้งใช้งาน การยอมรับคำแนะนำอาจส่งผลให้เกิดการละเมิดลิขสิทธิ์โดยไม่ได้ตั้งใจ เนื่องจาก Copilot ดูเหมือนจะปล่อยโค้ดคำต่อคำโดยไม่เปิดเผยใบอนุญาตที่มาพร้อมกับตัวอย่าง
สิ่งนี้เหล่านี้ควรจะต้องพิสูจน์โดยปราศจากข้อสงสัยว่าการเปิดใช้ตัว Copilot จะไม่สามารถมาแทนที่นักพัฒนาที่เป็นมนุษย์ได้ รหัส(code) ไม่รับประกันว่าจะมีความเกี่ยวข้อง และอาจมีข้อบกพร่องหรือเก่า ซึ่งก่อให้เกิดอันตรายทางกฎหมายได้เช่นกัน
บทสรุป
Copilot เป็นโครงการขนาดใหญ่ที่จุดประกายการถกเถียงมากมาย หลายคนมีความคิดเห็นที่รุนแรงเกี่ยวกับเรื่องนี้ ดังที่เห็นได้จากจำนวนการถกเถียง เป็นเวลานานแล้วที่เครื่องมือใหม่นี้สร้างความตื่นเต้นและวิตกอย่างมากในวันแรกที่เปิดใช้งาน
Copilot นั้นน่าดึงดูดเพราะมันทำให้นักพัฒนาสมัยใหม่หลายคนสะดวก ทำงานเร็ว และบางคนก็คิดว่ามันน่ารำคาญ ซึ่งโปรแกรมเมอร์ส่วนใหญ่ (แต่ไม่ใช่ทั้งหมด) ตระหนักถึงความไร้ประสิทธิภาพของการเขียนโค้ด "สำเร็จรูป" ซึ่งไม่เกี่ยวข้องกับโครงการของตนอย่างแท้จริง(ไม่ได้ใช่กับเขาแต่ก็มักไปมองเป็นเรื่องของตน) หากคุณพิจารณา Copilot อย่างคุ้มค่า คุณจะเห็นว่าตอนนี้พวกเขามีโซลูชันที่ช่วยให้พวกเขาสามารถมุ่งเน้นไปที่แง่มุมที่สร้างสรรค์ของธุรกิจได้มากขึ้น
ปัญหาของ Copilot คือ วิธีการแบบเบ็ดเสร็จของ GitHub ในการฝึกอบรมโมเดล การใช้งานในโลกแห่งความเป็นจริงของ Copilot จะถูกขัดขวางโดยการรวมรหัสลิขสิทธิ์ GPL และขาดการทดสอบเอาต์พุตใดๆ ซึ่งไม่ชัดเจนว่าการตัดสินใจของ GitHub ในการฝึกอบรมโมเดลในรหัสสาธารณะนั้นเข้าข่ายเป็นการใช้งานโดยชอบหรือไม่ เป็นไปได้ อย่างน้อยก็ในบางแห่งที่อาจจะถูกต้องที่ขออนุญาตแล้ว
นอกจากนี้ เนื่องจาก GitHub ไม่สามารถรับประกันได้ว่ารหัส Copilot ใช้งานได้จริง นักพัฒนาจึงต้องดำเนินการด้วยความระมัดระวังและประเมินทุกอย่างที่สร้างขึ้น คำมั่นสัญญาของ Copilot รวมถึงการให้ความช่วยเหลือนักพัฒนาที่ไม่มีประสบการณ์ในการดำเนินการ แต่สิ่งนี้จะไม่สามารถทำได้หากมีการแนะนำและยอมรับโค้ดที่มีข้อบกพร่อง
สุดท้ายนี้ Copilot ไม่ได้อธิบายว่าคำแนะนำของมันทำงานอย่างไรหรือเพราะเหตุใด หากเทคโนโลยีจะเข้ามาแทนที่นักพัฒนาที่เป็นมนุษย์จริง ๆ เทคโนโลยีนั้นจะต้องอธิบายว่าโซลูชันทำงานอย่างไรและให้ความโปร่งใสในการตัดสินใจ นักพัฒนาไม่สามารถไว้วางใจเครื่องมือได้ 100% พวกเขาจะต้องจับตาดูและเปรียบเทียบทางเลือกอื่นไป(Alternative Tools) ด้วย
Copilot ในฐานะเครื่องมือให้คำปรึกษาถูกขัดขวางด้วยวิธีการและเหตุผลต่าง ๆ ซึ่งเป็นปัญหาหลักที่นักพัฒนาต้องเผชิญในช่วงต้นของอาชีพโปรแกรมเมอร์หากนำมาใช้ ทุกคนสามารถคัดลอกซอร์สโค้ดจากโครงการสาธารณะ เอกสาร เพื่อนร่วมงาน หรือ Copilot แต่การรู้ว่าทำไมโซลูชันถึงได้ผลคือสิ่งที่จะขับเคลื่อนคุณให้ก้าวไปข้างหน้าในอาชีพของคุณ (เอาง่าย ๆ ว่าคนรู้คำสั่ง ความหมาย และวิธีการใช้ต่าง ๆ ไม่ใช่ Copy วางแล้วจบ)
Copilot ไม่ได้กล่าวถึงสิ่งนี้ในเวอร์ชันปัจจุบัน ดังนั้นคุณจะต้องค้นหาว่าโค้ดที่แทรกนั้นทำงานอย่างไร แม้แต่นักพัฒนาที่ใช้ Stack Overflow ทุกวันก็จะดีขึ้นเพราะพวกเขาจะอ่านคำตอบและเรียนรู้เหตุผลที่อยู่เบื้องหลังการแก้ปัญหา Copilot เป็นกล่องดำ(Black Box) ที่สามารถตีความได้ว่าเป็นที่เก็บแนวคิดโค้ดไร้ที่ติ (flawless code ideas) อย่างไรก็ตาม หลักฐานจนถึงตอนนี้บ่งชี้ว่าไม่เป็นเช่นนั้น