具有记忆和 MCP 的 ADK Agentic 模式

1. 学习内容

欢迎参加 ADK 大师班 - 多智能体系统之旅

您即将踏入令人兴奋的 AI 智能体世界。忘掉只能回答问题的简单聊天机器人吧。我们正在深入研究 Agent Development Kit (ADK),以构建精密的自主系统,这些系统可以进行推理、规划和使用工具来完成复杂的任务。

翻唱版

学完本教程后,您将能够:

  • 构建您的第一个 AI 代理:从零开始构建一个功能齐全的代理,该代理可以理解用户需求、使用 Google 搜索等工具,并生成详细且实用的回答。
  • 构建多智能体系统:了解“智能体即工具”模式,这是一种革命性的概念,其中智能体将任务委托给其他专业智能体,从而创建一个协同工作的 AI 专家团队。
  • 编排复杂的工作流:除了简单的委托之外,还可以掌握路由器顺序链循环并行执行等高级模式,从而构建强大、高效且智能的应用,以处理几乎所有请求。
  • 为智能体提供记忆功能:了解对话记忆的关键作用,使智能体能够处理后续问题、从反馈中学习,并顺畅地管理多步骤任务。
  • 通过 MCP 连接:通过 MCP 工具箱连接。

现在就开始吧!🚀

2. 设置 GCP 和 Gemini API 密钥

设置 GCP 项目和 Gemini API 密钥

为了让 AI 代理正常运行,我们需要两样东西:一个提供基础的 Google Cloud 项目和一个用于访问 Google 强大模型的 Gemini API 密钥。

第 1 步:启用结算账号

  • 您需要声明拥有 5 美元赠金的结算账号,以便进行部署。请务必使用您的 Gmail 账号。

第 2 步:创建新的 GCP 项目

  • 前往 Google Cloud 控制台并创建一个新项目。

创建新的 GCP 账号

  • 前往 Google Cloud 控制台并创建一个新项目。
  • 打开左侧面板,点击 Billing,检查结算账号是否与此 GCP 账号相关联。

将结算账号关联到 GCP 账号

如果您看到此页面,请选中 manage billing account,选择 Google Cloud 试用版并将其关联。

第 3 步:查找您的 Google Cloud 项目 ID

👉点击 Google Cloud 控制台顶部的“激活 Cloud Shell”(这是 Cloud Shell 窗格顶部的终端形状图标),cloud-shell.png

👉点击“打开编辑器”按钮(看起来像一个打开的文件夹,上面有一支铅笔)。此操作会在窗口中打开 Cloud Shell 代码编辑器。您会在左侧看到文件浏览器。open-editor.png

👉查找您的 Google Cloud 项目 ID:

  • 打开 Google Cloud 控制台:链接
  • 从页面顶部的项目下拉菜单中选择要用于本次研讨会的项目。
  • 您的项目 ID 会显示在信息中心的项目信息卡片中

03-04-project-id.png

👉💻 在终端中,使用以下命令验证您是否已通过身份验证,以及项目是否已设置为您的项目 ID:

gcloud auth list

👉💻 从 GitHub 克隆引导项目:

git clone https://github.com/cuppibla/adk_tutorial.git

👉💻 运行初始化脚本,此脚本会提示您输入 Google Cloud 项目 ID。当 setup_venv.sh 脚本提示时,输入您在上一步中找到的 Google Cloud 项目 ID。

cd ~/adk_tutorial
./setup_venv.sh

gcloud services enable  compute.googleapis.com \
                        artifactregistry.googleapis.com \
                        run.googleapis.com \
                        iam.googleapis.com \
                        aiplatform.googleapis.com \
                        cloudresourcemanager.googleapis.com

3. 第 1 次会话:在 ADK Web 中创建您的首个智能体

通过运行以下命令打开 ADK Web:

cd ~/adk_tutorial
source .adk_env/bin/activate
adk web

运行命令后,您应该会在终端中看到表明 ADK Web 服务器已启动的输出,如下所示:

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

👉 接下来,如需通过浏览器访问 ADK 开发者界面,请执行以下操作:

在 Cloud Shell 工具栏(通常位于右上角)中,点击“网页预览”图标(通常看起来像眼睛或带有箭头的正方形),然后选择“更改端口”。在弹出式窗口中,将端口设置为 8000,然后点击“更改并预览”。然后,Cloud Shell 会打开一个新的浏览器标签页或窗口,其中显示 ADK Dev 界面。

