SWE-bench: model ngôn ngữ sửa được bao nhiêu issue GitHub thật?
“Language models have outpaced our ability to evaluate them effectively, but for their future development it is essential to study the frontier of their capabilities.”
Agent viết code hay trên bài tập lẻ, đưa issue thật vào repo thật thì sao?
Mở
Đánh giá model ngôn ngữ bằng bài toán viết một hàm lẻ đã thành thói quen: mô tả ngắn, một đầu vào, một đầu ra đúng hay sai. Nhưng công việc thật của lập trình viên là đọc issue trong repo có sẵn, lần ra chỗ cần sửa giữa nhiều file, rồi sửa mà không làm hỏng phần còn lại. Hai kiểu bài toán khác nhau đến mức thứ hạng model theo thói quen cũ không còn nói gì khi đưa vào việc thật, và SWE-bench ra đời để đo đúng khoảng trống đó.
Paper này làm gì
SWE-bench dựng bộ đề thi lấy từ issue GitHub thật, kèm pull request đã được merge làm đáp án tham chiếu. Mỗi task đưa cho model một codebase và mô tả issue, rồi yêu cầu model sửa codebase để issue được giải. Tác giả mô tả rằng việc giải issue thường xuyên đòi hỏi hiểu và phối hợp thay đổi xuyên nhiều hàm, nhiều lớp, thậm chí nhiều file, đồng thời phải gọi môi trường chạy, xử lý ngữ cảnh rất dài và suy luận phức tạp, vượt xa bài toán sinh code lẻ. Trên nền bộ đề, họ chạy đánh cả model thương mại hàng đầu lẫn model tự fine-tune của mình.
Phát hiện chính
-
Bộ đề gồm 2,294 bài toán kỹ thuật phần mềm lấy từ issue và pull request thật, trải trên 12 repo Python phổ biến. (we introduce SWE-bench, an evaluation framework consisting of $2,294$ software engineering problems drawn from real GitHub issues and corresponding pull requests across $12$ popular Python repositories)
-
Mỗi task không dừng ở việc viết hàm lẻ: model phải phối hợp thay đổi xuyên nhiều hàm, lớp và file, đồng thời tương tác với môi trường chạy và xử lý ngữ cảnh cực dài. (Resolving issues in SWE-bench frequently requires understanding and coordinating changes across multiple functions, classes, and even files simultaneously, calling for models to interact with execution environments, process extremely long contexts and perform complex reasoning that goes far beyond traditional code generation tasks)
-
Tại thời điểm công bố, model mạnh nhất trong nhóm thử là Claude 2 chỉ giải được 1.96% số issue, và cả model thương mại lẫn model fine-tune của tác giả chỉ giải được phần đơn giản nhất. (The best-performing model, Claude 2, is able to solve a mere $1.96$% of the issues)
Caveat
Abstract không nêu hạn chế của chính bộ đề thi. Điều tác giả nêu là một kết quả đo được: cả model thương mại hàng đầu lẫn model SWE-Llama của họ chỉ giải được phần issue đơn giản nhất. Cách đọc đúng là kết quả này nói về năng lực model vào thời điểm công bố, chứ không phải một lỗi của bộ đề; SWE-bench được dựng ra để người ta theo dõi mức đó cải thiện theo thời gian.
Áp vào 5ac thế nào
Công thức của SWE-bench chính là thứ verification gate trong pipeline Kanban của 5ac đang dùng: card chỉ được coi là xong khi dán output lệnh thật, không phải lời kể rằng mình đã làm. Repo thật kèm test chạy được tương ứng với yêu cầu mọi artifact sinh ra phải chạy được trong workspace trước khi bàn giao, đúng như acceptance khai báo của từng card. Chúng tôi cũng học được cách chọn bài đánh giá: đừng chấm agent bằng mấy câu lệnh demo dễ, mà bằng đúng loại việc nó sẽ làm hằng ngày. Khi model routing chọn model cho một card, mức độ khó thật của việc đó mới là yếu tố quyết định model nào chạy. Khi mở lại một card cũ, output lệnh dán kèm chính là thứ cho biết kết quả đó còn tái lập được hay không, thay vì phải tin vào trí nhớ của ai.
Nguồn
- SWE-bench: Can Language Models Resolve Real-World GitHub Issues? — https://arxiv.org/abs/2310.06770