分享

2024 年 11 月 14 日

使用 Gemini API 增强 AI 赋能的开发者工具

Scott Werner

Sublayer 首席执行官

Paige Bailey

AI 开发者体验工程师

Vishal Dharmadhikari

产品解决方案工程师

子图层展示效果主图

过去一年来,AI 技术的普及为开发者带来了两大机遇:让他们能够非常轻松地将尖端 AI 技术集成到自己的项目中,并在开发过程中运用 AI 技术提高效率。

Sublayer 是一个基于 Ruby 的 AI 代理框架,它将我们的 1.5 模型集成到其核心开发者产品以及自己的工具工作流中,从而展示了 Gemini API 的强大和高效。

使用 Gemini 及时更新子层文档

AI 为开发者带来的一个机会是,让团队(尤其是处于早期阶段的小型创业公司)能够事半功倍。对于许多人来说,这可能是一些简单但至关重要的文档。在自己的工作流中,Sublayer 通过将其库与 Gemini 1.5 Pro 集成并构建 AI 自动化操作来解决此问题,从而支持及时更新文档并确定改进领域。

“这一切之所以能够实现,是因为 Gemini 的超大上下文窗口让您有足够的空间来尝试新想法,而无需一开始就陷入复杂的优化实现中。”

”Sublayer 的首席执行官 Scott Werner 说道,他最近在 Waste Inferences! 一文中介绍了这一概念。

该工作流程如下:

  1. 每当有 PR 合并到主要子层级代码库中时,系统都会触发代理来更新文档。

  2. 该代理会生成一个提示,其中包含库的全部内容、文档的全部内容、PR 的所有相关内容以及说明任务的说明,并将其发送给 Gemini。

  3. 然后,Gemini 会响应以结构化输出,其中包含文件路径、名称和内容,这些内容会被子层库转换为要使用的对象。

  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 行代码。它们使用结构化输出,在单轮迭代过程中与模型交互。这种方法简化了开发和调试过程,有助于开发者构建稳健的应用。

“在构建基于 LLM 的应用时,请将问题拆分为尽可能小的组件。”Werner 建议道。“您需要设计程序来有效处理任何模型输出,这可能甚至意味着要刻意添加一些步骤,以便用户在继续操作之前进行查看和修改。”

LLM:AI 基础架构拼图的核心部分

对于 Sublayer,Gemini 等 LLM 是基础设施的重要组成部分,类似于数据库。该框架旨在无缝集成对 Gemini 1.5 Pro 和 Gemini 1.5 Flash 的调用,检索开发者可以在其应用中轻松利用的结构化数据。这种方法提供了无限的可能性,从从各种数据源中提取数据洞见,到生成代码以及跨语言和库转换代码库。Sublayer 甚至使用 Gemini 模型,让用户能够在框架本身中生成新的功能组件。这种“自组装”特性鼓励用户进行实验,并让用户能够快速探索新颖的想法。

“Gemini 非常擅长解决我们框架旨在简化处理的所有问题,例如代码生成、任务分解、遵循说明以及根据示例生成新的数据结构”

- Scott Werner,Sublayer

后续步骤

展望未来,Sublayer 正准备推出 Augmentations.ai,该平台可让所有开发团队都能够使用他们创建的自动化功能。该工具的初始版本将提供两款由 Gemini 1.5 Pro 赋能的工具:语义 linting,可让团队创建 AI 赋能的代码审核规则,这些规则可理解上下文并强制执行不断演变的最佳实践;以及每周摘要,可将多个代码库和产品管理工具中的开发活动转化为实用的数据洞见,供领导层参考。

随着他们在增强平台上发布更多工具,他们计划继续混合使用 Gemini 1.5 Pro 来处理更复杂的任务,并使用 Gemini 1.5 Flash 来处理对延迟时间更敏感的面向用户的功能。这项工作还将反馈到他们的开源框架中,让 Ruby 社区能够在 Gemini 新功能发布时立即使用,同时受 Sublayer 团队的实际使用情况驱动。

Sublayer 的故事展示了 Gemini API 的变革潜力。这证明开发者可以轻松地将 Gemini 集成到其工作流中,从而开启创新和自动化的无限可能。如需开始使用 Gemini 模型进行构建,请参阅我们的 API 文档