使用 ADK 和 Gemini CLI 简化智能体“氛围构建”流程

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

对开发者而言,“心流”状态神圣不可侵。那是一种代码与思维浑然天成的魔法境界。而此状态的最大敌人正是阻碍因素,无论是查阅文档、框架选择,还是让您脱离创意空间的情境切换,均属此列。

正因如此,我们激动地宣布智能体开发套件 (ADK) 的重大更新:与 Gemini CLI 搭配使用时,此更新可彻底消除阻碍因素,大幅提升智能体的“氛围编程”体验。该组合使您在与 Gemini 的无碍对话中获取完整上下文,以前所未有的速度和流畅性将宏观构想转化为功能型智能体。这样一来,您可花更多时间利用智能体解决实际问题,而无需花费大量时间从头开始编写代码。


秘诀:ADK 的 llms-full.txt 如何助您高效工作

此次更新的核心是 ADK 代码库中新版 llms-full.txt 文件。您可以将其视为条理清晰、内容精简的 ADK 框架指南,其中详尽介绍了 ADK 所有组件、功能和最佳实践。

具体而言,我们将文件体积缩减 50% 以上(token 更少,少即是好!),让 LLM 更容易理解。这正是优化“氛围编程”体验的关键:Gemini 现可完整理解 ADK 框架…既无需占用您的上下文窗口,亦能规避“上下文腐化”陷阱。

现在,Gemini CLI 与您携手,助您以更低的成本和更高的准确率,将强大的编程助手转变为 ADK 专家。CLI 对框架拥有深入的原生理解,能够将您的宏观计划直接转换为准确、符合语言习惯的多智能体代码。这显著加快了原型开发速度;由于您可以在几分钟内生成一个功能齐全的智能体,因此您可以自由地进行实验和迭代,而无需在前期投入大量的编码时间。


氛围编程实战演练:构建用于标记 GitHub 问题的 AI 智能体

让我们看看在实际场景中这是什么感觉。我们将构建一个 AI 智能体来标记 ADK 的 Github 问题,以便更轻松地确定问题的优先级和分配,只需几个步骤即可从一个简单的想法变成一个可以运行的 ADK 智能体。


第 0 步:下载 llms-full.txt

adk-python 下载 llms-full.txt 到您的工作目录。


第 1 步:使用 Gemini CLI 构思计划

首先,我们使用 Gemini CLI 作为头脑风暴合作伙伴来创建宏观计划。

您:我想利用 ADK 框架构建一个 AI 智能体,帮助我使用 Gemini 在我的代码库 (https://github.com/google/adk-python) 中标记 Github 问题。这个智能体应该读取 Github 问题并使用一些预定义的标签标记这些问题(请先想出一些常用的标签)。请制定一个操作计划。@llms-full.txt

Gemini CLI:

计划:GitHub 问题标记智能体

目标是创建一个基于 Python 的 AI 智能体,这个智能体可以分析 GitHub 问题并从您的代码库中应用相关的预定义标签。我们将使用 ADK 框架来编排智能体的逻辑,并使用 Gemini 模型展开分析。

第 1 阶段:项目设置&配置

1. 初始化项目:设置新的 Python 项目目录。

2. 安装依赖项:安装 google-adk 库和 GitHub API 客户端库,如 PyGithub

3. GitHub 身份验证:创建一个具有代码库权限的 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 工具查看有效选项。

  • 根据分析结果,确定最合适的单一标签进行标记。

  • 最后,使用 apply_label 工具为问题添加所选标签。


第 4 阶段:创建应用程序入口点

我们将在 main.py 中创建一个简单的命令行界面 (CLI),以便您运行智能体。该界面将接受 GitHub 代码库名称和问题编号作为输入,然后触发智能体执行标记任务。

您希望我继续实施这个计划吗?


您已经明确阐述了相关逻辑,但尚未编写任何一行代码。


第 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 框架。CLI 处理了所有的样板代码,因为 llms-full.txt 文件为这些代码提供了必要的背景信息。


第 3 步&第 4 步:在流程中测试和改进

代码生成后,您可以在本地进行测试。您可能会发现错误或想到改进方法。例如,您希望在 ADK 智能体完成标签标注后获得摘要。您可以继续使用流程,并直接提出修改请求即可。

您:能否给这个智能体添加一个名为“some_new_label”的新标签?


Gemini CLI 仍然会保留脚本上下文,并重构代码以实现更改。无需手动编辑代码,也不会影响您的进度。


第 5 步:重复上述步骤

这个迭代循环就是新的工作流:

1:构思:为智能体构思逻辑。

2:生成:使用 Gemini CLI 生成 ADK 代码。

3:测试:即刻展开测试。

4:改进:通过简单的对话式请求加以改进。

您可以不断重复这个循环,直到获得完美的智能体,在此过程中,全程都不会出现那种通常会让您脱离创作状态的阻碍因素。