19 điểm bởi letaem77a 2025-04-14 | 8 bình luận | Chia sẻ qua WhatsApp

> "Trong bài viết này, chúng ta sẽ kiểm tra xem khi nén một codebase TypeScript gồm nhiều tệp thành 1 tệp JavaScript thông qua bundling rồi chuyển cho LLM, thì LLM có thể trả lời chính xác đến mức nào đối với các câu hỏi liên quan đến codebase đó."

  • Chuẩn bị 1 codebase web server dựa trên NestJS
  • Nén code bằng esbuild (bundling)
  • Chèn đoạn code đã nén vào prompt
  • Gửi prompt cho ChatGPT o3-mini
  • Kiểm tra mức độ trả lời chính xác đối với các câu hỏi liên quan đến codebase
  1. Thử nghiệm tạo Swagger: trong phần lớn các lần thử, đã thành công trong việc tài liệu hóa chính xác từ 19 endpoint trở lên trong tổng số 21 endpoint
  2. Thử nghiệm yêu cầu mô tả các API endpoint: đã tạo thành công tài liệu hướng dẫn cho cả người không phải lập trình viên và lập trình viên
  • Có những giới hạn nhất định
  • Kết luận
    > "Để RAG toàn bộ codebase cho LLM, tôi đã thiết kế một bài kiểm tra trong đó nén toàn bộ codebase thành một tệp rồi chuyển cho LLM.
    >
    > Khi nén codebase bằng chính các công cụ bundling hiện có, LLM có thể thực hiện việc tài liệu hóa API cho toàn bộ codebase hoặc viết hướng dẫn chi tiết cho một API cụ thể.
    >
    > Đối với phần mất mát thông tin phát sinh trong quá trình nén codebase, có thể kỳ vọng sẽ bù đắp bằng việc bổ sung semantic search trên các tệp gốc."

8 bình luận

 
mendong 2025-04-14

Việc đưa các tệp đã được bundle vào prompt hoặc đính kèm vào ứng dụng để truy vấn LLM có thể được xem là RAG không? Tôi thắc mắc phần nào trong đó tương ứng với Retrieval.

 
labeldock 2025-04-14

Tôi cũng có suy nghĩ tương tự

 
bejunth 2025-04-14

Chẳng phải là dựa trên tệp đã được đóng gói để LLM truy xuất rồi mang đoạn mã gốc về sao?

 
winterjung 2025-04-14

Thú vị đấy. Có vẻ ngay cả với js đã được minify thì nó vẫn nhận diện khá tốt ở một mức độ nào đó. Mình nghĩ cũng hay nếu tận dụng các công cụ được giới thiệu ở https://vi.news.hada.io/topic?id=19552 hoặc https://vi.news.hada.io/topic?id=19540 để cung cấp thêm cấu trúc thư mục như ngữ cảnh bổ sung.

 
apkas 2025-04-14

Dạo này vì làm việc với LLM và code quá nhiều nên tôi luôn trăn trở về cách truyền đạt thông tin sao cho hiệu quả, cảm ơn vì thử nghiệm thú vị này.

Ở nước ngoài cũng từng có những thử nghiệm trích xuất cú pháp của codebase thành graph rồi truy vấn,
nhưng có vẻ bundling sẽ là cách dễ áp dụng rộng rãi hơn. (nếu ngôn ngữ hỗ trợ bundling)
https://x.com/daniel_mac8/status/1908332949251948808

Nhưng dạo này hiệu năng của Gemini quá tốt, nên nếu so sánh với o3 thì có lẽ sẽ còn thú vị hơn nữa.

 
unqocn 2025-04-14

Tôi đọc thấy rất thú vị. Việc có thể trích xuất được logic nghiệp vụ đến mức này từ mã nguồn đã được bundling... có lẽ cũng sẽ giúp giảm mạnh chi phí reverse engineering cho các web app được viết theo kiểu SPA.

 
xguru 2025-04-14

Ơ, đang định đọc thì blog hiện đang báo lỗi 500.

 
letaem77a 2025-04-14

Có vẻ blog của tôi đang không ổn định. Nếu bạn không truy cập được, có thể đọc nội dung tại đây gist.github.com.