Ngày 14 tháng 11 năm 2024
Nâng cao các công cụ dành cho nhà phát triển dựa trên AI bằng Gemini API

Việc phổ biến AI trong năm qua đã mở ra hai cơ hội lớn cho các nhà phát triển: giúp họ dễ dàng tích hợp AI tiên tiến vào các dự án của mình và mang lại hiệu quả dựa trên AI cho quy trình phát triển.
Sublayer, một khung tác nhân AI dựa trên Ruby, minh hoạ sức mạnh và hiệu quả của Gemini API bằng cách tích hợp các mô hình 1.5 của chúng tôi vào sản phẩm cốt lõi dành cho nhà phát triển cũng như trong quy trình làm việc bằng công cụ của riêng họ.
Cập nhật tài liệu về Sublayer bằng Gemini
Một trong những cơ hội mà AI mang lại cho nhà phát triển là giúp các nhóm, đặc biệt là trong các công ty khởi nghiệp nhỏ ở giai đoạn đầu, làm được nhiều việc hơn mà không tốn nhiều công sức. Đối với nhiều người, điều này có thể nằm ở một thứ đơn giản nhưng quan trọng như tài liệu. Trong quy trình làm việc của riêng mình, Sublayer giải quyết vấn đề này bằng cách tích hợp thư viện của họ với Gemini 1.5 Pro và xây dựng các quy trình tự động hoá bằng AI để hỗ trợ công việc cập nhật tài liệu và xác định các điểm cần cải thiện.
"Tất cả là nhờ cửa sổ ngữ cảnh rộng lớn của Gemini, giúp bạn có đủ không gian để thử nghiệm những ý tưởng mới mà không bị sa lầy vào các quy trình triển khai phức tạp, được tối ưu hoá ngay từ đầu",
Quy trình này diễn ra như sau:
Bất cứ khi nào một PR được hợp nhất vào kho lưu trữ Sublayer chính, nó sẽ kích hoạt một tác nhân để bắt đầu cập nhật tài liệu.
Trợ lý sẽ tạo một câu lệnh chứa toàn bộ nội dung của thư viện, toàn bộ nội dung của tài liệu và tất cả nội dung liên quan của PR cùng với hướng dẫn giải thích nhiệm vụ và gửi câu lệnh đó đến Gemini.
Sau đó, Gemini sẽ phản hồi bằng các đầu ra có cấu trúc chứa đường dẫn, tên và nội dung tệp mà thư viện Sublayer chuyển đổi thành một đối tượng để sử dụng.
Cuối cùng, tác nhân sẽ lấy thông tin có cấu trúc mà tác nhân nhận được và sử dụng thông tin đó để tạo một nhánh mới, thực hiện các thay đổi được yêu cầu đối với các tệp và gửi một PR mới.
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call
# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call
# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
code_context: code_context,
doc_context: doc_context,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
code_context: code_context,
doc_context: doc_context,
context_ignore_list: context_ignore_list,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
code_context: code_context,
suggestions: suggestions,
doc_context: doc_context,
context_ignore_list: context_ignore_list
).generate
# Update each of the files returned by Gemini 1.5 Pro and create a new PR
Xem mã quy trình làm việc hoàn chỉnh trong các ví dụ mã nguồn mở của Sublayer
Sau thành công của dự án đầu tiên này, họ đã mở rộng hơn nữa sang các tác nhân giám sát các kho lưu trữ tài nguyên riêng biệt để tập trung vào việc cập nhật một trang danh mục cụ thể trong tài liệu của họ. Thậm chí, còn có một tác vụ tương tự chạy qua đêm, trong đó Gemini phân tích tài liệu hiện tại, xác định một số điểm cần cải thiện, xếp hạng các điểm đó dựa trên mức độ tác động và tạo một yêu cầu kéo duy nhất để nhóm Sublayer xem xét vào mỗi buổi sáng.
Đưa AI đến với cộng đồng nhà phát triển Ruby bằng các mô hình Gemini
Ngoài việc nâng cao hiệu quả cho cơ sở hạ tầng và công cụ dành cho nhà phát triển của riêng mình, Sublayer còn hỗ trợ các mô hình Gemini trong chức năng sản phẩm cốt lõi của họ.
Sứ mệnh của Sublayer là giúp các nhà phát triển cá nhân và nhóm nhỏ thực hiện những dự án đầy tham vọng mà trước đây họ không thể thực hiện do chi phí hoặc độ phức tạp. Họ tập trung vào việc tự động hoá các công việc tẻ nhạt, tốn thời gian và lặp đi lặp lại – trường hợp sử dụng hoàn hảo cho AI. Việc này có thể bao gồm từ việc di chuyển mã trên quy mô lớn (trong đó các thao tác tương tự cần được lặp lại hàng nghìn lần) cho đến hiệu quả hằng ngày đạt được bằng cách tự động hoá các tác vụ nhỏ trong danh sách kiểm tra, vốn tiêu tốn thời gian và năng lượng.
Thách thức chính đối với Sublayer là hỗ trợ cộng đồng nhà phát triển Ruby. Đây là cộng đồng tương đối ít được quan tâm trong hệ sinh thái AI. Việc tích hợp Gemini giúp họ đáp ứng nhu cầu ngày càng tăng về việc hỗ trợ Gemini trong các công cụ của họ. Việc triển khai Gemini của Sublayer rất hiệu quả, chỉ cần khoảng 60 dòng mã nhờ lớp trừu tượng của họ. Các công cụ này sử dụng đầu ra có cấu trúc, tương tác với các mô hình trong một quy trình lặp đi lặp lại một lượt. Phương pháp này giúp đơn giản hoá quá trình phát triển và gỡ lỗi, đồng thời giúp nhà phát triển tạo ra các ứng dụng mạnh mẽ.
Werner khuyên: "Khi xây dựng các ứng dụng dựa trên LLM, hãy chia vấn đề thành những thành phần nhỏ nhất có thể". "Bạn cần thiết kế các chương trình để xử lý hiệu quả mọi kết quả đầu ra của mô hình, thậm chí có thể cố ý thêm các bước để một người xem xét và chỉnh sửa trước khi tiếp tục."
LLM, một phần cốt lõi của cơ sở hạ tầng AI
Đối với Sublayer, các LLM như Gemini là những thành phần cơ sở hạ tầng thiết yếu, tương tự như cơ sở dữ liệu. Khung của họ được thiết kế để tích hợp liền mạch các lệnh gọi đến cả Gemini 1.5 Pro và Gemini 1.5 Flash, truy xuất dữ liệu có cấu trúc mà nhà phát triển có thể dễ dàng sử dụng trong các ứng dụng của họ. Phương pháp này mở ra vô vàn khả năng, từ việc trích xuất thông tin chi tiết từ nhiều nguồn dữ liệu đến việc tạo mã và chuyển đổi cơ sở mã trên nhiều ngôn ngữ và thư viện. Sublayer thậm chí còn sử dụng các mô hình Gemini để cho phép người dùng tạo các thành phần chức năng mới trong chính khung này. Đặc điểm "tự lắp ráp" này khuyến khích thử nghiệm và cho phép người dùng khám phá nhanh chóng những ý tưởng mới.
"Gemini rất giỏi giải quyết mọi vấn đề mà khung của chúng tôi được thiết kế để giúp bạn dễ dàng thực hiện – tạo mã, phân tách tác vụ, làm theo hướng dẫn và tạo cấu trúc dữ liệu mới dựa trên các ví dụ"
Bước tiếp theo
Trong tương lai, Sublayer đang chuẩn bị ra mắt Augmentations.ai, một nền tảng cung cấp các tính năng tự động hoá mà họ đang tạo cho tất cả các nhóm phát triển. Bản phát hành ban đầu của họ sẽ có 2 công cụ dựa trên Gemini 1.5 Pro: Semantic Linting (Phân tích ngữ nghĩa), cho phép các nhóm tạo ra các quy tắc đánh giá mã dựa trên AI, hiểu rõ bối cảnh và thực thi các phương pháp hay đang phát triển, và Weekly Summaries (Bản tóm tắt hằng tuần), giúp chuyển hoạt động phát triển trên nhiều kho lưu trữ và công cụ quản lý sản phẩm thành thông tin chi tiết hữu ích cho ban lãnh đạo.
Họ dự định tiếp tục sử dụng kết hợp Gemini 1.5 Pro cho các tác vụ phức tạp hơn và Gemini 1.5 Flash cho chức năng có độ trễ nhạy cảm hơn, hướng đến người dùng khi họ phát hành thêm các công cụ trên nền tảng Augmentations. Công việc này cũng sẽ được đưa vào khuôn khổ nguồn mở của họ, cho phép cộng đồng Ruby tận dụng chức năng mới của Gemini khi chức năng này ra mắt, đồng thời được thúc đẩy bởi việc sử dụng thực tế của nhóm Sublayer.
Câu chuyện của Sublayer cho thấy tiềm năng biến đổi của Gemini API. Đây là minh chứng cho thấy nhà phát triển có thể dễ dàng tích hợp Gemini vào quy trình làm việc của họ, mở ra vô số cơ hội cho sự đổi mới và tự động hoá. Để bắt đầu xây dựng bằng các mô hình Gemini, hãy đọc tài liệu về API của chúng tôi.