ADK と Gemini CLI でエージェントの「バイブ ビルディング」フローをシンプルに

2025年7月16日
Julia Wiesinger Product Manager
Hangfei Lin Staff Soft Engineer

デベロッパーにとって、「フロー」状態は神聖なものです。この魔法のような領域にいるとき、アイデアはほぼ何の苦労もなく、コードに変換されます。このフローの最大の敵は、手間のかかる作業です。ドキュメントを読んだり、フレームワークを選んだり、コンテキストを切り替えたりすれば、このクリエイティブな領域から離れることになります。

そこで、エージェント開発キット(ADK)をアップデートしました。今回のアップデートと Gemini CLI を組み合わせると、手間を減らし、エージェントの「バイブ コーディング」体験を促進できます。この組み合わせにより、適切なコンテキストがすべて提供され、Gemini とシームレスな会話ができるようになるので、これまでにないスピードとスムーズさで、皆さんのハイレベルなアイデアを実用的なエージェントに変えることができます。エージェントで現実世界の問題を解決するために費やす時間が増え、ゼロからコーディングする時間を大幅に短縮できます。


成功の秘訣: ADK の llms-full.txt でフローに近づく

今回のアップグレードの中心となるのが、刷新された llms-full.txt ファイルです。ADK リポジトリに含まれているこのファイルは、ADK フレームワーク全体を綿密に整理した要約ガイドのようなものです。ADK のすべてのコンポーネント、機能、ベスト プラクティスを詳しく記述した地図だと考えることができます。

具体的には、ファイルを 50% 以上小さくして(トークン数が少なくなります!)、LLM が簡単に理解できるようにしました。これが優れたコーディング体験の鍵になります。コンテキスト ウィンドウを消費したり、「コンテキストの腐敗」を起こしたりすることなく、Gemini が ADK を完全に理解できるようになるからです。

つまり、Gemini CLI と組み合わせることで、強力なコーディング アシスタントをはるかに低コストで高精度な ADK のスペシャリストに変えることができます。CLI はフレームワークをネイティブで深く理解し、ハイレベルな計画であっても、正確で自然なマルチエージェント コードに直接変換できます。プロトタイプまでの時間を劇的に短縮し、実用的なエージェントを数分で生成できるので、コーディングに多大な時間を費やすことなく、自由に実験や反復作業を行うことができます。


実際のバイブ コーディング: AI で Github の問題をラベル付けするエージェントを作成する

実際のシナリオがどのようなものになるか、見てみることにしましょう。ここでは、Github の問題の優先順位付けや担当割りを簡単に行えるように、ADK で問題ラベル付け AI エージェントを作成してみます。わずか数ステップで、シンプルなアイデアを実際に動作する ADK エージェントにすることができます。


ステップ 0: llms-full.txt をダウンロードする

adk-python から作業ディレクトリに llms-full.txt をダウンロードします。


ステップ 1: Gemini CLI で計画のアイデアを出す

まず、Gemini CLI をブレーンストーミングのパートナーとして、ハイレベルな計画を作成します。

