การเปิดตัว smartfunc ไลบรารี Python ที่แปลง docstrings ให้กลายเป็นฟังก์ชันที่ขับเคลื่อนด้วย LLM ได้จุดประกายการอภิปรายอย่างคึกคักในหมู่นักพัฒนาเกี่ยวกับแนวทางที่เหมาะสมที่สุดในการผสานรวมโมเดลภาษาขนาดใหญ่เข้ากับกระบวนการเขียนโปรแกรม การถกเถียงนี้ชี้ให้เห็นคำถามพื้นฐาน: ควรมอง LLM เป็นคอมไพเลอร์สำหรับข้อกำหนดระดับสูงหรือเป็นผู้ช่วยที่ร่วมมือในกระบวนการพัฒนา?
กระบวนทัศน์แบบคอมไพเลอร์ vs. ผู้ช่วย
การสนทนาในชุมชนเผยให้เห็นว่านักพัฒนาหลายคนชอบที่จะมอง LLM เป็นคอมไพเลอร์มากกว่าเป็นนักพัฒนารุ่นน้อง แนวทางนี้วาง LLM ในฐานะเครื่องมือที่แปลงข้อกำหนดระดับสูง (เช่น docstrings) ให้เป็นโค้ดที่ใช้งานได้ แทนที่จะเป็นผู้ร่วมงานที่สร้างโค้ดผ่านการสนทนา ผู้แสดงความคิดเห็นคนหนึ่งได้แสดงความรู้สึกนี้อย่างชัดเจน โดยแนะนำว่าการมอง LLM เหมือนคอมไพเลอร์เป็นโมเดลความคิดที่สามารถขยายขนาด ต่อยอด และประกอบเข้าด้วยกันได้มากกว่าการมองว่าเป็นผู้ช่วยในการพัฒนา
อย่างไรก็ตาม Simon Willison (ผู้สร้างไลบรารี llm ที่เป็นพื้นฐานของ smartfunc) ได้ชี้แจงว่า smartfunc ไม่ได้ทำงานเหมือนคอมไพเลอร์จริงๆ แต่เป็นการแปลงฟังก์ชันให้เรียกใช้ LLM ทุกครั้งที่มีการเรียกใช้ โดยส่ง docstring เป็นพรอมต์ คำอธิบายนี้จุดประกายการอภิปรายเพิ่มเติมเกี่ยวกับว่าการใช้งานแบบคอมไพเลอร์ที่แท้จริงควรเป็นอย่างไร—อาจจะเป็นการสร้างและแคชโค้ด Python เมื่อมีการเรียกใช้ครั้งแรกแทนที่จะทำการเรียก API ซ้ำๆ
ความยืดหยุ่นในการรันไทม์และแนวทางทางเลือก
ข้อจำกัดสำคัญที่นักพัฒนาหลายคนชี้ให้เห็นคือความยากในการใช้ฟังก์ชันเดียวกันกับ LLM ที่แตกต่างกันในช่วงรันไทม์ รูปแบบตัวตกแต่ง (decorator) ที่ใช้โดย smartfunc ล็อคตัวเลือกโมเดลไว้ในช่วงเวลาที่นำเข้า ซึ่งบางคนรู้สึกว่าเป็นข้อจำกัดสำหรับสภาพแวดล้อมการผลิต ไลบรารีทางเลือกเช่น think ถูกกล่าวถึงว่าให้ความยืดหยุ่นมากกว่าโดยการส่งผ่านออบเจ็กต์ LLM อย่างชัดเจน
การสนทนายังเกี่ยวข้องกับการใช้งานที่คล้ายกันในภาษาต่างๆ โดยนักพัฒนากล่าวถึงเครื่องมือที่คล้ายกันสำหรับ JavaScript และความสนใจในเวอร์ชัน Java ความสนใจข้ามภาษานี้แสดงให้เห็นถึงความต้องการที่เพิ่มขึ้นสำหรับรูปแบบมาตรฐานในการผสานรวม LLM เข้ากับสภาพแวดล้อมการพัฒนาต่างๆ
ไลบรารีที่คล้ายกันที่ถูกกล่าวถึงในการสนทนา
- smartfunc: ไลบรารีไพธอนที่แปลง docstring ให้เป็นฟังก์ชัน LLM
- Tanuki: มีฟังก์ชันการทำงานคล้ายกับ smartfunc
- promptic: ห่อหุ้ม litellm พร้อมรองรับผู้ให้บริการโมเดลหลายราย
- think: แนวทางทางเลือกในการส่งต่อวัตถุ LLM เพื่อความยืดหยุ่นในการทำงาน
- llm-docsmith: ปลั๊กอินสำหรับสร้าง docstring สำหรับโค้ดที่มีอยู่แล้ว
- neuro-lingo: ถูกกล่าวถึงว่ามี "pinned" ผลลัพธ์ของฟังก์ชัน
- instructor: ทางเลือกที่มีคุณสมบัติมากกว่าพร้อมการรองรับการตรวจสอบความถูกต้อง
- marvin: ไลบรารีฟังก์ชัน LLM ทางเลือก
อนาคตของการเขียนโปรแกรมด้วยภาษาธรรมชาติ
ผู้แสดงความคิดเห็นหลายคนได้เปรียบเทียบความพยายามในการผสานรวม LLM ในปัจจุบันกับความพยายามในอดีตที่จะทำให้การเขียนโปรแกรมเข้าถึงได้ง่ายขึ้นผ่านภาษาธรรมชาติ เช่น COBOL ในทศวรรษ 1960 ในขณะที่ COBOL เป็นความพยายามแรกๆ ในการใช้ไวยากรณ์คล้ายภาษาอังกฤษ LLM สมัยใหม่อาจนำเราเข้าใกล้วิสัยทัศน์ของ Jensen Huang ที่ว่าภาษาธรรมชาติจะกลายเป็นภาษาโปรแกรมมิ่ง
การอภิปรายยังเน้นความแตกต่างที่น่าสนใจในเวิร์กโฟลว์ด้วย ในขณะที่ smartfunc ใช้ docstrings เพื่อสร้างฟังก์ชันการทำงาน นักพัฒนาบางคนรายงานว่าใช้ LLM ในทิศทางตรงกันข้าม—โดยให้สร้างเอกสารประกอบที่ครอบคลุมสำหรับโค้ดที่มีคำอธิบายน้อย ความสัมพันธ์แบบสองทิศทางระหว่างโค้ดและภาษาธรรมชาตินี้บ่งชี้ถึงแนวทางการพัฒนาที่กำลังเปลี่ยนแปลง ซึ่งขอบเขตระหว่างข้อกำหนด การนำไปใช้ และเอกสารประกอบกำลังกลายเป็นสิ่งที่ลื่นไหลมากขึ้นเรื่อยๆ
การแคชและการประมวลผลแบบโลคอล
มองไปที่การปรับปรุงในอนาคต นักพัฒนาแสดงความสนใจในแนวทางที่จะกลั่นฟังก์ชันการทำงานของ LLM ให้เป็นโมเดลเฉพาะทางขนาดเล็กสำหรับฟังก์ชันเฉพาะแทนที่จะเรียกใช้ API ซ้ำๆ ไปยังโมเดลพื้นฐาน สิ่งนี้อาจช่วยลดความล่าช้าและต้นทุนในขณะที่ปรับปรุงความน่าเชื่อถือ
แนวคิดเรื่องการแคชผลลัพธ์ที่ดีที่ทราบแล้วยังถูกหยิบยกมาพูดคุยเพื่อเป็นวิธีบรรเทาลักษณะที่ไม่สามารถคาดเดาได้ของ LLM บางคนแนะนำการใช้งานที่จะสร้างโค้ดระหว่างขั้นตอนการสร้าง ตรวจสอบกับการทดสอบหรือข้อกำหนดในการคอมไพล์ และแคชผลลัพธ์ที่สำเร็จ—เป็นการสร้างแซนด์บ็อกซ์อย่างมีประสิทธิภาพสำหรับสิ่งที่ LLM สามารถเปลี่ยนแปลงได้ในขณะที่ยังคงรักษาการควบคุมของนักพัฒนา
ขณะที่รูปแบบการผสานรวม LLM ยังคงพัฒนาต่อไป ชุมชนดูเหมือนจะมุ่งไปสู่แนวทางที่รักษาอำนาจการควบคุมของโปรแกรมเมอร์ในขณะที่ใช้ประโยชน์จากพลังของ AI เพื่อจัดการกับงานเขียนโค้ดที่ซ้ำซากหรือยืดยาว ไม่ว่าจะผ่านฟังก์ชันที่ขับเคลื่อนด้วย docstring เช่น smartfunc หรือระบบการสร้างและแคชโค้ดที่ซับซ้อนมากขึ้น เครื่องมือเหล่านี้เป็นก้าวแรกๆ สู่กระบวนทัศน์การเขียนโปรแกรมใหม่ที่ภาษาธรรมชาติและโค้ดอยู่ในความสัมพันธ์แบบพึ่งพาอาศัยกันมากขึ้น
อ้างอิง: smartfunc