webpreview

👉 召唤仪式已完成,代理现已运行。浏览器中的 ADK Dev 界面是您与 Familiar 的直接连接。

选择并行工作流代理:在界面顶部的下拉菜单中,选择 parallel_agent

您可以在此处选择 single_agent单个代理的轨迹图片

您可以在此处查看轨迹:单个代理的轨迹图

👉 测试提示

Plan a trip from Sunnyvale to San Francisco this weekend, I love food and art.

4. 第 2 次会话:工作流智能体:串行智能体、并行智能体、循环智能体

并行代理

选择并行工作流代理:在界面顶部的下拉菜单中,选择 parallel_agent

👉 测试提示

Plan my trip to San Francisco, I want to find some good concert, restaurant and museum.

您可以在此处选择 parallel_agent并行代理的轨迹图

您可以在此处查看轨迹:并行代理的轨迹图

串行智能体

选择顺序工作流代理:在界面顶部的下拉菜单中,选择 sequential_agent

👉 测试提示

Find a good sushi near Standford and tell me how to get there.

您可以在此处选择 sequential_agent顺序代理的轨迹图

您可以在此处查看轨迹:sequential_agent 的跟踪图片

Loop Agent

选择 Loop 工作流代理:在界面顶部的下拉菜单中,选择 loop_agent

👉 测试提示

Plan a trip from Sunnyvale to San Francisco today.

您可以在此处选择 loop_agent循环智能体的跟踪图片

您可以在此处查看轨迹:循环智能体的跟踪图片

5. 会话 3:自定义代理

打开 ADK Web 界面后,您可以选择 Custom_Agent 代理。

👉 测试提示

Plan a trip from Sunnyvale to San Francisco this weekend, I love food and art. Make sure within budget of 100 dollars.

您可以在此处选择 Custom_AgentCustom_Agent 的跟踪图片

您可以在此处查看轨迹:Custom_Agent 的跟踪图片

6. 会话 4:编排器模式 - 路由代理

打开 ADK Web 界面后,您可以选择 routing_agent

👉 测试提示

Plan a trip from Sunnyvale to San Francisco this weekend, I love concert, restaurant and museum.

您可以在此处选择 routing_agent路由代理的跟踪图片

您可以在此处查看轨迹:路由代理的跟踪图片

7. 会议 5:将代理作为工具

打开 ADK Web 界面后,您可以选择 Agent_as_tool 代理。

👉 测试提示

Plan a trip from Sunnyvale to San Francisco this weekend, I love concert, restaurant and museum.

您可以在此处选择 agent_as_tool将代理作为工具的轨迹图

您可以在此处查看轨迹:路由代理的跟踪图片

8. 会议 6:具有长期记忆的代理

👉💻 前往文件夹并使用 runner 为智能体赋能,测试您的长期记忆:

cd ~/adk_tutorial
source .adk_env/bin/activate
cd ~/adk_tutorial/f_agent_with_memory
python main.py

👉 测试提示

I like Art and Italian food.

然后按“Ctrl+C”结束会话。重启会话:

cd ~/adk_tutorial
source .adk_env/bin/activate
cd ~/adk_tutorial/f_agent_with_memory
python main.py

👉 测试提示

Plan a trip to San Francisco based on my preference.

9. 第 7 次会话:使用 MCP 增强智能体的能力

第 1 步:准备本地数据库

👉💻 在终端中运行以下命令

cd ~/adk_tutorial
source .adk_env/bin/activate
chmod +x setup_trip_database.py
./setup_trip_database.py

第 2 步:安装并运行 MCP Toolbox 服务器

👉💻 在终端中运行以下命令

cd ~/adk_tutorial/mcp_tool_box
export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox

下载完成后,运行

chmod +x toolbox

第 3 步

在一个终端中运行以下命令

cd ~/adk_tutorial
source .adk_env/bin/activate
cd ~/adk_tutorial/mcp_tool_box
./toolbox --tools-file "trip_tools.yaml" --port 7001

在另一个终端中运行以下命令

cd ~/adk_tutorial
source .adk_env/bin/activate
cd ~/adk_tutorial/g_agents_mcp
python main.py