共有

2024 年 11 月 14 日

Gemini API による AI を活用したデベロッパー ツールの強化

Scott Werner

Sublayer の CEO

Paige Bailey

AI デベロッパー エクスペリエンス エンジニア

Vishal Dharmadhikari

プロダクト ソリューション エンジニア

サブレイヤのショーケースのヒーロー

過去 1 年間で AI の民主化が進み、デベロッパーにとって 2 つの大きな機会が生まれました。最先端の AI をプロジェクトに非常に簡単に統合できるようになったことと、AI を活用した効率性を開発プロセスに取り入れられるようになったことです。

Ruby ベースの AI エージェント フレームワークである Sublayer は、1.5 モデルをコア デベロッパー サービスと独自のツール ワークフローに統合することで、Gemini API のパワーと効率性を実証しています。

Gemini を使用して Sublayer ドキュメントを最新の状態に保つ

AI を活用することで、特に小規模な初期段階のスタートアップにおいて、チームがより少ないリソースでより多くのことを実現できるようになります。多くの人にとって、これはドキュメントのようなシンプルで重要なものになる可能性があります。Sublayer は、独自のワークフローでこの問題に対処するため、ライブラリを Gemini 1.5 Pro と統合し、ドキュメントの最新情報を維持し、改善すべき領域を特定する作業をサポートする AI 自動化を構築しています。

「Gemini の大規模なコンテキスト ウィンドウにより、複雑で最適化された実装に最初から取り組むことなく、新しいアイデアを試す余裕が生まれます。」

Sublayer の CEO である Scott Werner 氏は、最近 Waste Inferences! でこのコンセプトについて書いています。

この処理は次のように行われます。

  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 が現在のドキュメントを分析し、改善すべき領域をいくつか特定して、影響度に基づいてランク付けし、Sublayer チームが毎朝確認できる単一の PR を生成します。

Gemini モデルで Ruby デベロッパー コミュニティに AI を導入

Sublayer は、独自のデベロッパー インフラストラクチャとツールを効率化するだけでなく、コアプロダクトの機能内で Gemini モデルもサポートしています。

Sublayer の使命は、費用や複雑さのためにこれまで手が届かなかった野心的なプロジェクトに、個々のデベロッパーや小規模なチームが取り組めるようにすることです。AI の最適なユースケースである、退屈で時間のかかる反復的なタスクの自動化に重点を置いています。大規模なコード移行(同様のオペレーションを数千回繰り返す必要がある)から、時間とエネルギーを消耗するチェックリストの小さなタスクを自動化することで実現される日常的な効率化まで、さまざまなものがあります。

Sublayer の主な課題は、AI エコシステムで比較的サービスが不足している Ruby デベロッパー コミュニティをサポートすることです。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 を活用した 2 つのツールが提供されます。セマンティック リンティングでは、コンテキストを理解し、進化するベスト プラクティスを適用する AI を活用したコードレビュー ルールをチームが作成できます。週次レポートでは、複数のリポジトリとプロダクト マネジメント ツールにわたる開発アクティビティを、リーダーシップに役立つ分析情報に変換できます。

Augmentations プラットフォームでツールをリリースするにつれて、より複雑なタスクには Gemini 1.5 Pro を、レイテンシの影響を受けやすいユーザー向けの機能には Gemini 1.5 Flash を組み合わせて使用していく予定です。この作業はオープンソース フレームワークにもフィードバックされ、Sublayer チームによる実際の使用に基づいて、Ruby コミュニティが新しい Gemini 機能を活用できるようになります。

Sublayer のストーリーは、Gemini API の変革の可能性を示しています。これは、デベロッパーが Gemini をワークフローに簡単に統合し、イノベーションと自動化の可能性を広げることができることを証明するものです。Gemini モデルでの構築を開始するには、API ドキュメントをご覧ください。