ผู้บุกเบิกเฟรมเวิร์กคอมพิวเตอร์อัตโนมัติโปรแกรมจัดเก็บอเนกประสงค์ที่ใช้ LLM ที่ใช้งานจริงตัวแรก (สถาปัตยกรรม von Neumann) ในระบบหลายเอเจนต์ที่ใช้ LLM สำหรับการแก้ปัญหางานที่ซับซ้อนผ่านการสร้างเอาต์พุตที่กว้างขวางและสม่ำเสมอ ไร้ขอบเขตด้วยข้อจำกัดหน้าต่างบริบทคงที่ของ LLM .
- อาจ. 7 - 11 ปี 2024: เราจะนำเสนอ L2MAC ในการประชุมนานาชาติว่าด้วยการเป็นตัวแทนการเรียนรู้ (ICLR) 2024 มาพบกับเราที่ ICLR ในกรุงเวียนนา ออสเตรีย! โปรดติดต่อฉันที่ sih31 (at) cam.ac.uk เพื่อให้เราได้พบกัน การประชุมเสมือนจริงก็ได้รับการยอมรับเช่นกัน
- เมษายน. 23 ต.ค. 2024: L2MAC เป็นโอเพ่นซอร์สโดยสมบูรณ์พร้อมกับเวอร์ชันเริ่มต้นที่เผยแพร่
16 มกราคม 2024: เอกสาร L2MAC: คอมพิวเตอร์อัตโนมัติรุ่นภาษาขนาดใหญ่สำหรับการสร้างโค้ดอย่างกว้างขวางได้รับการยอมรับให้นำเสนอที่ ICLR 2024!
การสร้างอินสแตนซ์ LLM-Automatic Computer (L2MAC) สำหรับการเข้ารหัสโค้ดเบสที่ซับซ้อนขนาดใหญ่สำหรับแอปพลิเคชันทั้งหมดโดยอิงจาก พรอมต์ผู้ใช้เพียงรายเดียว ที่นี่เราจัดเตรียมเครื่องมือเพิ่มเติมให้กับ L2MAC เพื่อตรวจสอบข้อผิดพลาดทางไวยากรณ์ภายในโค้ด และเรียกใช้การทดสอบหน่วยใดๆ ถ้ามี
ตรวจสอบให้แน่ใจว่าติดตั้ง Python 3.7+ บนระบบของคุณแล้ว คุณสามารถตรวจสอบได้โดยใช้:
python --version
คุณสามารถใช้ conda ดังนี้:conda create -n l2mac python=3.9 && conda activate l2mac
pip install --upgrade l2mac
# or `pip install --upgrade git+https://github.com/samholt/l2mac`
# or `git clone https://github.com/samholt/l2mac && cd l2mac && pip install --upgrade -e .`
สำหรับคำแนะนำในการติดตั้งโดยละเอียด โปรดดูที่การติดตั้ง
คุณสามารถเริ่มต้นการกำหนดค่าของ L2MAC ได้โดยการรันคำสั่งต่อไปนี้ หรือสร้างไฟล์ ~/.L2MAC/config.yaml
ด้วยตนเอง:
# Check https://samholt.github.io/L2MAC/guide/get_started/configuration.html for more details
l2mac --init-config # it will create ~/.l2mac/config.yaml, just modify it to your needs
คุณสามารถกำหนดค่า ~/.l2mac/config.yaml
ตามตัวอย่างและเอกสาร:
llm :
api_type : " openai " # or azure etc. Check ApiType for more options
model : " gpt-4-turbo-preview " # or "gpt-4-turbo"
base_url : " https://api.openai.com/v1 " # or forward url / other llm url
api_key : " YOUR_API_KEY "
หลังการติดตั้ง คุณสามารถใช้ L2MAC CLI ได้
l2mac " Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid. " # this will create a codebase repo in ./workspace
หรือใช้เป็นห้องสมุด
from l2mac import generate_codebase
codebase : dict = generate_codebase ( "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid." )
print ( codebase ) # it will print the codebase (repo) complete with all the files as a dictionary, and produce a local codebase folder in ./workspace
- เข้าร่วมช่อง Discord ของเรา! รอคอยที่จะพบคุณที่นั่น! -
หากคุณมีคำถามหรือข้อเสนอแนะเกี่ยวกับโครงการนี้ โปรดติดต่อเรา เราขอขอบคุณข้อเสนอแนะของคุณเป็นอย่างยิ่ง!
เราจะตอบกลับทุกคำถามภายใน 2-3 วันทำการ
หากต้องการติดตามข่าวสารล่าสุดเกี่ยวกับการวิจัยและพัฒนา โปรดติดตาม @samianholt บน Twitter
หากต้องการอ้างอิง L2MAC ในสิ่งพิมพ์ โปรดใช้รายการ BibTeX ต่อไปนี้
@inproceedings {
holt2024lmac,
title = { L2{MAC}: Large Language Model Automatic Computer for Unbounded Code Generation } ,
author = { Samuel Holt and Max Ruiz Luyten and Mihaela van der Schaar } ,
booktitle = { The Twelfth International Conference on Learning Representations } ,
year = { 2024 } ,
url = { https://openreview.net/forum?id=EhrzQwsV4K }
}
การสร้างอินสแตนซ์ LLM-Automatic Computer (L2MAC) สำหรับการเข้ารหัสโค้ดเบสที่ซับซ้อนขนาดใหญ่สำหรับแอปพลิเคชันทั้งหมดโดยอิงจาก พรอมต์ผู้ใช้เพียงรายเดียว ผลลัพธ์ของงานการออกแบบระบบการสร้างฐานรหัสแสดงเปอร์เซ็นต์ของคุณสมบัติการทำงานที่ระบุว่ามีการใช้งานอย่างสมบูรณ์ ( คุณลักษณะ % ) จำนวนข้อผิดพลาดทางไวยากรณ์ในรหัสที่สร้างขึ้น ( # ข้อผิดพลาด ) จำนวนบรรทัดของรหัส ( LOC ) และจำนวน ผ่านการทดสอบ ( การทดสอบผ่านการทดสอบ ). L2MAC ปรับใช้เปอร์เซ็นต์สูงสุดของข้อกำหนดคุณสมบัติงานที่ผู้ใช้ระบุในทุกงานโดยการสร้างโค้ดที่ทำงานได้อย่างสมบูรณ์ซึ่งมีข้อผิดพลาดทางไวยากรณ์น้อยที่สุดและผ่านการทดสอบหน่วยที่สร้างขึ้นเองจำนวนมาก ดังนั้นจึงเป็น เทคโนโลยีล้ำสมัย สำหรับ การสร้างโค้ดเบสเอาท์พุตขนาดใหญ่ และการแข่งขันสำหรับการสร้างงานเอาท์พุตขนาดใหญ่ในทำนองเดียวกัน ผลลัพธ์ที่ได้จะเฉลี่ยมากกว่า 10 เมล็ดแบบสุ่ม
LLM-คอมพิวเตอร์อัตโนมัติ (L2MAC) บรรลุประสิทธิภาพที่แข็งแกร่งในเกณฑ์มาตรฐานการเข้ารหัส HumanEval และปัจจุบันได้รับการจัดอันดับให้เป็น ตัวแทนการเข้ารหัส AI ที่ดีที่สุดอันดับ 3 ของโลก ในกระดานผู้นำมาตรฐานอุตสาหกรรมการเข้ารหัสระดับโลกของ HumanEval
เปอร์เซ็นต์ของข้อกำหนดคุณลักษณะที่ผู้ใช้ระบุซึ่งยังคงอยู่ในคำแนะนำงานของวิธีการและใช้ในบริบท
เพื่อสำรวจว่าวิธีการวัดประสิทธิภาพระหว่างการดำเนินการมีข้อมูลภายในบริบทเพื่อทำงานให้เสร็จสิ้นโดยตรงหรือไม่ เราได้ปรับการวัด คุณสมบัติ % ของเราเพื่อนับจำนวนข้อกำหนดคุณสมบัติงานที่ผู้ใช้ระบุซึ่งยังคงอยู่ในคำแนะนำงานของวิธีการแทน กล่าวคือ คำแนะนำที่ในที่สุดจะถูกป้อนเข้าสู่หน้าต่างบริบทระหว่างการดำเนินการ ดังแสดงในรูปด้านบน จากเชิงประจักษ์ เราสังเกตว่า L2MAC สามารถรักษาข้อกำหนดคุณสมบัติงานที่ผู้ใช้ระบุจำนวนมากไว้ภายใน โปรแกรมพร้อมท์ และทำงานที่เน้นคำสั่งเป็นเวลานาน เราทราบว่าในขั้นต้น AutoGPT จะแปลข้อกำหนดคุณลักษณะงานที่ผู้ใช้ระบุเป็นคำสั่งงานด้วย อย่างไรก็ตาม มันทำได้ด้วยการบีบอัดที่สูงกว่า โดยย่อข้อมูลให้เหลือเพียงคำอธิบายหกประโยค กระบวนการนี้ส่งผลให้สูญเสียข้อมูลงานสำคัญที่จำเป็นสำหรับการทำงานโดยรวมให้เสร็จสิ้นอย่างถูกต้อง เพื่อให้สอดคล้องกับงานที่ระบุโดยผู้ใช้โดยละเอียด
แผนที่ความร้อนของการเข้าถึงไฟล์ ระบุการอ่าน การเขียน และเวลาที่ไฟล์จะถูกสร้างขึ้นในขั้นตอนการเขียนแต่ละขั้นตอนในหนึ่งตอนสำหรับงานแอปแชทออนไลน์
เราต้องการที่จะเข้าใจในระหว่างการดำเนินการตามคำสั่งงาน หาก L2MAC สามารถเข้าใจไฟล์โค้ดที่สร้างขึ้นที่มีอยู่ภายในโค้ดเบส --- ซึ่งอาจถูกสร้างขึ้นมาหลายคำสั่งแล้ว และด้วยความเข้าใจของมัน ให้สร้างไฟล์ใหม่ที่เกี่ยวข้องกับ ไฟล์ที่มีอยู่ และที่สำคัญที่สุดคืออัปเดตไฟล์โค้ดที่มีอยู่เมื่อมีการนำคุณสมบัติใหม่มาใช้ เพื่อให้ได้ข้อมูลเชิงลึก เราจะวางแผนผังความร้อนของการอ่าน การเขียน และเวลาที่ไฟล์ถูกสร้างขึ้นในขั้นตอนการเขียนแต่ละขั้นตอนในหนึ่งตอนตามรูปด้านบน เราสังเกตเห็นว่า L2MAC มีความเข้าใจในโค้ดที่สร้างขึ้นที่มีอยู่ซึ่งช่วยให้สามารถอัปเดตไฟล์โค้ดที่มีอยู่ได้ แม้กระทั่งไฟล์โค้ดที่สร้างขึ้นในตอนแรกหลายขั้นตอนก่อนหน้านี้ และสามารถดูไฟล์ได้เมื่อไม่แน่ใจ และอัปเดตไฟล์ผ่านการเขียนลงในไฟล์ ในทางตรงกันข้าม AutoGPT มักจะเขียนลงในไฟล์เพียงครั้งเดียวเมื่อสร้างไฟล์เหล่านั้นครั้งแรก และสามารถอัปเดตได้เฉพาะไฟล์ที่ทราบซึ่งเก็บไว้ในหน้าต่างบริบทปัจจุบันเท่านั้น แม้ว่าจะมีเครื่องมืออ่านไฟล์ด้วย แต่ก็มักจะลืมเกี่ยวกับไฟล์ที่มันสร้างขึ้นซ้ำหลายครั้งที่ผ่านมา เนื่องจากวิธีการจัดการหน้าต่างบริบทในการสรุปข้อความโต้ตอบที่เก่าที่สุดในหน้าต่างบริบท กล่าวคือ การบีบอัดข้อมูลแบบสูญเสียอย่างต่อเนื่องของความคืบหน้าก่อนหน้านี้ ระหว่างการปฏิบัติงานให้เสร็จสิ้น
(b) จำนวนข้อผิดพลาดทางวากยสัมพันธ์ภายในโค้ดเบส (c) ฮิสโตแกรมแบบเรียงซ้อนของการผ่านและไม่ผ่านการทดสอบหน่วยที่สร้างขึ้นเอง
เมื่อใช้แบบจำลองความน่าจะเป็น (LLM) เป็นตัวสร้างโค้ดเอาต์พุต ข้อผิดพลาดสามารถเกิดขึ้นตามธรรมชาติในเอาต์พุต ดังนั้นเราจึงต้องการตรวจสอบว่าเมื่อมีข้อผิดพลาดปรากฏขึ้น วิธีการวัดประสิทธิภาพที่เกี่ยวข้องสามารถแก้ไขข้อผิดพลาดของโค้ดเบสได้หรือไม่ เราพล็อตจำนวนข้อผิดพลาดทางวากยสัมพันธ์ใน codebase ในระหว่างการรันซึ่งมีข้อผิดพลาดเกิดขึ้นใน รูปด้านบน (b) เราสังเกตว่า L2MAC สามารถแก้ไขข้อผิดพลาดได้อย่างถูกต้องใน codebase ที่สร้างก่อนหน้านี้ซึ่งมีข้อผิดพลาดอยู่ภายใน ซึ่งอาจเกิดขึ้นจากข้อผิดพลาดทางไวยากรณ์จากไฟล์ล่าสุดที่เขียน หรือไฟล์อื่นๆ ที่ขึ้นอยู่กับไฟล์ล่าสุดที่เขียน ซึ่งขณะนี้มีข้อผิดพลาด โดยแสดงเอาต์พุตข้อผิดพลาดเมื่อมันเกิดขึ้น และแก้ไขโค้ดเบสเพื่อแก้ไขข้อผิดพลาดในขณะที่ยังคงทำตามคำแนะนำปัจจุบันอยู่ ในทางตรงกันข้าม AutoGPT ไม่สามารถตรวจจับได้เมื่อมีการสร้างข้อผิดพลาดใน codebase และยังคงทำงานต่อไป ซึ่งอาจรวมจำนวนข้อผิดพลาดที่เกิดขึ้นภายใน codebase
นอกจากนี้ L2MAC ยังสร้างการทดสอบหน่วยควบคู่ไปกับโค้ดการทำงาน และใช้สิ่งเหล่านี้เป็นตัวตรวจสอบข้อผิดพลาดเพื่อตรวจสอบฟังก์ชันการทำงานของโค้ดเบสในขณะที่ถูกสร้างขึ้น และสามารถใช้ข้อผิดพลาดเหล่านี้เพื่อแก้ไขโค้ดเบสเพื่อให้ผ่านการทดสอบหน่วยที่ล้มเหลวหลังจากอัปเดตส่วนหนึ่งของโค้ดที่มีอยู่แล้ว ไฟล์. เราแสดงสิ่งนี้ใน รูปด้านบน (c) และสังเกตว่า AutoGPT แม้ว่าจะได้รับแจ้งให้เขียนการทดสอบหน่วยสำหรับโค้ดทั้งหมดที่สร้างขึ้น แต่ก็ไม่สามารถใช้การทดสอบเหล่านี้เป็นการตรวจสอบข้อผิดพลาดด้านความสมบูรณ์ได้ ซึ่งอาจประกอบขึ้นด้วยการสังเกตว่า AutoGPT ลืมว่า ไฟล์ที่สร้างไว้ก่อนหน้านี้และด้วยเหตุนี้จึงไม่สามารถแก้ไขไฟล์รหัสที่ถูกลืมที่มีอยู่ได้เมื่อมีการแก้ไขใหม่ นำไปสู่ไฟล์รหัสที่เข้ากันไม่ได้
เรานำเสนอ L2MAC ซึ่งเป็นเฟรมเวิร์กคอมพิวเตอร์โปรแกรมจัดเก็บสำหรับวัตถุประสงค์ทั่วไปที่ใช้ LLM ตัวแรกที่เพิ่ม LLM อย่างมีประสิทธิภาพและปรับขนาดได้ด้วยที่เก็บหน่วยความจำสำหรับงานสร้างเอาต์พุตที่ยาวนานซึ่งไม่เคยประสบความสำเร็จมาก่อน โดยเฉพาะอย่างยิ่ง L2MAC เมื่อนำไปใช้กับงานสร้างโค้ดที่ยาวนาน จะเหนือกว่าโซลูชันที่มีอยู่ และเป็นเครื่องมือที่มีประโยชน์อย่างมากสำหรับการพัฒนาอย่างรวดเร็ว เรายินดีรับการมีส่วนร่วมและสนับสนุนให้คุณใช้และอ้างอิงโครงการ คลิกที่นี่เพื่อเริ่มต้น
เรารวมแกลเลอรีของแอปพลิเคชันตัวอย่างที่ผลิตโดย LLM Automatic Computer (L2MAC) ทั้งหมดจากพร้อมท์อินพุตเดียว L2MAC เป็นเลิศในการแก้ปัญหางานที่ซับซ้อนขนาดใหญ่ เช่น ความล้ำหน้าในการสร้างโค้ดเบสขนาดใหญ่ หรือแม้กระทั่งสามารถเขียนหนังสือทั้งเล่มได้ ซึ่งทั้งหมดนี้ข้ามข้อจำกัดแบบดั้งเดิมของข้อจำกัดหน้าต่างบริบทคงที่ของ LLM
เพียงพิมพ์ l2mac "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid."
คุณจะได้รับโค้ดเบสที่สมบูรณ์สำหรับเกมที่สามารถเล่นได้อย่างเต็มที่ ดังที่แสดงไว้ที่นี่
คลิกที่นี่เพื่อดูไฟล์ทั้งหมดบน GitHub หรือดาวน์โหลดได้ที่นี่ รหัสและแจ้งให้สร้างสิ่งนี้อยู่ที่นี่
คลิกที่นี่เพื่อดูไฟล์ทั้งหมดบน GitHub หรือดาวน์โหลดได้ที่นี่ รหัสและแจ้งให้สร้างสิ่งนี้อยู่ที่นี่
เพียงแจ้ง L2MAC ให้ Write a complete recipe book for the following book title of "Twirls & Tastes: A Journey Through Italian Pasta". Description: "Twirls & Tastes" invites you on a flavorful expedition across Italy, exploring the diverse pasta landscape from the sun-drenched hills of Tuscany to the bustling streets of Naples. Discover regional specialties, learn the stories behind each dish, and master the art of pasta making with easy-to-follow recipes that promise to delight your senses.
และสามารถสร้างหนังสือความยาวเต็ม 26 หน้าได้โดยอัตโนมัติ
คลิกที่นี่เพื่อดูหนังสือฉบับสมบูรณ์ L2MAC ผลิตข้อความทั้งหมดสำหรับหนังสือ และภาพทั้งหมดถูกสร้างขึ้นด้วย DALLE
ไฟล์ข้อความเอาต์พุตที่สมบูรณ์อยู่บน GitHub คุณสามารถดาวน์โหลดได้ที่นี่ รหัสและแจ้งให้สร้างสิ่งนี้อยู่ที่นี่
คลิกที่นี่เพื่อดูไฟล์ทั้งหมดบน GitHub หรือดาวน์โหลดได้ที่นี่ รหัสและแจ้งให้สร้างสิ่งนี้อยู่ที่นี่
เรากำลังมองหาคุณเพื่ออัปโหลดแอปพลิเคชันเจ๋งๆ ของคุณที่นี่ โดยส่ง PR พร้อมแอปพลิเคชันที่คุณสร้าง แชร์กับปัญหา GitHub หรือแชร์บนช่องทาง Discord