Chia sẻ

Ngày 14 tháng 11 năm 2024

Cải thiện các công cụ dành cho nhà phát triển sử dụng AI bằng Gemini API

Scott Werner

Giám đốc điều hành của Sublayer

Paige Bailey

Kỹ sư trải nghiệm dành cho nhà phát triển AI

Vishal Dharmadhikari

Kỹ sư giải pháp sản phẩm

Hình ảnh chính trong phần giới thiệu lớp phủ phụ

Việc phổ biến AI trong năm qua đã mở ra hai cơ hội lớn cho nhà phát triển, giúp họ dễ dàng tích hợp AI tiên tiến vào dự án và mang lại hiệu quả dựa trên AI vào quy trình phát triển.

Lớp con, một khung tác nhân AI dựa trên Ruby, thể hiện sức mạnh và hiệu quả của API Gemini 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 của công cụ của riêng họ.

Cập nhật tài liệu về Lớp con 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à các công ty khởi nghiệp nhỏ ở giai đoạn đầu, làm được nhiều việc hơn với ít nguồn lực hơn. Đối với nhiều người, điều này có thể là một việc đơn giản nhưng quan trọng như việc lập 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á AI để hỗ trợ việc cập nhật tài liệu và xác định các khía cạnh cần cải thiện.

“Tất cả đều là nhờ cửa sổ ngữ cảnh khổng lồ của Gemini thực sự mang đến cho bạn không gian để thử nghiệm các ý tưởng mới mà không bị sa lầy vào việc triển khai phức tạp, được tối ưu hoá từ trước”,

– Scott Werner, Giám đốc điều hành của Sublayer, người gần đây đã viết về khái niệm này trong Waste Inferences! (Suy luận về lãng phí!)

Quy trình này diễn ra như sau:

  1. Bất cứ khi nào một yêu cầu thay đổi được hợp nhất vào kho lưu trữ Lớp phụ chính, yêu cầu thay đổi đó sẽ kích hoạt một tác nhân để bắt đầu cập nhật tài liệu.

  2. Tác nhân này tạo một lời nhắc 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 tác vụ và gửi tác vụ đó đến Gemini.

  3. 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 của tệp mà thư viện Lớp phủ chuyển đổi thành một đối tượng để sử dụng.

  4. Cuối cùng, tác nhân sẽ lấy thông tin có cấu trúc đã 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 tệp và gửi một yêu cầu thay đổi 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ụ nguồn mở của Lớp phụ

Sau thành công của dự án đầu tiên này, họ đã mở rộng thêm 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 trang danh mục cụ thể của tài liệu. 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ố khía cạnh cần cải thiện, xếp hạng các khía cạnh đó dựa trên mức tác động và tạo một yêu cầu thay đổi duy nhất để nhóm Sublayer xem xét mỗi sáng.

Mang 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 giúp cơ sở hạ tầng và công cụ dành cho nhà phát triển của riêng họ hoạt động hiệu quả hơn, Lớp con cũng 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à trao quyền cho các nhà phát triển cá nhân và các nhóm nhỏ để giải quyết những dự án đầy tham vọng mà trước đây không thể thực hiện được do chi phí hoặc độ phức tạp. Các công cụ này tập trung vào việc tự động hoá những nhiệm vụ tẻ nhạt, tốn thời gian và lặp đi lặp lại – đây là trường hợp sử dụng hoàn hảo cho AI. Điều này có thể bao gồm 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 việc tăng hiệu quả hàng ngày bằng cách tự động hoá các nhiệm vụ nhỏ trên một danh sách kiểm tra làm tiêu hao thời gian và năng lượng.

Một thách thức chính đối với Lớp phụ là hỗ trợ cộng đồng nhà phát triển Ruby, vốn tương đối ít được phục vụ 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 lớp con rất hiệu quả, chỉ cần khoảng 60 dòng mã nhờ lớp trừu tượng của chúng. Các mô hình 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 lại một lần. Phương pháp này đơn giản hoá quá trình phát triển và gỡ lỗi, giúp nhà phát triển xây dựng các ứng dụng mạnh mẽ.

"Khi xây dựng ứng dụng dựa trên LLM, hãy chia vấn đề thành các thành phần nhỏ nhất có thể", Werner khuyên. "Bạn muốn thiết kế chương trình của mình để xử lý hiệu quả mọi kết quả của mô hình, thậm chí có thể có nghĩa là cố ý thêm các bước để người dùng 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âu đố cơ sở hạ tầng AI

Đối với Lớp phụ, các LLM như Gemini là những phần cơ sở hạ tầng thiết yếu, tương tự như cơ sở dữ liệu. Khung này đượ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 ứ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 các ngôn ngữ và thư viện. Lớp con 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 các ý tưởng mới.

"Gemini rất hiệu quả trong việc giải quyết tất cả các vấn đề mà khung của chúng tôi được thiết kế để giải quyết một cách dễ dàng – tạo mã, phân ly 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ụ"

– Scott Werner, Lớp phủ

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 đầu tiên của họ sẽ có hai công cụ dựa trên Gemini 1.5 Pro: Tìm lỗi mã ngữ nghĩa (Semantic Linting) cho phép các nhóm tạo các quy tắc xem xét mã dựa trên AI để hiểu ngữ cảnh và thực thi các phương pháp hay nhất đang phát triển, và Bản tóm tắt hằng tuần (Weekly Summaries) giúp biế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 nhạy cảm hơn về độ trễ, 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 trở lại khung nguồn mở của họ, cho phép cộng đồng Ruby tận dụng chức năng Gemini mới khi nó ra mắt, đồng thời được thúc đẩy bởi việc sử dụng trong thực tế của nhóm Sublayer.

Câu chuyện của Lớp phủ hiển thị tiềm năng biến đổi của Gemini API. Điều này minh chứng cho việc 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ô vàn cơ hội để đổ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.