デベロッパー: ADK フレームワークを使って、Gemini で Github の個人リポジトリ(https://github.com/google/adk-python)の問題にラベルを付ける AI エージェントを作りたいと考えています。GitHub の問題を読んで、あらかじめ定義してあるラベルを付ける必要があります(最初に一般的なラベルをいくつか考えてください)。どうすればいいか、計画を立ててもらえますか。@llms-full.txt

Gemini CLI:

計画: GitHub 問題ラベル付けエージェント

目的は、Python ベースの AI エージェントを作ることです。このエージェントは、GitHub の問題を分析して、リポジトリであらかじめ定義されているラベルから、関連があるものを適用します。ADK フレームワークを使って、エージェントのロジックと、分析用の Gemini モデルをオーケストレーションします。

フェーズ 1: プロジェクトの設定と構成

1. プロジェクトの初期化: 新しい Python プロジェクト ディレクトリを設定します。

2. 依存関係のインストール: google-adk ライブラリと、PyGithub などの GitHub API クライアント ライブラリをインストールします。

3. GitHub 認証: repo 権限を持つ GitHub パーソナル アクセス トークン(PAT)を作成し、エージェントが問題を読み取ってラベルを適用できるようにします。このトークンは環境変数として安全に構成します。


フェーズ 2: GitHub 用カスタムツールの開発

エージェントには、GitHub を操作するためのツールが必要です。そこで、github_tools.py ファイルを作成し、エージェントに公開する以下の関数を含めます。

  • get_issue(repo_name, issue_number): 特定の GitHub の問題のタイトルと本文を取得します。

  • get_available_labels(repo_name): リポジトリに存在するすべてのラベルのリストを取得します。

  • apply_label(repo_name, issue_number, label): 特定の問題に特定のラベルを適用します。


フェーズ 3: ラベル付けエージェントの作成

ADK フレームワークを使い、main.py ファイルに新しいエージェントを定義します。

1. エージェントの定義: エージェントを設定し、Gemini モデル(例: gemini-1.5-flash)を使うようにします。

2. ツールの組み込み: フェーズ 2 のカスタム GitHub ツールをエージェントに提供します。

3. 中核となる指示(プロンプト): エージェントのシステム プロンプトで、以下の明確なワークフローに従うよう指示します。

  • まず、get_issue ツールを使って問題の内容を把握します。

  • 次に、get_available_labels ツールを使って有効なオプションを確認します。

  • その分析に基づいて、適用すべき最適なラベルを 1 つ決定します。

  • 最後に、apply_label ツールを使って選択したラベルを問題に追加します。


フェーズ 4: アプリケーション エントリポイントの作成

main.py に、エージェントを実行できるシンプルなコマンドライン インターフェース(CLI)を作成します。この CLI は、GitHub リポジトリ名と問題番号を入力として受け取り、エージェントを起動してラベル付けタスクを実行します。

お望みであれば、この計画を実装することもできます。


コードを 1 行も書くことなく、ロジックを定義できました。


ステップ 2: 計画を ADK エージェントに変換する

次に、ADK の llms-full.txt を使って、この計画を実際のエージェントに変換します。

デベロッパー: ありがとう。次に、Python ADK を使ってこの計画のコードを生成してください。@llms-full.txt(Gemini CLI は、ADK の llms-full.txt を参照し、計画を正しい ADK コードに変換します。)

Gemini CLI

import argparse
import asyncio
from google.adk.agents import Agent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.genai import types
 
from github_tools import get_issue, get_available_labels, apply_label
 
 
 
labeling_agent = Agent(
    name="github_labeler",
    model="gemini-1.5-flash",
    instruction="""You are an AI agent that labels GitHub issues.
    1. First, use the 'get_issue' tool to read the issue's title and body.
    2. Then, use the 'get_available_labels' tool to see all possible labels for the repository.
    3. Analyze the issue content and choose the most relevant label from the available options.
    4. Finally, use the 'apply_label' tool to add the chosen label to the issue.
    5. Respond with a confirmation message stating which label was applied.
    """,
    tools=[get_issue, get_available_labels, apply_label],
)
Python


from github import Github
from config import GITHUB_TOKEN
 
g = Github(GITHUB_TOKEN)
 
def get_issue(repo_name: str, issue_number: int) -> str:
    """Fetches the title and body of a specific GitHub issue."""
    repo = g.get_repo(repo_name)
    issue = repo.get_issue(number=issue_number)
    return f"Title: {issue.title}\nBody: {issue.body}"
 
def get_available_labels(repo_name: str) -> list[str]:
    """Retrieves the list of all existing labels for the repository."""
    repo = g.get_repo(repo_name)
    labels = [label.name for label in repo.get_labels()]
    return labels
 
def apply_label(repo_name: str, issue_number: int, label: str) -> str:
    """Applies a given label to a specific issue."""
    repo = g.get_repo(repo_name)
    issue = repo.get_issue(number=issue_number)
    issue.add_to_labels(label)
    return f"Successfully applied label '{label}' to issue #{issue_number}."
Python

(requirements.txt と label_config.py も生成されますが、簡潔にするため、ここでは省略します。)

ADK フレームワークを正しく使い、完全に動作する実用的なエージェント アプリケーションが即座にできあがります。必要なコンテキストが llms-full.txt ファイルで提供されるため、CLI がすべてのボイラープレートを生成してくれます。


ステップ 3 & 4: フロー状態のままテストと改善を行う

生成されたコードを使ってローカルでテストします。バグを見つけたり、改善点が思い浮かんだりするかもしれません。たとえば、ラベル付けを終えた ADK エージェントにサマリーを作成させたくなることもあるでしょう。皆さんはフロー状態にとどまったまま、ただ変更を依頼することができます。

デベロッパー: エージェントに「some_new_label」という新しいラベルを追加してもらえますか?


Gemini CLI は、スクリプトのコンテキストを保持しているので、コードをリファクタリングして変更を実装してくれます。手動でコードを編集したり、勢いを失ったりすることはありません。


ステップ 5: 同じ作業を繰り返す

この反復ループが新しいワークフローとなります。

1: エージェントのロジックのアイデアを出す

2: Gemini CLI で ADK コードを生成する

3: すぐにテストする

4: シンプルな会話型リクエストで改善する

クリエイティブなゾーンを離れることを余儀なくさせる典型的な手間なしに、エージェントが完璧になるまで、このサイクルを繰り返すことができます。