Tác giả : Michele Tufano (Microsoft, Redmond, USA) Anisha Agarwal (Microsoft, Redmond, USA) Jinu Jang (Microsoft, Redmond, USA) Roshanak Zilouchian (Microsoft, Redmond, USA) Neel Sundaresan (Microsoft, Redmond, USA) Tác giả : Michele Tufano (Microsoft, Redmond, Mỹ) Anisha Agarwal (Microsoft, Redmond, Hoa Kỳ) Jinu Jang (Microsoft, Redmond, Hoa Kỳ) Roshanak Zilouchian (Microsoft, Redmond, Hoa Kỳ) Neel Sundaresan (Microsoft, Redmond, Hoa Kỳ) Abstracts Tuy nhiên, các giải pháp hiện có không tận dụng tất cả các khả năng tiềm năng có sẵn trong IDE như xây dựng, thử nghiệm, thực hiện mã, hoạt động git, v.v. Do đó, họ bị hạn chế bởi khả năng hạn chế của họ, chủ yếu tập trung vào đề xuất các đoạn mã và thao tác tập tin trong giao diện dựa trên chat. Để lấp đầy khoảng trống này, chúng tôi trình bày AutoDev, một khuôn khổ phát triển phần mềm hoàn toàn tự động dựa trên AI, được thiết kế cho Lập kế hoạch và thực hiện các nhiệm vụ kỹ thuật phần mềm phức tạp. AutoDev cho phép người dùng xác định các mục tiêu kỹ thuật phần mềm phức tạp, được gán cho các đại lý AI tự trị của AutoDev để thực hiện. Các đại lý AI này có thể thực hiện các hoạt động khác nhau trên cơ sở mã, bao gồm chỉnh sửa tệp, thu thập, xây dựng quy trình, thực hiện, thử nghiệm và hoạt động git. Họ cũng có quyền truy cập vào các tệp, đầu ra biên dịch, nhật ký xây dựng và thử nghiệm, công cụ phân tích tĩnh, và nhiều hơn nữa. Điều này cho phép các đại lý AI thực hiện các nhiệm vụ theo cách hoàn toàn tự động với sự hiểu biết toàn diện về thông tin ngữ cảnh cần thiết. Hơn nữa, AutoDev thiết lập một môi trường phát triển an toàn bằng cách giới hạn tất cả các hoạt động trong Docker Tự trị Trong đánh giá của chúng tôi, chúng tôi đã thử nghiệm AutoDev trên bộ dữ liệu HumanEval, đạt được kết quả đầy hứa hẹn với 91.5% và 87.8% Pass@1 cho sản xuất mã và sản xuất thử nghiệm, chứng minh hiệu quả của nó trong việc tự động hóa các nhiệm vụ kỹ thuật phần mềm trong khi duy trì một môi trường phát triển an toàn và được người dùng kiểm soát. 1 Giới thiệu Khi các nhà phát triển ngày càng áp dụng trợ lý AI như ChatGPT cho các nhiệm vụ phát triển của họ, sự gia tăng năng suất trở nên rõ ràng. trợ lý mã hóa AI đã tiến bộ hơn nữa vào các môi trường phát triển tích hợp (IDEs) như GitHub Copilot. ], nơi họ cung cấp các đề xuất mã cả trong giao diện chat và trực tiếp trong các tập tin. 2 Tuy nhiên, những trợ lý mã hóa AI này, mặc dù được tích hợp vào các IDE, hiển thị các chức năng hạn chế và thiếu nhận thức về ngữ cảnh. , Họ thường không tận dụng tất cả các khả năng IDE như gọi linters, biên dịch, hoặc thực hiện các hoạt động dòng lệnh, và do đó, các nhà phát triển vẫn cần phải xác nhận thủ công phác thảo và đảm bảo tính chính xác của mã được tạo ra bởi AI, thực hiện cơ sở mã và kiểm tra nhật ký lỗi. 3 6 AutoDev thu hẹp khoảng cách này bằng cách cung cấp cho các đại lý AI tự trị khả năng thực hiện các hành động như chỉnh sửa tệp, thử nghiệm lại, xây dựng, thử nghiệm và lệnh CLI trực tiếp trong kho để đạt được các mục tiêu được xác định bởi người dùng, do đó cho phép hoàn thành các nhiệm vụ phức tạp một cách tự động. AutoDev cung cấp các tính năng chính sau: (i) khả năng theo dõi và quản lý các cuộc trò chuyện giữa người dùng và đại lý AI thông qua một , (ii) một thư viện tùy chỉnh để đạt được một loạt các mục tiêu liên quan đến mã và SE, (iii) khả năng lên lịch các đại lý AI khác nhau để làm việc cùng nhau hướng tới một mục tiêu chung thông qua một , và (iv) khả năng thực hiện mã và chạy thử nghiệm thông qua một . Trình quản lý hội thoại Công cụ Agent lịch trình Đánh giá môi trường Figure minh họa một ví dụ cấp cao của dòng công việc AutoDev. Người dùng xác định một mục tiêu (ví dụ, thử nghiệm một phương pháp cụ thể). Người đại lý AI viết các thử nghiệm trong một tệp mới và khởi động lệnh thực hiện thử nghiệm, tất cả trong một môi trường đánh giá an toàn. Kết quả của việc thực hiện thử nghiệm, bao gồm các nhật ký thất bại, sau đó được tích hợp vào việc chuyển đổi. Người đại lý AI phân tích kết quả này, kích hoạt lệnh truy xuất, kết hợp thông tin thu được bằng cách chỉnh sửa tệp, và gọi lại việc thực hiện thử nghiệm. Cuối cùng, môi trường cung cấp phản hồi về sự thành công của việc thực hiện thử nghiệm và hoàn thành mục tiêu của người dùng. 1 Trong khi đó, với các trợ lý mã hóa AI hiện có được tích hợp vào IDE, các nhà phát triển sẽ phải thực hiện thủ công các bài kiểm tra (ví dụ, chạy pytest), cung cấp nhật ký lỗi cho giao diện chat AI, có thể xác định thêm thông tin ngữ cảnh để tích hợp, và lặp lại các hành động xác thực để đảm bảo thành công thử nghiệm sau khi AI tạo ra mã sửa đổi. AutoDev lấy cảm hứng từ công việc trước đó trong lĩnh vực các đại lý AI tự trị. Ví dụ, AutoGen [ AutoDev mở rộng AutoGen bằng cách vượt ra ngoài quản lý hội thoại và cho phép các đại lý tương tác trực tiếp với kho lưu trữ mã, thực hiện các lệnh và hành động một cách độc lập. ], một đại lý AI mã nguồn mở để thực hiện các nhiệm vụ tự trị bằng cách cung cấp mã và IDE khả năng cụ thể để cho phép thực hiện các nhiệm vụ kỹ thuật phần mềm phức tạp. 22 8 Trong đánh giá của chúng tôi, chúng tôi đánh giá khả năng của AutoDev us-ing bộ dữ liệu HumanEval[ ], ban đầu được thiết kế để tạo mã từ các mô tả ngôn ngữ tự nhiên (docstrings). Ngoài ra, chúng tôi mở rộng việc đánh giá để bao gồm nhiệm vụ tạo trường hợp thử nghiệm, cho thấy tính linh hoạt của AutoDev trong việc xử lý các mục tiêu kỹ thuật phần mềm đa dạng. kết quả cho thấy hiệu suất đầy hứa hẹn, với AutoDev đạt được điểm số đáng chú ý là 91.5% và 87.8% cho Pass@1 cho việc tạo mã và sản xuất thử nghiệm tương ứng. 5 2 Thiết kế ô tô Thiết kế tổng quan được mô tả trong Fig. Một khi các cấu hình ban đầu đã hoàn tất, AutoDev sắp xếp khả năng của mình thành bốn nhóm: Quản lý hội thoại theo dõi và quản lý các cuộc hội thoại giữa người dùng và đại lý; một thư viện công cụ nơi có một loạt các mã và các công cụ liên quan đến IDE sẵn dùng cho các đại lý; một Agent Scheduler lập lịch các đại lý khác nhau; và một môi trường đánh giá cho phép các hoạt động thực hiện. 2 2.1 Quy tắc, hành động và cấu hình mục tiêu Người dùng bắt đầu quá trình bằng cách cấu hình các quy tắc và hành động thông qua các tệp yaml. Các tệp này xác định các lệnh sẵn có (hành động) mà các đại lý AI có thể thực hiện. Người dùng có thể tận dụng các cài đặt mặc định hoặc quyền tinh tế bằng cách bật / vô hiệu hóa các lệnh cụ thể, tùy chỉnh AutoDev cho nhu cầu cụ thể của họ. Bước cấu hình này cho phép kiểm soát chính xác các khả năng của các đại lý AI. Ở giai đoạn này người dùng có thể xác định số lượng và hành vi của các đại lý AI, gán trách nhiệm cụ thể, quyền và hành động có sẵn. Ví dụ, người dùng có thể xác định một đại lý "Developer" và một đại lý "Reviewer", làm việc cùng nhau hướng tới một mục tiêu. Theo quy tắc và cấu hình hành động, người dùng xác định nhiệm vụ hoặc quy trình kỹ thuật phần mềm để được thực hiện bởi AutoDev. Ví dụ, người dùng có thể yêu cầu tạo các trường hợp thử nghiệm và đảm bảo rằng chúng đúng về ngữ pháp, thông qua và không chứa lỗi (điều này liên quan đến chỉnh sửa tệp, chạy bộ thử nghiệm, thực hiện kiểm tra ngữ pháp và công cụ tìm lỗi). 2.2 Quản lý hội thoại Người quản lý hội thoại, chịu trách nhiệm khởi tạo lịch sử hội thoại, đóng một vai trò quan trọng trong việc giám sát quản lý cấp cao của cuộc hội thoại đang diễn ra.Nó xử lý nhiệm vụ quyết định khi nào để phá vỡ quá trình và đảm bảo giao tiếp liền mạch giữa người dùng, các đại lý AI, và hệ thống nói chung.Nó duy trì một đối tượng hội thoại bao gồm các thông điệp từ các đại lý AI và kết quả của các hành động từ môi trường đánh giá. Parser giải thích các phản hồi được tạo ra bởi các đại lý, trích xuất các lệnh và đối số trong một định dạng được xác định trước. Nó đảm bảo rằng các lệnh được định dạng chính xác, xác nhận số lượng và độ chính xác của các đối số (ví dụ, một lệnh chỉnh sửa tệp đòi hỏi đối số đường tệp). Trong trường hợp phân tích thất bại, các thông điệp lỗi được tiêm vào cuộc trò chuyện, ngăn chặn các hành động tiếp theo trên kho lưu trữ. Các lệnh được phân tích thành công được phân tích thêm, bằng cách thực thi các quyền đại lý cụ thể và thực hiện các kiểm tra ngữ pháp bổ sung. Nó đảm bảo rằng các hành động được đề xuất tuân thủ các quyền tinh tế được chỉ định bởi người dùng. Nếu lệnh vượt qua kiểm tra, người quản lý cuộc trò chuyện kêu gọi hành động tương ứng trong thư viện công cụ 2.2.1 Parser. Mô-đun tổ chức đầu ra xử lý đầu ra nhận được từ môi trường đánh giá. Nó chọn thông tin quan trọng, chẳng hạn như trạng thái hoặc lỗi, tùy chọn tóm tắt nội dung có liên quan, và thêm một thông điệp có cấu trúc tốt vào lịch sử hội thoại. Điều này đảm bảo rằng người dùng có một bản ghi rõ ràng và có tổ chức về các hành động và kết quả của Au-toDev. 2.2.2 Output Organizer. Tổng quan về AutoDev Framework: Người dùng bắt đầu quá trình bằng cách xác định mục tiêu để đạt được. Trình quản lý hội thoại bắt đầu cuộc trò chuyện và cài đặt. Agent Scheduler tổ chức các đại lý AI để cộng tác trên nhiệm vụ và chuyển các lệnh của họ cho Trình quản lý hội thoại. Trình quản lý hội thoại phân tích các lệnh này và kêu gọi Thư viện Công cụ, cung cấp các hành động khác nhau có thể được thực hiện trên kho. Hành động của các đại lý được thực hiện trong môi trường Docker an toàn và đầu ra được trả về cho Trình quản lý hội thoại, mà kết hợp nó vào cuộc trò chuyện đang diễn ra. Quá trình lặp lại này tiếp tục cho đến khi nhiệm vụ được hoàn thành thành công. Figure 2. Trình quản lý hội thoại xác định khi nào để kết thúc cuộc trò chuyện. điều này có thể xảy ra khi một đại lý báo hiệu việc hoàn thành nhiệm vụ (stop command), cuộc trò chuyện đạt đến một số tối đa của người dùng xác định lặp lại / token, hoặc các vấn đề được phát hiện hoặc trong quá trình hoặc trong môi trường đánh giá. thiết kế toàn diện của AutoDev đảm bảo một cách tiếp cận có hệ thống và kiểm soát để phát triển dựa trên AI. 2.2.3 Conversation Conclusion. 2.3 Nhân viên lịch trình Agent Scheduler chịu trách nhiệm tổ chức các đại lý AI để đạt được mục tiêu được xác định bởi người dùng. Các đại lý, được cấu hình với cá nhân cụ thể và tập hợp các lệnh sẵn có, hoạt động hợp tác để thực hiện các nhiệm vụ khác nhau. Agent Scheduler sử dụng các thuật toán hợp tác khác nhau, chẳng hạn như Round Robin, Token-Based, hoặc Priority-Based, để xác định thứ tự và cách các đại lý đóng góp cho cuộc trò chuyện. Đặc biệt, các thuật toán lập lịch bao gồm nhưng không giới hạn ở: (i) Round Robin hợp tác, trong đó kêu gọi mỗi đại lý theo thứ tự, cho phép mỗi người thực hiện một số hoạt động được xác định trước; (ii) Token-Based hợp tác, cho phép một đại lý thực hiện nhiều hoạt động cho đến khi nó phát hành một token hóa hoàn thành nhiệm vụ Các đại lý, bao gồm các mô hình ngôn ngữ lớn (LLMs) như OpenAI GPT-4 và mô hình ngôn ngữ nhỏ (SLMs) được tối ưu hóa để tạo mã, giao tiếp thông qua ngôn ngữ tự nhiên văn bản. Các đại lý này nhận được mục tiêu và lịch sử hội thoại từ Agent Scheduler, đáp ứng với các hành động được xác định bởi cấu hình Quy tắc và Hành động. Mỗi đại lý, với cấu hình độc đáo của nó, góp phần vào sự tiến bộ tổng thể hướng tới việc đạt được mục tiêu của người dùng. 2.3.1 Agents. 2.4 Thư viện công cụ Thư viện công cụ trong AutoDev cung cấp một loạt các lệnh cho phép các đại lý thực hiện các hoạt động đa dạng trên kho. Những lệnh này được thiết kế để bao bì các hành động phức tạp, công cụ và tiện ích đằng sau một cấu trúc lệnh đơn giản và trực quan. Ví dụ, sự phức tạp liên quan đến xây dựng và thực hiện thử nghiệm được trừu tượng thông qua các lệnh đơn giản như xây dựng và thử nghiệm <test_file>. · Thể loại này bao gồm các lệnh để chỉnh sửa tệp, bao gồm mã, cấu hình và tài liệu. Các tiện ích trong thể loại này, chẳng hạn như viết, chỉnh sửa, chèn và xóa, cung cấp các cấp độ khác nhau của hạt nhân. Các đại lý có thể thực hiện các hành động từ viết toàn bộ tệp đến sửa đổi các dòng cụ thể trong một tệp. , cho phép đại lý viết lại một loạt các dòng với nội dung mới. File Editing <filepath><start_line>-<end_line> <content> Retrieval: Trong thể loại này, các tiện ích thu thập dao động từ các công cụ CLI cơ bản như grep, find, và ls đến các kỹ thuật dựa trên nhúng phức tạp hơn. Những kỹ thuật này cho phép các đại lý tìm kiếm các đoạn mã tương tự, tăng cường khả năng thu thập thông tin có liên quan từ cơ sở mã. Ví dụ, lệnh thu thập <content> cho phép đại lý thực hiện thu thập dựa trên nhúng các đoạn mã tương tự với nội dung được cung cấp. Build & Execution: Các lệnh trong thể loại này cho phép các đại lý biên soạn, xây dựng và chạy cơ sở mã một cách dễ dàng với các lệnh đơn giản và trực quan. Các phức tạp của các lệnh build cấp thấp được trừu tượng, đơn giản hóa quá trình trong cơ sở hạ tầng môi trường đánh giá. Ví dụ về lệnh trong thể loại này bao gồm: build, run <file>. Thử nghiệm & Xác nhận: Các lệnh này cho phép các đại lý kiểm tra cơ sở mã bằng cách chạy một trường hợp thử nghiệm duy nhất, một tệp thử nghiệm cụ thể, hoặc toàn bộ bộ bộ thử nghiệm. Các đại lý có thể thực hiện các hành động này mà không cần dựa vào các lệnh cấp thấp cụ thể cho các khung thử nghiệm cụ thể. Thể loại này cũng bao gồm các công cụ xác nhận như linters và tiện ích tìm lỗi. Ví dụ về các lệnh trong thể loại này bao gồm: phác thảo <file> kiểm tra tính chính xác của phác thảo, và thử nghiệm chạy toàn bộ bộ bộ bộ thử nghiệm. Git: Quyền tinh tế cho các hoạt động git có thể được cấu hình bởi người dùng. Điều này bao gồm các hoạt động như commits, push, và merges. Ví dụ, các đại lý có thể được cấp quyền để chỉ thực hiện commits cục bộ hoặc, nếu cần thiết, đẩy thay đổi vào kho nguồn. Thông tin liên lạc: Các đại lý có thể kêu gọi một tập hợp các lệnh nhằm tạo điều kiện giao tiếp với các đại lý khác và/hoặc người dùng.Đặc biệt, lệnh nói cho phép gửi các thông điệp ngôn ngữ tự nhiên (không được hiểu là lệnh cho các hành động kho), lệnh yêu cầu được sử dụng để yêu cầu phản hồi của người dùng, và lệnh dừng lại làm gián đoạn quá trình, chỉ ra sự đạt được mục tiêu hoặc sự không thể tiếp tục của các đại lý. Thư viện công cụ trong AutoDev do đó cung cấp một tập hợp các công cụ linh hoạt và dễ tiếp cận cho các đại lý AI để tương tác với cơ sở mã và giao tiếp hiệu quả trong môi trường phát triển hợp tác. 2.5 Môi trường đánh giá Chạy trong một container Docker, môi trường đánh giá cho phép thực hiện an toàn các lệnh chỉnh sửa tệp, truy xuất, xây dựng, thực thi và kiểm tra. Nó trừ đi sự phức tạp của các lệnh cấp thấp, cung cấp một giao diện đơn giản cho các đại lý. môi trường đánh giá trả về đầu ra / lỗi tiêu chuẩn cho mô-đun tổ chức đầu ra. 2.6 Đưa mọi thứ lại với nhau Người dùng bắt đầu cuộc trò chuyện bằng cách chỉ định mục tiêu và cài đặt liên quan. Trình quản lý cuộc trò chuyện bắt đầu một đối tượng cuộc trò chuyện, tập hợp các thông điệp từ cả các đại lý AI và môi trường đánh giá. Sau đó, người quản lý cuộc trò chuyện gửi cuộc trò chuyện đến Agent Scheduler, chịu trách nhiệm phối hợp các hành động của các đại lý AI. Trong vai trò của họ như các đại lý AI, Language Models (Large hoặc Small LMs) gợi ý lệnh thông qua các tương tác văn bản. Giao diện lệnh bao gồm một tập hợp các chức năng đa dạng, bao gồm File Editing, Retrieval, Build and Execution, Testing, và các hoạt động Git. Các lệnh được đề xuất này sau đó được phân tích bởi Trình quản lý hội thoại, sau đó chuyển chúng đến Môi trường đánh giá để thực hiện trên cơ sở mã. Việc thực hiện các lệnh này diễn ra trong giới hạn an toàn của Môi trường Đánh giá, được đóng gói trong một container Docker. Sau khi thực hiện, các hành động kết quả tích hợp liền mạch vào lịch sử hội thoại, góp phần vào các lần lặp lại tiếp theo. Quá trình lặp lại này tiếp tục cho đến khi nhiệm vụ được các đại lý coi là hoàn thành, sự can thiệp của người dùng xảy ra, hoặc giới hạn lặp lại tối đa được đạt được. Thiết kế của AutoDev đảm bảo một tổ chức có hệ thống và an toàn của các đại lý AI để đạt được các nhiệm vụ kỹ thuật phần mềm phức tạp theo cách tự trị và được người dùng kiểm soát. 3 Thiết kế empiric Trong đánh giá thực nghiệm của chúng tôi, chúng tôi nhằm mục đích đánh giá khả năng và hiệu quả của AutoDev trong các nhiệm vụ kỹ thuật phần mềm, kiểm tra xem nó có thể cải thiện hiệu suất của một mô hình AI vượt ra ngoài kết luận đơn giản hay không. Các câu hỏi nghiên cứu RQ1: AutoDev hiệu quả như thế nào trong tác vụ tạo mã? RQ2: AutoDev hiệu quả như thế nào trong nhiệm vụ sản xuất thử nghiệm? RQ3: AutoDev hiệu quả như thế nào trong việc hoàn thành các nhiệm vụ? Q1: AutoDev hiệu quả như thế nào trong tác vụ tạo mã? Để giải quyết RQ1, chúng tôi đánh giá hiệu suất của AutoDev trong một nhiệm vụ tạo mã bằng cách sử dụng bộ dữ liệu giải quyết vấn đề HumanEval trong Python. Bộ dữ liệu này bao gồm 164 vấn đề lập trình được viết bằng tay, mỗi vấn đề chứa chữ ký chức năng, docstring, cơ thể và trung bình 7,7 bài kiểm tra đơn vị. Chúng tôi đánh giá hiệu quả của AutoDev bằng cách sử dụng số liệu Pass@k, nơi k đại diện cho số lần cố gắng thực hiện. Một vấn đề được giải quyết thành công được định nghĩa là một trong đó Au-toDev tạo ra mã của cơ thể phương pháp, đáp ứng tất cả các bài kiểm tra được viết bởi con người. Một nỗ lực tương ứng với toàn bộ cuộc trò chuyện AutoDev, liên quan đến nhiều cuộc gọi kết luận và các bước. Điều này tương phản với các phương pháp tiếp cận khác, chẳng hạn như trực tiếp kêu gọi GPT-4, thường liên quan đến một cuộc gọi kết luận duy nhất. Chi tiết về các cuộc gọi kết luận và bước được khám phá thêm trong RQ3. Đối với đánh giá này, chúng tôi đặt k = 1, do đó tính toán Pass@1, chỉ xem xét thành công đạt được trong lần thử đầu tiên. RQ2: AutoDev hiệu quả như thế nào trong nhiệm vụ sản xuất thử nghiệm? Đối với câu hỏi nghiên cứu này, chúng tôi sửa đổi bộ dữ liệu HumanEval để đánh giá khả năng của AutoDev trong sản xuất thử nghiệm. Chúng tôi xem xét giải pháp được viết bởi con người và loại bỏ các bài kiểm tra được viết bởi con người được cung cấp. AutoDev được hướng dẫn để tạo các trường hợp thử nghiệm cho phương pháp tập trung và được đánh giá dựa trên thành công thử nghiệm, sự kêu gọi của phương pháp tập trung và phạm vi kiểm tra. Chúng tôi báo cáo Pass@1, xem xét các bài kiểm tra thành công nếu họ vượt qua và gọi phương pháp tập trung. Ngoài ra, chúng tôi so sánh phạm vi kiểm tra của AutoDev với những bài kiểm tra được viết bởi con người. Q3: AutoDev hiệu quả như thế nào trong việc hoàn thành nhiệm vụ? Trong câu hỏi nghiên cứu này, chúng tôi điều tra hiệu quả của AutoDev trong việc hoàn thành các nhiệm vụ SE. Chúng tôi phân tích số bước hoặc cuộc gọi kết luận cần thiết, phân phối các lệnh được sử dụng (ví dụ, viết, kiểm tra) và tổng số token được sử dụng trong cuộc trò chuyện. AutoDev cài đặt Đối với đánh giá này, AutoDev duy trì cài đặt nhất quán với một đại lý dựa trên mô hình GPT-4 (gpt-4-1106-preview). Hành động được kích hoạt bao gồm chỉnh sửa tệp, truy xuất và thử nghiệm. Lệnh giao tiếp duy nhất có sẵn là lệnh dừng, chỉ ra hoàn thành nhiệm vụ. các lệnh khác, chẳng hạn như hỏi, bị vô hiệu hóa, đòi hỏi AutoDev phải hoạt động tự động mà không có phản hồi của con người hoặc can thiệp vượt quá thiết lập mục tiêu ban đầu. 4 Kết quả empirical Q1: AutoDev hiệu quả như thế nào trong một tác vụ tạo mã? Bàn Hiển thị kết quả cho RQ1, so sánh AutoDev so với hai cách tiếp cận thay thế và điểm khởi điểm không. Bảng bao gồm thông tin về mô hình cung cấp năng lượng cho mỗi cách tiếp cận, nhu cầu đào tạo bổ sung và số liệu Pass@1. 1 Chúng tôi đã so sánh AutoDev với Language Agent Tree Search (LATS) và Reflexion, hai cách tiếp cận hàng đầu trên bảng xếp hạng Hu-manEval vào tháng 3 năm 2024 [ Các kết quả cho đường cơ sở zero-shot (GPT-4) được lấy từ báo cáo kỹ thuật OpenAI GPT-4 [ ], trong khi những người cho LATS và Reflexion từ HuamnEval leaderboard [ Đánh giá 1 11 1 Ngôn ngữ Agent Tree Search (LATS) ] là một khuôn khổ linh hoạt sử dụng các mô hình ngôn ngữ lớn (LLM) để lập kế hoạch, hành động và lý luận. lấy cảm hứng từ việc tìm kiếm cây Monte Carlo, LATS sử dụng LLM như các đại lý, chức năng giá trị và tối ưu hóa, tái sử dụng khả năng của họ để cải thiện việc ra quyết định. 23 Suy ngẫm [ ] giới thiệu một khuôn khổ duy nhất để tăng cường các đại lý ngôn ngữ thông qua phản hồi ngôn ngữ mà không cần cập nhật trọng lượng. Các đại lý trong Reflexion phản ánh bằng lời nói về các tín hiệu phản hồi nhiệm vụ, duy trì văn bản phản xạ của họ trong một bộ nhớ đệm tạm thời để tăng cường ra quyết định. 17 Bàn Điều này cho thấy AutoDev đạt được tỷ lệ Pass@1 là 91.5%, đảm bảo vị trí tốt thứ hai trên bảng xếp hạng của HumanEval. Đặc biệt, kết quả này được thu được mà không có dữ liệu đào tạo bổ sung, phân biệt AutoDev với LATS, đạt 94,4%. Hơn nữa, khung AutoDev cải thiện hiệu suất GPT-4 từ 67% lên 91.5%, đánh dấu sự cải thiện tương đối 30%. 1 Những kết quả này nhấn mạnh khả năng của AutoDev để cải thiện đáng kể hiệu suất của LLM trong việc hoàn thành các nhiệm vụ kỹ thuật phần mềm. tuy nhiên, nó là giá trị lưu ý rằng hiệu quả của AutoDev có thể liên quan đến nhiều cuộc gọi kết luận và các bước, như chúng tôi đi sâu vào chi tiết hơn trong RQ3. RQ2: AutoDev hiệu quả như thế nào trong nhiệm vụ sản xuất thử nghiệm? Bàn trình bày kết quả cho RQ2, so sánh AutoDev với zero-shot GPT-4 (bản gốc) và thử nghiệm bằng văn bản của con người trong nhiệm vụ tạo thử. vì OpenAI đã không đánh giá GPT-4 trên nhiệm vụ tạo thử, chúng tôi đã có được kết quả GPT-4 bằng cách gọi kết luận với hướng dẫn nhắc nhở trên cùng một mô hình GPT-4 được sử dụng cho AutoDev. 2 AutoDev đạt điểm Pass@1 là 87,8% trên bộ dữ liệu HumanEval được sửa đổi cho nhiệm vụ sản xuất thử nghiệm, cho thấy sự cải thiện tương đối 17% so với điểm cơ bản sử dụng cùng một mô hình GPT-4. báo cáo phạm vi tổng thể trên toàn bộ tập dữ liệu của các trường hợp thử nghiệm, xem xét các thử nghiệm không chính xác hoặc thất bại là thiếu phạm vi. 2 Những kết quả này khẳng định khả năng của AutoDev trong việc giải quyết các nhiệm vụ kỹ thuật phần mềm khác nhau. Q3: AutoDev hiệu quả như thế nào trong việc hoàn thành nhiệm vụ? Figure minh họa số lệnh tích lũy được sử dụng bởi AutoDev cho cả các tác vụ Generation Code và Test Generation, xem xét số lệnh trung bình được sử dụng để đánh giá từng vấn đề HumanEval trong RQ1 và RQ2. 3 Đối với Code Generation, AutoDev đã thực hiện trung bình 5.5 lệnh, bao gồm 1.8 thao tác viết, 1.7 thao tác kiểm tra, 0,92 thao tác dừng (chứng minh hoàn thành nhiệm vụ), 0.25 lệnh không chính xác, cùng với thu thập tối thiểu (grep, find, cat), các hoạt động kiểm tra ngữ pháp và lệnh giao tiếp thoại. Trong trường hợp của Test Generation, số lượng lệnh trung bình phù hợp với nhiệm vụ Code Generation. Tuy nhiên, Test Generation liên quan đến nhiều hoạt động thu thập và tăng tỷ lệ xảy ra các hoạt động không chính xác, dẫn đến tổng trung bình 6,5 lệnh cho mỗi chạy. Chúng tôi phân loại một lệnh là không chính xác nếu nó đề cập đến một lệnh không có sẵn hoặc không thể phân tích (ví dụ, định dạng không chính xác hoặc số lượng tham số). các lệnh không chính xác phổ biến nhất liên quan đến các đại lý AI pha trộn ngôn ngữ tự nhiên với mã hoặc lệnh. các vấn đề như vậy có thể được giải quyết thông qua phân tích linh hoạt hơn hoặc yêu cầu cải thiện, như được thảo luận thêm trong phần thảo luận. Trong khi AutoDev thực hiện nhiều cuộc gọi kết luận hơn so với các phương pháp tạo mã ứng cử viên trong một cuộc gọi duy nhất, điều quan trọng cần lưu ý là AutoDev cũng thực hiện các hoạt động kiểm tra và xác nhận, các nhiệm vụ thường được thực hiện bởi các nhà phát triển để xác nhận các ứng cử viên được tạo ra. Hơn nữa, AutoDev thường truyền đạt việc hoàn thành nhiệm vụ thông qua các lệnh nói chuyện, cung cấp cái nhìn sâu sắc và khả năng giải thích của giải pháp. Một lệnh truyền thông đáng chú ý khác góp phần vào tổng số là lệnh dừng. Điều này đại diện cho một cuộc gọi kết luận tương đối rẻ tiền, chỉ tạo ra một token. tối ưu hóa tiềm năng có thể liên quan đến việc đóng gói các hoạt động đó với các lệnh hoặc kết luận khác. Chiều dài trung bình của các cuộc hội thoại AutoDev để giải quyết mỗi vấn đề HumanEval trong RQ1 và RQ2 là 1656 và 1863 token tương ứng. Điều này bao gồm mục tiêu của người dùng, tin nhắn từ đại lý AI và phản hồi từ môi trường đánh giá. So sánh, zero-shot GPT-4 (đường cơ sở) sử dụng 200 token (tính toán) để tạo mã và 373 token để tạo thử nghiệm, trung bình, cho mỗi nhiệm vụ. Trong khi AutoDev sử dụng nhiều token hơn, một số tiền đáng kể được chi tiêu để kiểm tra, xác nhận và giải thích mã được tạo ra của chính nó, vượt ra ngoài những gì phương pháp cơ sở cung cấp. Cuối cùng, AutoDev phải chịu chi phí thực hiện liên quan đến tổ chức các đại lý AI, quản lý các cuộc hội thoại và thực hiện lệnh trong môi trường Docker.Đặc biệt, môi trường đánh giá dựa trên Docker chiếm chi phí thực hiện lớn, hiển thị chi phí cao hơn so với lệnh CLI trực tiếp trong môi trường người dùng. tuy nhiên, chúng tôi đã thiết kế AutoDev với bảo mật là ưu tiên hàng đầu, đảm bảo thực hiện an toàn và xác nhận mã được tạo ra bởi AI. 5 Thảo luận 5.1 AutoDev trong hành động nhân vật (Phần I) và (Phần II) cung cấp một cái nhìn sâu sắc về Au-toDev trong hành động trong một nhiệm vụ sản xuất thử nghiệm, với một số tương tác được tóm tắt hoặc bỏ qua vì ngắn gọn. , chúng tôi đặt mục tiêu cho AutoDev để tạo ra các trường hợp thử nghiệm tồi tệ nhất theo một định dạng cụ thể. Các đại lý AutoDev khởi động lệnh viết mới, cung cấp các filepath và nội dung của tập tin thử nghiệm. AutoDev thực hiện các hoạt động, xác nhận thành công nội dung viết cho các đại lý. Sau đó, các đại lý AutoDev kích hoạt các hoạt động thử nghiệm, và AutoDev chạy các thử nghiệm trong môi trường Docker an toàn của nó, trình bày báo cáo thực hiện thử nghiệm JSON (tóm tắt trong hình cho ngắn gọn). 4 5 4 Các đại lý AutoDev xác định một lỗi trong đầu ra pytest, nhận ra rằng một sửa chữa là cần thiết để điều chỉnh thử nghiệm với hành vi dự kiến của hàm. Tiếp tục trong Figure , đại lý AutoDev phát hành lệnh viết, chỉ định filepath và phạm vi số dòng (5-5) để viết lại tuyên bố tuyên bố không chính xác.Sau đó, đại lý AutoDev tiến hành chạy thử nghiệm, bây giờ thành công. 5 Ví dụ này làm nổi bật khả năng của AutoDev để tự đánh giá mã được tạo ra và giải quyết lỗi trong đầu ra của chính nó.Thêm vào đó, nó cho thấy cách AutoDev tạo điều kiện cho người dùng hiểu biết về các hành động đại lý, cho phép các đại lý giao tiếp trong nhiệm vụ. 5.2 Hợp tác đa tác nhân AutoDev hỗ trợ cộng tác đa đại lý trên các nhiệm vụ, được tổ chức bởi Agent Scheduler. Trong đánh giá của chúng tôi, do sự đơn giản tương đối của bộ dữ liệu HumanEval, chúng tôi đã giới hạn cài đặt của chúng tôi đến một đại lý GPT-4 duy nhất cho các nhiệm vụ. Tuy nhiên, kết quả sơ bộ cho thấy tác động tích cực của sự hợp tác đa đại lý đối với các nhiệm vụ phức tạp hơn.Thử nghiệm với Nhà phát triển AI và Nhà đánh giá AI, mỗi người có trách nhiệm riêng biệt và các hành động có sẵn, cộng tác để sửa chữa một lỗi phức tạp cho thấy các tương tác thú vị. Kế hoạch tương lai của chúng tôi liên quan đến việc mở rộng các đánh giá để kết hợp các kịch bản phức tạp hơn, nơi cộng tác đa đại lý có thể cải thiện đáng kể hiệu suất của AutoDev. 5.3 Con người trong vòng tròn AutoDev allows AI agents to communicate progress on tasks or request human feedback using the talk and ask commands, respectively. Anecdotally, these commands have proven helpful for developers using AutoDev to understand the agent’s intentions and gain insights into the agent’s plan. The addition of the ask command was in direct response to a developer’s request during our pilot study, where they wanted the ability to provide feedback when the agents appeared uncertain about the next actions. Kế hoạch tương lai của chúng tôi liên quan đến sự tích hợp sâu sắc hơn của con người trong vòng tròn AutoDev, cho phép người dùng phá vỡ các tác nhân và cung cấp phản hồi nhanh chóng. 5.4 Tích hợp AutoDev Our pilot study involved developers using AutoDev as a CLI command, with the conversation available for observation within the VSCode IDE. Tiếp theo, mục tiêu của chúng tôi là tích hợp AutoDev vào IDE, tạo ra một trải nghiệm chatbot, và kết hợp nó vào các đường ống CI / CD và nền tảng đánh giá PR. Chúng tôi dự đoán các nhà phát triển gán nhiệm vụ và vấn đề cho AutoDev, xem xét kết quả trong một hệ thống PR và tiếp tục hợp lý hóa quy trình phát triển phần mềm. 6 Công việc liên quan Công việc của chúng tôi được xây dựng trên một cơ sở văn học rộng lớn áp dụng AI cho các nhiệm vụ Kỹ thuật Phần mềm khác nhau. Trong phần này, chúng tôi khám phá những phát triển gần đây và ngữ cảnh hóa AutoDev trong bối cảnh nghiên cứu phong phú này. 6.1 Kỹ thuật phần mềm Việc tích hợp AI, đặc biệt là các mô hình ngôn ngữ lớn (LLM), vào kỹ thuật phần mềm đã chứng kiến sự tiến bộ đáng kể. Hướng dẫn sử dụng [ ] ], và GPT-4 [ ] đã sử dụng kiến trúc Transformer [ ] để hiểu và tạo ra không chỉ ngôn ngữ tự nhiên, mà còn mã nguồn. kích thước tham số khổng lồ của LLM, chẳng hạn như những người trong Gropher [ ] và Megatron-Turing NLG [ ], và GPT-4 [ ] cho phép các mô hình AI này đạt được hiệu suất ấn tượng trên nhiều nhiệm vụ khác nhau. 7 14 13 20 15 18 13 Khi thực tiễn phát triển phần mềm tiếp tục phát triển, việc tích hợp các công nghệ tiên tiến trở nên quan trọng để nâng cao năng suất của các nhà phát triển. Trong số những tiến bộ đáng chú ý, việc sử dụng LLM trong Môi trường Phát triển Tích hợp (IDEs) đã thu hút sự chú ý đáng kể [ , ]. LLM, bao gồm các mô hình nổi bật như GPT-3.5 của OpenAI [ ] và GPT-4 [ ], cũng như các mô hình mã nguồn mở mạnh mẽ như Code Llama [ ], thể hiện tiềm năng đóng vai trò là trợ lý lập trình thông minh. 5 4 10 12 13 16 Trong bài báo này, chúng tôi giới thiệu AutoDev, một khuôn khổ toàn diện cho các nhiệm vụ kỹ thuật phần mềm tự trị trong một môi trường phát triển an toàn. AutoDev mở rộng ra ngoài các công trình hiện có bằng cách cung cấp một thư viện công cụ linh hoạt, trao quyền cho các đại lý AI để tự động thực hiện các nhiệm vụ phức tạp, chẳng hạn như chỉnh sửa mã, thử nghiệm và tích hợp. AutoDev cũng là LLM-agnostic, với cơ sở hạ tầng cho phép một tập hợp đa dạng các mô hình AI, với kích thước và kiến trúc tham số khác nhau, để cộng tác trên một nhiệm vụ nhất định. 6.2 Đánh giá của LLM trong kỹ thuật phần mềm Đánh giá LLM cho các nhiệm vụ kỹ thuật phần mềm đặt ra những thách thức độc đáo. chỉ số dựa trên ngôn ngữ truyền thống, chẳng hạn như BLEU, đã là trọng tâm của nghiên cứu trước đây, với các đánh giá được thực hiện trên các bộ dữ liệu tĩnh như GLUE [ ] và BIGBench [ Tuy nhiên, các số liệu này thường thiếu trong việc nắm bắt các khía cạnh lập trình thiết yếu như độ chính xác của phác thảo và các số liệu dựa trên thực hiện như xây dựng và thử nghiệm. 21 19 CodeXGLUE [Xem thêm] ] đã giải quyết những hạn chế này bằng cách cung cấp một nền tảng đánh giá toàn diện cho các LLM trong kỹ thuật phần mềm. nó cung cấp một tập hợp dữ liệu tiêu chuẩn đa dạng cùng với các mô hình cơ bản như CodeBERT và CodeGPT. 9 Nhân loại [ ] góp phần vào lĩnh vực này bằng cách tập trung vào tính chính xác chức năng của LLM, giới thiệu một tập dữ liệu tiêu chuẩn về các vấn đề lập trình viết tay trong Python. 5 [ Tương tự như HumanEval, Copilot Evaluation Harness kết hợp các cân nhắc thực hiện mã, nhưng mở rộng phạm vi các nhiệm vụ kỹ thuật phần mềm (mã, thử nghiệm và sản xuất tài liệu, hiểu không gian làm việc và giải pháp truy vấn) cũng như tăng số liệu được sử dụng để đánh giá. 3 Trong khi đánh giá hiện tại của chúng tôi dựa vào HumanEval để đánh giá hiệu quả của AutoDev trong hai nhiệm vụ mã hóa, công việc trong tương lai của chúng tôi nhằm mục đích mở rộng đánh giá này đến các bộ dữ liệu thực tế và đầy thách thức hơn, chẳng hạn như những dữ liệu được cung cấp bởi Copilot Evaluation Harness. 6.3 AI trong phần mềm kỹ thuật tương tác Trong khi các công trình trước đây đã khám phá giao điểm của AI và kỹ thuật phần mềm, ít người đã đi sâu vào lập trình được hướng dẫn bởi AI trong các tương tác IDE. AutoDev, như được giới thiệu trong bài báo này, lấy cảm hứng từ các tác phẩm hiện có trong văn học trong khi tăng cường đóng góp của họ. ví dụ đáng chú ý bao gồm Auto-GPT[ LATS (Language Agent Tree Search) – Tìm kiếm cây đại lý ngôn ngữ ], và suy nghĩ[ ], mỗi trình bày cách tiếp cận độc đáo cho các nhiệm vụ được thúc đẩy bởi AI. 8 23 17 Xe tải [ ] hoạt động bằng cách ghép GPT-3.5 và GPT-4 với một bot đồng hành, cho phép người dùng hướng dẫn các mô hình ngôn ngữ này về các mục tiêu cụ thể. bot đồng hành sử dụng GPT-3.5 và GPT-4, cùng với các chương trình khác nhau, để thực hiện các bước cần thiết để đạt được mục tiêu. 8 Mùa hè [ ] , mặt khác, là một khuôn khổ chung kết hợp các khả năng của LLM trong lập kế hoạch, hành động và lý luận. Lấy cảm hứng từ việc tìm kiếm cây Monte Carlo, thường được sử dụng trong việc học tập tăng cường dựa trên mô hình, LATS sử dụng LLM như các đại lý, chức năng giá trị và tối ưu hóa, tăng cường ra quyết định. Nó giới thiệu một môi trường cho phản hồi bên ngoài, cung cấp một cơ chế giải quyết vấn đề có chủ ý và thích ứng. 23 Reflexion[ ] giới thiệu một khuôn khổ mới để tăng cường các đại lý ngôn ngữ thông qua phản hồi ngôn ngữ. Các đại lý phản ánh phản ánh bằng lời nói về các tín hiệu phản hồi nhiệm vụ, duy trì văn bản phản xạ của họ trong một bộ nhớ đệm tạm thời để cải thiện việc ra quyết định. khuôn khổ linh hoạt này kết hợp các loại và nguồn tín hiệu phản hồi khác nhau và thể hiện những cải tiến đáng kể so với các đại lý cơ bản trong các nhiệm vụ khác nhau, bao gồm ra quyết định liên tiếp, mã hóa và lý luận ngôn ngữ. 17 AutoDev chuyên những ý tưởng này cho lĩnh vực Kỹ thuật Phần mềm, cung cấp một khuôn khổ linh hoạt cho phép các đại lý AI hoàn thành các nhiệm vụ SE phức tạp với sự tự chủ đầy đủ. Công việc của chúng tôi nhằm mục đích thu hẹp khoảng cách giữa các thực tiễn kỹ thuật phần mềm truyền thống và tự động hóa do AI thúc đẩy, tạo điều kiện cho các nỗ lực hợp tác giữa các nhà phát triển và các đại lý AI. Bằng cách giới thiệu một thư viện công cụ linh hoạt, AutoDev trao quyền cho các đại lý AI thực hiện các nhiệm vụ phức tạp một cách tự động, cung cấp một bước tiến đầy hứa hẹn trong bối cảnh phát triển phần mềm được hỗ trợ bởi AI. 7 Kết luận Trong bài báo này, chúng tôi đã giới thiệu AutoDev, một khuôn khổ cho phép các đại lý AI tương tác tự động với các kho lưu trữ, thực hiện các hành động và giải quyết các nhiệm vụ kỹ thuật phần mềm phức tạp. Chúng tôi đã chuyển trách nhiệm trích xuất bối cảnh có liên quan cho các nhiệm vụ kỹ thuật phần mềm và xác nhận mã được tạo ra bởi AI từ người dùng (chủ yếu là các nhà phát triển) sang chính các đại lý AI. Vai trò của nhà phát triển trong khuôn khổ AutoDev chuyển đổi từ hành động thủ công và xác nhận các gợi ý AI sang một giám sát viên giám sát cộng tác đa đại lý trên các nhiệm vụ, với tùy chọn cung cấp phản hồi. Đánh giá của chúng tôi về bộ dữ liệu HumanEval cho việc tạo mã và thử nghiệm cho thấy kết quả ấn tượng, đạt điểm Pass@1 là 91.5 cho việc tạo mã - kết quả tốt thứ hai trên bảng xếp hạng tại thời điểm viết, và tốt nhất trong số các phương pháp không yêu cầu dữ liệu đào tạo bổ sung. Nhìn về phía trước, mục tiêu của chúng tôi cho công việc trong tương lai là tích hợp AutoDev vào IDE như một trải nghiệm chatbot và tích hợp nó vào các đường ống CI / CD và nền tảng đánh giá PR. References [1] Code generation on humaneval - state-of-the-art. Truy cập: 2024-02-27. hnps của bạn paperswithcode.com/sota/code-generation-on-humaneval, GitHub copilot: Ai pair lập trình của bạn. 2024. hNps://github.com/tính năng/ trẻ em, [3] Agarwal, A., Chan, A., Chandel, S., Jang, J., Miller, S., Moghad-dam, R. Z., Mohylevskyy, Y., Sundaresan, N., và Tufano, M. Copi-lot evaluation harness: Evaluating llm-guided software programming, 2024. [4] Chen, B., Mustakin, N., Hoang, A., Fuad, S., và Wong, D. Vscuda: phần mở rộng cuda dựa trên Llm cho mã studio trực quan. (New York, NY, Hoa Kỳ, 2023), SC-W ’23, Hiệp hội Máy tính, trang 11-17. Chương trình của Hội nghị Quốc tế về Máy tính hiệu suất cao, Mạng, Lưu trữ và Phân tích SC ’23 [5] Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., et al. Đánh giá các mô hình ngôn ngữ lớn được đào tạo về mã. [6] Ding, Y., Wang, Z., Ahmad, W., Ding, H., Tan, M., Jain, N., Ra-manathan, M. K., Nallapati, R., Bhatia, P., Roth, D., et al. Cross-codeeval: A diverse and multilingual benchmark for cross-file code completion. ( 2024 ) Hệ thống xử lý thông tin thần kinh 36 [7] Floridi, L., và Chiriatti, M. Gpt-3: Bản chất, phạm vi, giới hạn và hậu quả của nó. (2020), từ 681 đến 694. Trí tuệ và máy móc 30 [8] Trọng tài, S. Autogpt. 2024. GitHub repository. hNps://github.com/Significant-Gravitas/ xe ô tô, [9] Lu, S., Guo, D., Ren, S., Huang, J., Svyatkovskiy, A., Blanco, A., Clement, C., Drain, D., Jiang, D., Tang, D., Li, G., Zhou, L., Shou, L., Zhou, L., Tufano, M., Gong, M., Zhou, M., Duan, N., Sundaresan, N., Deng, S. K., Fu, S., và Liu, S. Codexglue: A machine learning benchmark dataset for code understanding and generation, 2021. [10] Nam, D., Macvean, A., Hellendoorn, V., Vasilescu, B., và Myers, B. Hỗ trợ thông tin dựa trên thế hệ in-ide với mô hình ngôn ngữ lớn, 2023. [11] Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Đức Grafstein, M., Gray, S., Greene, R., Gross, J., Gu, S. S., Guo, Y., Hallacy, C., Han, J., Harris, J., He, Y., Heaton, M., Heidecke, J., Hesse, C., Hickey, A., Hickey, W., Hoeschele, P., Houghton, B., Hsu, K., Hu, S., Hu, X., Huizinga, J., Jain, S., Jain, S., Jang, J., Jiang, A., Jiang, R., Jin, H., Jin, D., Jomoto, S., Jonn, B., Jun, H., Kaftan, T., Łukasz Kaiser, Kamali, A., Kanitscheider, I., Keskar, N. S., Khan, T., Kilpatrick, L., Kim, J. W., Kim, C., Kim, Y., Kirchner, J. H., Kiros, J., Knight, M., Kokotajlo, D., Łukasz Kondraciuk, Kondrich, A., Konstantinidis, A., Kosic, K., Krueger, G., Kuo, V., Lampe, M., Lan, I., Lee, T., Leike, J., Leung, J., Levy, D., Li, C. M., Lim, R., Lin, M., Lin, S., Litwin, M., Lopez, T., Lowe, R., Lue, P., Makanju, A., Mal-facini, K., Manning, S., Markov, T., Markovski, Y., Martin, B., Mayer, K., Mayne, A., McGrew, B., McKinney, S. M., McLeavey, C., McMillan, O., Mély, D., Nair, A., Medina, D., Mehta, A., Menick, J., Metz, L., Mishchenko, A., Mishchenko, P., Mishkin, P., Monaco, V., Morikawa, E., Poking, D., Mo, T., Murati, M., Murk, O., Mély, D., Nair, A., Nakano, R., Mehta, R., Neelak, A., A., Weihang, J., Ramesh, A., Raymond, C., Real, F., Rimbach, K., Ross, C., Rotsted, B., Roussez, H., Ryder, N., Saltarelli, M., Sanders, T., Sigler, E., Simens, M., Sitkin, J., Schmidt, K., Sohl, I., Sokolowsky, B., Song, Y., Schulman, J., Staudacher, N., Such, F. P., Summers, N., Sutieh, I., Shoker, S., J., Temba, Yoo Tezak, N., Sidor, S., Sigler, E., Simens, M., Sitkin, J., Slama, K., Sohl, I., Sokolowsky, B., Song, Y., Selsam, D., Sheppard, K., N., Such, F [12] OpenAI. Gpt 3.5 mô hình, 2023. [13] OpenAI. Gpt-4 báo cáo kỹ thuật, 2023. [14] Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., Zhang, C., Agarwal, S., Slama, K., Ray, A., et al. Đào tạo các mô hình lan-guage để làm theo hướng dẫn với phản hồi của con người. (2022), 27730–27744. Hệ thống xử lý thông tin thần kinh 35 [15] Rae, J. W., Borgeaud, S., Cai, T., Millican, K., và những người khác. mô hình ngôn ngữ quy mô: phương pháp, phân tích và hiểu biết từ đào tạo gopher, 2022. [16] Roziere, B., Gehring, J., Gloeckle, F., Sootla, S., Gat, I., Tan, X. E., Adi, Y., Liu, J., Remez, T., Rapin, J., et al. Code llama: Mô hình nền tảng mở cho mã. ( 2023 ) arXiv Preprint arXiv:2308.12950 [17] Shinn, N., Cassano, F., Berman, E., Gopinath, A., Narasimhan, K., và Yao, S. Phản ánh: Các tác nhân ngôn ngữ với học tập tăng cường bằng lời nói, 2023. [18] Smith, S., Patwary, M., Norick, B., LeGresley, P., Rajbhandari, S., Casper, J., Liu, Z., Prabhumoye, S., Zerveas, G., Korthikanti, V., Zhang, E., Child, R., Aminabadi, R. Y., Bernauer, J., Song, X., Shoeybi, M., He, Y., Houston, M., Tiwary, S., và Catanzaro, B. Sử dụng tốc độ sâu và megatron để đào tạo megatron-turing nlg 530b, một mô hình ngôn ngữ sinh học quy mô lớn, 2022. [19] Srivastava, A., Rastogi, A., Rao, A., Shoeb, A. A. M., et al. Beyond the imitation game: Quantifying and extrapolating the capabilities of language models, 2023. [20] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., và Polosukhin, I. Chú ý là tất cả những gì bạn cần. (2017 ) Tiến bộ trong hệ thống xử lý thông tin thần kinh 30 [21] Wang, A., Singh, A., Michael, J., Hill, F., Levy, O., và Bowman, S. R. Glue: Một tiêu chuẩn đa nhiệm vụ và nền tảng phân tích để hiểu ngôn ngữ tự nhiên, 2019. [22] Wu, Q., Bansal, G., Zhang, J., Wu, Y., Li, B., Zhu, E., Jiang, L., Zhang, X., Zhang, S., Liu, J., Awadallah, A. H., White, R. W., Burger, D., và Wang, C. Autogen: Cho phép các ứng dụng llm thế hệ tiếp theo thông qua hội thoại đa đại lý, 2023. [23] Zhou, A., Yan, K., Shlapentokh-Rothman, M., Wang, H., and Wang, Y.-X. Language agent tree search unifies reasoning acting and planning in language models, 2023. Tài liệu này có sẵn trên archiv dưới giấy phép CC by 4.0 Deed (Attribution 4.0 International). Bài báo này là under CC by 4.0 Deed (Attribution 4.0 International) license. Có sẵn trong Archive