借助 Gemini API 增强 AI 驱动的开发者工具

十一月 14, 2024
Vishal Dharmadhikari Product Solutions Engineer
Paige Bailey AI Developer Experience Engineer
Scott Werner Sublayer

过去一年,AI 的大众化为开发者带来了两个重大机遇,一是他们可以非常轻松地将先进 AI 集成到自己的项目中,二是他们可以在自己的开发流程中享受到 AI 驱动的高效。

Sublayer 是一款基于 Ruby 的 AI 代理框架。通过将 Gemini 1.5 模型集成至其核心开发者产品及其自有工具工作流中,Sublayer 可以展现出 Gemini API 的强大功能和超高效率。


借助 Gemini 及时更新 Sublayer 文档

AI 为开发者带来的一大机遇便是使团队(特别是小型早期初创公司的团队)能够以更少的资源完成更多的工作。对于许多人来说,这些工作所涉及到的可能就是类似于文档这样简单但又至关重要的东西。Sublayer 通过在其工作流中将库与 Gemini 1.5 Pro 集成并构建 AI 自动化来解决文档处理问题,以便及时更新文档,同时确定需要改进的领域。

Sublayer 首席执行官 Scott Werner 最近在 Waste Inferences 中写到了这一点:“这一切都是因为 Gemini 的大型上下文窗口可以为您提供真正意义上的‘喘息空间’。你可以尝试各种新想法,而不会陷入复杂的优化实施中。”

相关流程如下所示:

  1. 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 的开源示例


在第一个项目取得成功后,Sublayer 团队进一步开发了监控独立资源存储库的代理,该代理专注于及时更新记录着 Sublayer 文档的特定目录页面。他们甚至还有一项在夜间进行的类似任务,在该任务期间,Gemini 会分析当前文档,确定一系列需要改进的领域,并按照影响大小对其进行排序,然后生成单独的 PR,供 Sublayer 团队在次日早晨审核。


借助 Gemini 模型将 AI 引入 Ruby 开发者社区

Sublayer 不仅通过 Gemini 模型将自己的开发者基础设施和工具变得更高效,还致力于在自己的核心产品功能中提供 Gemini 模型支持。

Sublayer 的使命是助力个人开发者和小型团队应对以前由于成本或复杂性而无法实施的雄心勃勃的项目。他们专注于实现繁琐、耗时的重复性任务的自动化,这对于 AI 来说是一个很好的用例。这种自动化可以助力大规模代码迁移(需要重复数千次类似的操作),也可以将核对清单上颇费时间和精力的小型任务自动化,从而提升日常效率。

Sublayer 面临的主要挑战之一是为 Ruby 开发者社区提供支持,该社区在 AI 生态系统中获得的相关服务相对不足。集成 Gemini 有助于他们在自己的工具中添加对 Gemini 的支持,以满足日益增长的有关需求。Sublayer 的 Gemini 实现非常高效,只需要大约 60 行代码即可完成,这都归功于其抽象层。它们使用结构化输出,可在单轮迭代流程中与模型交互。这种方法简化了开发和调试工作,可帮助开发者构建稳健的应用。

Werner 建议道:“在构建基于 LLM 的应用时,请将问题分解为尽可能小的组件。如果您希望设计的程序能够有效处理任何模型输出,那这甚至可能意味着您需要有意添加人工审核和编辑的步骤,然后再执行后续步骤。”


大型语言模型 (LLM):AI 基础设施难题的核心

对于 Sublayer 来说,Gemini 等 LLM 是基础设施的重要组成部分,类似于数据库。他们的框架旨在无缝集成对 Gemini 1.5 Pro 和 Gemini 1.5 Flash 的调用,以便检索可供开发者直接在其应用中使用的结构化数据。这种方法开辟了一个充满可能性的世界,用户可以从不同数据源提取见解,或者生成代码并跨语言和库转换代码库。Sublayer 甚至使用 Gemini 模型来帮助用户在框架内生成新的功能组件。这种“自组装”特性鼓励用户开展实验,让用户能够快速探索新颖的想法。

“Gemini 非常擅长解决我们的框架旨在简化的所有问题,包括代码生成、任务分解、遵循说明,以及基于示例生成新的数据结构。”
——
Scott Werner,Sublayer 首席执行官


未来计划

展望未来,Sublayer 准备发布 Augmentations.ai。这是一个平台,可让所有开发团队使用 Sublayer 创建的自动化。他们的初始版本将包含两个由 Gemini 1.5 Pro 提供支持的工具:其一是语义 lint 检查,该功能允许团队创建 AI 驱动的代码审核规则,这些规则可以理解上下文并强制执行不断变化的最佳实践;其二为每周总结,该功能可将跨多个存储库和产品管理工具的开发活动转化为切实可行的见解,以供领导层使用。

他们计划在 Augmentations 平台上发布更多工具,同时继续将 Gemini 1.5 Pro 用于更复杂的任务,并将Gemini 1.5 Flash 用于对延迟更敏感的面向用户的功能。这项工作也会反映在他们的开源框架中,以便 Ruby 社区利用新推出的 Gemini 功能,同时 Sublayer 团队也能将这些新功能用于现实用例中。

Sublayer 的故事展示了 Gemini API 的变革潜力。这证明了开发者可以轻松将 Gemini 集成到他们的工作流中,为创新和自动化开辟一个充满机遇的世界。要使用 Gemini 模型开始构建工作,请参阅我们的 API 文档