分享

Nov 14, 2024

使用 Gemini API 強化 AI 輔助開發人員工具

史考特沃納

Sublayer 執行長

Paige Bailey

AI 開發人員體驗工程師

Vishal Dharmadhikari

產品解決方案工程師

子圖層展示主頁橫幅

過去一年人工智慧的普及為開發者帶來了兩大機會——將尖端人工智慧整合到專案中變得極其容易,以及將人工智慧驅動的效率提升到開發流程中。

Sublayer 是以 Ruby 為基礎的 AI 代理程式架構,透過將 1.5 模型整合至核心開發人員產品,以及自家工具工作流程中,展現 Gemini API 的強大功能和效率。

使用 Gemini 讓 Sublayer 文件保持最新狀態

AI 為開發人員帶來許多機會,其中之一是協助團隊 (尤其是小型初期新創公司) 以更少資源完成更多工作。對許多人來說,這可能只是簡單但至關重要的文件。Sublayer 在自己的工作流程中,將程式庫與 Gemini 1.5 Pro 整合,並建構 AI 自動化功能,協助他們更新文件及找出需要改進的地方。

「這一切都是因為 Gemini 的脈絡窗口非常大,讓你有足夠的空間嘗試新想法,而不必一開始就陷入複雜的實作作業中。」

Sublayer 執行長 Scott Werner 最近在這篇文章中探討了這個概念。

整體程序的運作方式如下:

  1. 每當 PR 合併至主要 Sublayer 存放區,就會觸發代理程式更新文件。

  2. 代理程式會產生提示,其中包含程式庫的完整內容、說明文件的完整內容,以及 PR 的所有相關內容,並附上說明任務的指示,然後將提示傳送給 Gemini。

  3. 接著,Gemini 會回覆包含檔案路徑、名稱和內容的結構化輸出內容,Sublayer 程式庫會將這些內容轉換為物件以供使用。

  4. 最後,代理程式會取得收到的結構化資訊,並用來建立新分支、對檔案進行要求的變更,以及提交新的 PR。

            
              
# 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  
          
            
          

如需完整的工作流程程式碼,請參閱 Sublayer 的開放原始碼範例

第一個專案成功後,他們進一步擴展到代理程式,監控個別資源存放區,專注於確保特定目錄頁面的文件保持最新狀態。甚至還有類似的夜間工作,Gemini 會分析目前的說明文件、找出幾個需要改進的地方、根據影響程度排序,並產生單一 PR,供 Sublayer 團隊每天早上查看及審查。

透過 Gemini 模型,為 Ruby 開發人員社群提供 AI 服務

除了提高自家開發人員基礎架構和工具的效率,Sublayer 也在核心產品功能中支援 Gemini 模型。

Sublayer 的使命是協助個人開發人員和小型團隊,處理先前因成本或複雜度而無法進行的宏大專案。他們專注於自動執行繁瑣、耗時且重複的工作,這正是 AI 的完美應用情境。這包括大規模程式碼遷移 (需要重複執行類似作業數千次),以及透過自動執行檢查清單上的小型工作,提高日常效率,節省時間和精力。

Sublayer 的主要挑戰是支援 Ruby 開發人員社群,這個社群在 AI 生態系統中相對缺乏資源。整合 Gemini 後,他們就能在工具中支援 Gemini,滿足日益成長的需求。Sublayer 的 Gemini 實作方式效率極高,由於有抽象層,因此只需要約 60 行程式碼。這類工具會使用結構化輸出內容,並透過單輪疊代程序與模型互動。這種做法可簡化開發和偵錯程序,協助開發人員建構穩健的應用程式。

Werner 建議:「建構以 LLM 為基礎的應用程式時,請將問題拆解成最小的可能元件。」「您要設計程式,有效處理任何模型輸出內容,這甚至可能表示要刻意加入步驟,讓人員先審查及編輯,再繼續進行。」

低層記憶體(LLM)是人工智慧基礎設施拼圖的核心部分。

對 Sublayer 而言,Gemini 等 LLM 是基礎架構的重要組成部分,類似於資料庫。他們的框架旨在無縫整合對 Gemini 1.5 Pro 和 Gemini 1.5 Flash 的調用,檢索開發人員可以在其應用程式中輕鬆使用的結構化資料。這種方法開啟了無限可能,從各種資料來源中提取見解,到生成程式碼,再到跨語言和函式庫轉換程式碼庫。Sublayer 甚至利用 Gemini 模型,使用戶能夠在框架本身內產生新的功能元件。這種「自組裝」特性鼓勵實驗,使用戶能夠快速探索新想法。

“Gemini 非常擅長解決我們框架旨在簡化的所有問題——程式碼生成、任務分解、遵循指令以及基於範例生成新的資料結構”

——史考特‧沃納,Sublayer

後續步驟

展望未來,Sublayer 正準備推出 Augmentations.ai,這是一個平台,旨在讓所有開發團隊都能使用他們創建的自動化功能。他們的首個版本將包含兩個由 Gemini 1.5 Pro 提供支援的工具:語義程式碼檢查,它允許團隊創建 AI 驅動的程式碼審查規則,這些規則能夠理解上下文並強制執行不斷發展的最佳實踐;以及每週摘要,它將跨多個存儲庫和產品管理工具的開發活動轉化為可供領導層操作的見解。

隨著他們在 Augmentations 平台上發布更多工具,他們計劃繼續混合使用 Gemini 1.5 Pro 來處理更複雜的任務,並使用 Gemini 1.5 Flash 來處理對延遲更敏感、用戶導向的功能。這項工作也將回饋到他們的開源框架中,使 Ruby 社群能夠在 Gemini 新功能發布時利用這些功能,同時由 Sublayer 團隊的實際使用情況推動。

Sublayer 的故事展現了 Gemini API 的變革潛力。這充分證明瞭開發人員可以多麼輕鬆地將 Gemini 整合到他們的工作流程中,從而開啟創新和自動化的無限可能性。如要開始使用 Gemini 模型建構應用程式,請參閱 API 說明文件