分享

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 自动化功能来解决此问题,从而支持保持文档最新状态并确定需要改进的方面。

该工作流程如下:

  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 是 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 提供支持的工具:Semantic Linting,可让团队创建依托 AI 技术的代码审核规则,这些规则能够理解上下文并强制执行不断发展的最佳实践;Weekly Summaries,可将多个代码库和产品管理工具中的开发活动转化为可供领导层采取行动的数据分析。

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

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