分享

2024 年 11 月 14 日

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

Scott Werner

Sublayer 執行長

Paige Bailey

AI 開發人員體驗工程師

Vishal Dharmadhikari

產品解決方案工程師

Sublayer 展示主頁橫幅

過去一年,AI 技術普及化為開發人員帶來兩大商機:讓開發人員輕鬆將尖端 AI 技術整合至專案,並在開發過程中導入 AI 技術帶來的效率。

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

使用 Gemini 更新子層說明文件

AI 技術為開發人員帶來的其中一個商機,就是讓團隊 (尤其是規模較小、處於初期的新創公司) 以更少的資源完成更多工作。對許多人來說,這可能會是簡單但重要的文件。在 Sublayer 自己的工作流程中,他們將程式庫與 Gemini 1.5 Pro 整合,並建構 AI 自動化功能,以便持續更新文件,並找出可改善的部分。

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

Sublayer 執行長 Scott Werner 在最近的「Waste Inferences!」一文中提到這個概念。

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

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

  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 的主要挑戰,是支援 AI 生態系統中相對缺乏服務的 Ruby 開發人員社群。整合 Gemini 後,他們就能滿足工具中對 Gemini 支援功能日益增加的需求。Sublayer 的 Gemini 實作方式非常有效率,因為有了抽象層,只需要約 60 行程式碼即可。這類模型會使用結構化輸出內容,在單輪疊代程序中與模型互動。這種做法可簡化開發和偵錯作業,協助開發人員建構可靠的應用程式。

「建構以 LLM 為基礎的應用程式時,請將問題分解為盡可能小的元件。」Werner 建議。「您應該設計可有效處理任何模型輸出的程式,甚至可以有意新增步驟,讓使用者在繼續前先查看及編輯。」

大型語言模型 (LLM) 是 AI 基礎架構拼圖的核心部分

對 Sublayer 而言,Gemini 等大型語言模型是基礎架構的重要部分,類似資料庫。這個架構旨在無縫整合對 Gemini 1.5 Pro 和 Gemini 1.5 Flash 的呼叫,擷取開發人員可在應用程式中輕鬆使用的結構化資料。這種做法可帶來無限可能,從從各種資料來源擷取洞察資料,到產生程式碼,以及跨語言和程式庫轉換程式碼庫,Sublayer 甚至使用 Gemini 模型,讓使用者在架構中產生新的功能元件。這種「自組裝」特性可鼓勵實驗,讓使用者快速探索新穎的想法。

「Gemini 非常適合解決我們架構設計的所有問題,讓您輕鬆完成程式碼產生、工作分解、遵循指示,以及根據範例產生新資料結構。」

— Sublayer 的 Scott Werner

後續步驟

展望未來,Sublayer 正準備推出 Augmentations.ai,這個平台可讓所有開發團隊使用他們建立的自動化功能。他們的初始版本將推出兩項由 Gemini 1.5 Pro 提供支援的工具:語意檢查,可讓團隊建立 AI 輔助程式碼審查規則,瞭解脈絡並強制執行不斷進化的最佳做法;以及每週摘要,可將多個存放區和產品管理工具的開發活動轉換為可供主管參考的實用洞察資料。

隨著 Augmentations 平台推出更多工具,他們打算繼續使用 Gemini 1.5 Pro 處理較複雜的工作,並使用 Gemini 1.5 Flash 處理對延遲較為敏感的使用者端功能。這項工作也會回饋至開放原始碼架構,讓 Ruby 社群能夠在 Sublayer 團隊實際使用情況的驅動下,充分運用新推出的 Gemini 功能。

Sublayer 的故事展示了 Gemini API 的轉型潛力。這也證明開發人員可以輕鬆將 Gemini 整合至工作流程,開啟無限的創新和自動化機會。如要開始使用 Gemini 模型建構內容,請參閱我們的 API 說明文件