ADK 代理程式模式,搭配記憶體和 MCP

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:啟用帳單帳戶

如要執行本程式碼研究室,您需要有具備部分抵免額的帳單帳戶。請使用本程式碼研究室頂端橫幅中的抵免額開始操作。如果已連結帳單帳戶,可以略過這個步驟。

步驟 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

👉按一下「Open Editor」(開啟編輯器) 按鈕 (類似於開啟資料夾和鉛筆的圖示)。視窗中會開啟 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 網頁伺服器已啟動的輸出內容,類似如下:

+-----------------------------------------------------------------------------+
| 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 開發 UI。

webpreview

👉 召喚儀式完成,代理程式現已啟動。瀏覽器中的 ADK 開發人員使用者介面是與 Familiar 的直接連線。

選擇平行工作流程代理程式:在使用者介面頂端的下拉式選單中,選擇 parallel_agent

選取 single_agent單一代理商的追蹤圖片

您可以在這裡查看追蹤記錄:單一代理的追蹤圖片

👉 測試提示:

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

4. 第 2 節:工作流程代理:Sequential Agent、Parallel Agent、Loop Agent

Parallel Agent

選擇平行工作流程代理程式:在使用者介面頂端的下拉式選單中,選擇 parallel_agent

👉 測試提示:

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

選取 parallel_agent平行線條的追蹤圖片

您可以在這裡查看追蹤記錄:平行線條的追蹤圖片

Sequential Agent

選擇循序工作流程代理程式:在 UI 頂端的下拉式選單中,選擇 sequential_agent

👉 測試提示:

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

選取 sequential_agent追蹤連續代理的圖片

您可以在這裡查看追蹤記錄:sequential_agent 的追蹤圖片

Loop Agent

選擇迴圈工作流程代理程式:在 UI 頂端的下拉式選單中,選擇 loop_agent

👉 測試提示:

Plan a trip from Sunnyvale to San Francisco today.

選取 loop_agent追蹤迴圈代理的圖片

您可以在這裡查看追蹤記錄:追蹤迴圈代理的圖片

5. 工作階段 3:自訂代理程式

開啟 ADK 網頁 UI 後,即可選取 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 網頁介面後,即可選取 routing_agent

👉 測試提示:

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

選取 routing_agent路徑規劃代理程式的追蹤圖片

您可以在這裡查看追蹤記錄:路徑規劃代理程式的追蹤圖片

7. 議程 5:代理即工具

開啟 ADK 網頁 UI 後,即可選取 Agent_as_tool 代理程式。

👉 測試提示:

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

選取 agent_as_tool代理人做為工具的追蹤圖片

您可以在這裡查看追蹤記錄:路徑規劃代理程式的追蹤圖片

8. 第 6 堂:具備長期記憶的代理程式

👉💻 前往資料夾並使用執行元件補強代理程式,測試長期記憶:

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

👉 測試提示:

I like Art and Italian food.

然後按下「crtl+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/mcp-toolbox-for-databases/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