Apps:工作流管理类¶
Supported in ADKPython v1.14.0
App 类是整个智能体开发套件(ADK)智能体工作流的顶层容器。它旨在为由 根智能体 分组的一系列智能体管理生命周期、配置和状态。App 类将智能体工作流的整体运营基础设施的关注点与单个智能体面向任务的推理分离开来。
在你的 ADK 工作流中定义一个 App 对象是一种可选行为,这会改变你组织智能体代码和运行智能体的方式。从实践的角度来看,你可以使用 App 类为你的智能体工作流配置以下功能:
本指南将说明如何使用 App 类来配置和管理你的 ADK 智能体工作流。
App 类的用途¶
App 类解决了在构建复杂智能体系统时出现的几个架构问题:
- 集中式配置: 提供一个单一的、集中的位置来管理共享资源,如 API 密钥和数据库客户端,避免了将配置传递给每个智能体的需要。
- 生命周期管理: App 类包含 on startup 和 on shutdown 钩子,这允许对需要跨多次调用存在的持久性资源(如数据库连接池或内存缓存)进行可靠的管理。
- 状态作用域: 它通过
app:*前缀为应用级状态定义了一个明确的边界,使该状态的作用域和生命周期对开发者清晰可见。 - 部署单元: App 概念建立了一个正式的可部署单元,简化了智能体应用的部署、测试和版本控制。
定义 App 对象¶
App 类被用作你的智能体工作流的主要容器,并包含项目的根智能体。根智能体 是主控制器智能体和任何其他子智能体的容器。
使用根智能体定义 App¶
通过从 Agent 基类创建子类,为你的工作流创建一个 根智能体。然后定义一个 App 对象,并使用 根智能体 对象和可选功能对其进行配置,如以下示例代码所示:
agent.py
from google.adk.agents.llm_agent import Agent
from google.adk.apps import App
root_agent = Agent(
model='gemini-2.5-flash',
name='greeter_agent',
description='一个提供友好问候的智能体。',
instruction='回复“Hello, World!”',
)
app = App(
name="agents",
root_agent=root_agent,
# 可选地包含 App 级功能:
# plugins、context_cache_config、resumability_config
)
建议:使用 app 变量名
在你的智能体项目代码中,将你的 App 对象设置为变量名 app,以便与 ADK 命令行界面运行工具兼容。
运行你的 App 智能体¶
你可以使用 Runner 类,通过 app 参数来运行你的智能体工作流,如以下代码示例所示:
main.py
import asyncio
from dotenv import load_dotenv
from google.adk.runners import InMemoryRunner
from agent import app # 从 agent.py 导入代码
load_dotenv() # 加载 API 密钥和设置
# 使用导入的应用对象设置一个 Runner
runner = InMemoryRunner(app=app)
async def main():
try: # run_debug() 需要 ADK Python 1.18 或更高版本:
response = await runner.run_debug("Hello there!")
except Exception as e:
print(f"智能体执行期间发生错误:{e}")
if __name__ == "__main__":
asyncio.run(main())
关于 Runner.run_debug() 的版本要求
Runner.run_debug() 命令需要 ADK Python v1.18.0 或更高版本。你也可以使用 Runner.run(),但这需要更多的设置代码。有关更多详细信息,请参阅
使用以下命令通过 main.py 代码运行你的 App 智能体:
后续步骤¶
要获取更完整的示例代码实现,请参阅 Hello World App 代码示例。