
Google ADK 教學:從零開始打造 AI Agent 並部署至生產環境
Google 的 Agent Development Kit (ADK) 是一個讓多 Agent 系統終於變得容易上手的框架。如果你曾經使用 LangChain 或 CrewAI 建構 AI Agent,卻感覺自己花在與框架搏鬥的時間多過實際建構的時間,那麼這份 Google ADK 教學將帶你走過所有步驟,從建立第一個 Agent 到將其部署在 Cloud Run 上。
什麼是 Google ADK(為什麼你應該關注)?
Google 的 Agent Development Kit (ADK) 是一個用於建構、評估和部署 AI Agent 的開源 Python 框架。它於 2025 年發布,針對 Gemini 進行了優化,但透過 LiteLLM 支援超過 100 種模型。ADK 的殺手級功能是原生的多 Agent 協調能力,讓 Agent 能夠在無需額外膠水程式碼的情況下,將任務委派給其他 Agent。
在使用過 LangChain、CrewAI 以及現在的 ADK 之後,以下是 ADK 的突出之處:ADK 在關鍵地方提供了明確的規範。它提供了專案結構、內建的開發者介面(Dev UI)以及部署指令。你不再需要將五個不同的函式庫拼湊在一起才能讓一個基本的 Agent 運作起來。
如果說 LangChain 是一把通用的瑞士刀,那麼 ADK 就是 Google 專為多 Agent 工作流程打造的工具包。CrewAI 在哲學上更為接近,強調基於角色的 Agent 協作,但 ADK 進一步提供了內建評估、原生 Gemini 優化以及一鍵部署至 Cloud Run 的功能。若要深入了解比較,請參考我們對 Agent 框架的深度比較文章。
ADK 適合誰?想要結構化多 Agent 系統的 Python 開發者。已經使用 Google Cloud 或 Gemini 的團隊。以及厭倦了撰寫樣板協調邏輯的任何人。
以下是各框架的快速比較:
| 功能 | Google ADK | LangGraph | CrewAI |
|---|---|---|---|
| 原生多 Agent 支援 | 是 | 透過圖形 | 是 |
| 模型支援 | Gemini + 透過 LiteLLM 支援 100+ 種 | 任意 | 任意 |
| 內建 UI | 是 (adk web) | LangSmith | 否 |
| 部署方式 | Cloud Run, Vertex AI | 自訂 | 自訂 |
| 學習曲線 | 低至中等 | 高 | 低 |
| 開源 | 是 (Apache 2.0) | 是 | 是 |
簡而言之:如果你想以最快的速度從「想法」走到「已部署的多 Agent 系統」,目前 ADK 很難被擊敗。
前置需求與 Google ADK 安裝
要開始使用 Google ADK,你需要 Python 3.9+、一個 Gemini API 金鑰(可在 Google AI Studio 免費取得),以及 google-adk 套件。使用 pip install google-adk 安裝,將你的 API 金鑰設定為環境變數,你就可以在不到 5 分鐘內準備好建構第一個 Agent。
以下是你的設定檢查清單:
- Python 3.9+(建議使用 3.10+ 以獲得完整的型別提示支援)
- Gemini API 金鑰,在 aistudio.google.com 免費申請。免費層級每分鐘提供 15 次請求,對於開發來說綽綽有餘。
- pip(或者如果你偏好速度可使用
uv,uv pip install google-adk也適用)
安裝套件並設定你的金鑰:
pip install google-adk
# Set your API key (add to .bashrc/.zshrc for persistence)
export GOOGLE_API_KEY="your-api-key-here"ADK 期望特定的資料夾結構。每個 Agent 都位於其各自的套件目錄中:
my_agent/
__init__.py # Exports root_agent
agent.py # Agent definition
.env # Optional: GOOGLE_API_KEY=your-key資料夾名稱將成為你的 Agent 套件名稱,因此請選擇具有描述性的名稱。不要稱之為 test 或 agent,這會讓 Python 的匯入系統產生混淆。
專業提示: 如果你使用 uv,請先使用 uv venv && source .venv/bin/activate 建立虛擬環境。它在依賴項解析方面明顯比一般的 pip 更快。
建構你的第一個 Google ADK Agent
你的第一個 ADK Agent 只需要三樣東西:名稱、模型(例如 gemini-2.0-flash)以及指令字串。在 agent.py 中定義它,將其放在包含 __init__.py 的資料夾內,然後執行 adk web 即可在瀏覽器 UI 中與之對話。整個設定大約只需 10 行 Python 程式碼。
建立一個名為 my_agent 的資料夾並新增兩個檔案。首先是 Agent 定義:
# my_agent/agent.py
from google.adk.agents import LlmAgent
root_agent = LlmAgent(
name="my_assistant",
model="gemini-2.0-flash",
instruction="""You are a helpful coding assistant.
You explain concepts clearly and provide working code examples.
Keep responses concise but thorough.""",
description="A coding assistant that explains concepts and writes code"
)接著是匯出你的 Agent 的 init 檔案:
# my_agent/__init__.py
from .agent import root_agent這個變數名稱很重要,ADK 會特別尋找 root_agent。忽略這一點將會導致出現無法解釋原因的「找不到 agent」錯誤。
現在執行它。你有兩個選項:
# CLI mode -- chat in your terminal
adk run my_agent
# Web UI mode -- opens a browser interface
adk web my_agentadk web 介面非常實用。它會顯示完整的對話追蹤記錄、Agent 呼叫了哪些工具、模型接收了什麼以及返回了什麼。把它想像成是你 Agent 的 Chrome DevTools。當你稍後開始建構多 Agent 系統時,這對於理解委派流程變得至關重要。
嘗試修改指令以觀察行為如何變化。讓它變成海盜。讓它只用俳句回應。感受指令如何塑造行為,是本教學其餘部分的基礎。
為你的 Google ADK Agent 加入自訂工具
當你把工具交給 ADK Agent 時,它們才會變得有用。定義一個具有清晰文件字串(docstring)的 Python 函式,ADK 會自動將其轉換為 Agent 可以呼叫的工具。文件字串至關重要,它告訴模型該工具是做什麼的以及何時使用。ADK 還附帶了內建工具,如 Google 搜尋和程式碼執行。
工具是 Agent 的雙手。沒有它們,你的 Agent 只能說話。有了它們,它可以檢查資料庫、呼叫 API、執行計算並與外部系統互動。如果你想了解底層的函式呼叫運作原理,我們有一篇單獨的深度文章介紹。
自訂函式工具
這是一個實用的範例,一個查詢股價的工具:
# my_agent/agent.py
from google.adk.agents import LlmAgent
def get_stock_price(ticker: str) -> dict:
"""Get the current stock price for a given ticker symbol.
Args:
ticker: The stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
Returns:
A dictionary with the ticker and its current price.
"""
# In production, you'd call a real API here
mock_prices = {"AAPL": 198.50, "GOOGL": 175.20, "MSFT": 425.80}
price = mock_prices.get(ticker.upper(), None)
if price:
return {"ticker": ticker.upper(), "price": price, "currency": "USD"}
return {"error": f"Ticker {ticker} not found"}
root_agent = LlmAgent(
name="finance_assistant",
model="gemini-2.0-flash",
instruction="You help users check stock prices. Use the get_stock_price tool when asked about any stock.",
tools=[get_stock_price],
description="A financial assistant that looks up stock prices"
)注意型別提示和文件字串。這些不是可有可無的點綴,ADK 使用它們來生成模型看到的工具架構。省略文件字串,模型就不知道何時呼叫你的函式。省略型別提示,你會收到簽名錯誤。
內建工具(Google 搜尋、程式碼執行)
ADK 附帶了一些你可以直接使用而無需編寫任何程式碼的工具:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search, code_execution
root_agent = LlmAgent(
name="research_agent",
model="gemini-2.0-flash",
instruction="You research topics using Google Search and can run Python code to analyze data.",
tools=[google_search, code_execution],
description="A research agent with search and code execution capabilities"
)google_search 讓 Agent 能夠即時查詢網路。code_execution 提供一個沙盒化的 Python 環境來執行計算。僅這兩項工具就涵蓋了驚人數量的使用案例。
多 Agent 系統:Google ADK Agent 如何委派工作
ADK 的多 Agent 系統使用一個根 Agent(root agent)將任務委派給專門的子 Agent。每個子 Agent 處理一個領域,例如研究、寫作或編碼。根 Agent 根據使用者的請求決定呼叫哪個子 Agent。你也可以使用「Agent 即工具」模式,其中一個 Agent 像呼叫函式一樣呼叫另一個 Agent。Google 關於多 Agent 系統的官方部落格更深入地探討了這些架構模式。
把它想像成專案經理將工作委派給專家。根 Agent 閱讀使用者的請求,找出應該由哪位專家處理,並相應地路由。專家們彼此不知情,他們只是完成自己的工作並回報結果。
根 Agent + 子 Agent 模式
這是一個有效的範例,根 Agent 將工作委派給研究 Agent 和寫作 Agent:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search
# Sub-agent 1: handles research
research_agent = LlmAgent(
name="researcher",
model="gemini-2.0-flash",
instruction="You research topics thoroughly using Google Search. Return factual, well-sourced information.",
tools=[google_search],
description="Researches topics and returns factual information"
)
# Sub-agent 2: handles writing
writing_agent = LlmAgent(
name="writer",
model="gemini-2.0-flash",
instruction="You write clear, engaging content based on provided information. Focus on readability and accuracy.",
description="Writes polished content from research notes"
)
# Root agent: delegates to the right sub-agent
root_agent = LlmAgent(
name="content_manager",
model="gemini-2.0-flash",
instruction="""You manage content creation.
- When the user wants information gathered, delegate to the researcher.
- When the user wants content written or edited, delegate to the writer.
- You can chain both: research first, then write.""",
sub_agents=[research_agent, writing_agent],
description="Manages content creation by delegating to research and writing specialists"
)每個子 Agent 上的 description 欄位讓根 Agent 了解它們能做什麼。撰寫清晰的描述,模糊的描述會導致錯誤的路由決策。
Agent 即工具模式
有時你想要更精確地控制一個 Agent 如何呼叫另一個 Agent。「Agent 即工具」模式將子 Agent 包裝為可呼叫的工具:
from google.adk.tools import agent_tool
research_tool = agent_tool.AgentTool(agent=research_agent)
root_agent = LlmAgent(
name="writer_with_research",
model="gemini-2.0-flash",
instruction="You write articles. Use the research tool to gather facts before writing.",
tools=[research_tool],
description="A writer that can research topics on demand"
)當你希望根 Agent 完全交出控制權時,使用子 Agent。當你希望呼叫方 Agent 保持主導地位,僅將子 Agent 的輸出作為輸入時,使用 Agent 即工具模式。如果你正在建構需要共享上下文的 Agent 系統,請參閱我們關於 Agent 記憶體架構的綜合指南。
工作流程 Agent:序列、平行與迴圈
除了由 LLM 驅動的委派之外,ADK 還提供三種用於確定性協調的工作流程 Agent 類型:SequentialAgent 依序執行子 Agent,ParallelAgent 同時執行它們,而 LoopAgent 則重複序列直到滿足條件。當你需要可預測的執行順序而不是讓 LLM 決定時,這些類型非常有用。
區別很重要。LLM 驅動的委派(上述的 sub_agents 模式)讓模型選擇要呼叫誰。工作流程 Agent 則提供程式化的控制。當執行順序事先已知時,請使用工作流程 Agent。
from google.adk.agents import SequentialAgent, ParallelAgent, LlmAgent
# Three agents that must run in order
research_agent = LlmAgent(name="researcher", model="gemini-2.0-flash",
instruction="Research the given topic.", description="Researches topics")
draft_agent = LlmAgent(name="drafter", model="gemini-2.0-flash",
instruction="Write a draft based on the research.", description="Writes drafts")
review_agent = LlmAgent(name="reviewer", model="gemini-2.0-flash",
instruction="Review the draft for accuracy and clarity.", description="Reviews content")
# Pipeline: research -> draft -> review
content_pipeline = SequentialAgent(
name="content_pipeline",
sub_agents=[research_agent, draft_agent, review_agent],
description="Runs a complete content creation pipeline"
)對於可以同時執行的獨立任務,ParallelAgent 可以節省大量時間:
# Three data fetchers that run concurrently
fetch_news = LlmAgent(name="news_fetcher", model="gemini-2.0-flash",
instruction="Fetch latest tech news.", description="Fetches news")
fetch_stocks = LlmAgent(name="stock_fetcher", model="gemini-2.0-flash",
instruction="Fetch stock market summary.", description="Fetches stocks")
fetch_weather = LlmAgent(name="weather_fetcher", model="gemini-2.0-flash",
instruction="Fetch weather forecast.", description="Fetches weather")
morning_briefing = ParallelAgent(
name="morning_briefing",
sub_agents=[fetch_news, fetch_stocks, fetch_weather],
description="Gathers morning briefing data in parallel"
)| 模式 | Agent 類型 | 使用案例 | 範例 |
|---|---|---|---|
| 管線 | SequentialAgent | 步驟必須按順序發生 | 研究 -> 寫作 -> 審查 |
| 扇出 | ParallelAgent | 獨立任務 | 同時從 3 個 API 獲取資料 |
| 迭代 | LoopAgent | 重複直到達到品質標準 | 草稿 -> 審查 -> 修訂(迴圈) |
管理狀態與記憶體
ADK 在兩個層級管理 Agent 狀態:工作階段狀態(對話內的資料,例如在聊天過程中收集的使用者偏好)和記憶體服務(跨對話持久的資料)。工作階段狀態是一個透過 context.state 存取的簡單鍵值儲存區。記憶體則使用如 InMemoryMemoryService 或用於生產環境的 VertexAIMemoryBankService 等服務。
工作階段狀態較為簡單。它是附加到每個對話的字典:
from google.adk.agents import LlmAgent
def save_preference(key: str, value: str, context) -> str:
"""Save a user preference to session state.
Args:
key: The preference name (e.g., 'language', 'theme')
value: The preference value
context: The ADK context object
Returns:
Confirmation message
"""
context.state[key] = value
return f"Saved preference: {key} = {value}"
def get_preference(key: str, context) -> str:
"""Retrieve a user preference from session state.
Args:
key: The preference name to look up
context: The ADK context object
Returns:
The preference value or a not-found message
"""
value = context.state.get(key, "Not set")
return f"{key} = {value}"
root_agent = LlmAgent(
name="personalized_assistant",
model="gemini-2.0-flash",
instruction="You remember user preferences. Save them when told, recall them when asked.",
tools=[save_preference, get_preference],
description="An assistant that remembers user preferences"
)對於跨對話記憶體,也就是讓你的 Agent 記得上週二的使用者,你需要記憶體服務:
from google.adk.memory import InMemoryMemoryService
# For development (data lost on restart)
memory_service = InMemoryMemoryService()
# For production, use VertexAIMemoryBankService
# memory_service = VertexAIMemoryBankService(project="your-project")何時需要記憶體 versus 工作階段狀態?如果是在單一對話內(購物車、當前任務上下文),請使用工作階段狀態。如果需要在對話之間存活(使用者偏好、過去的互動),請使用記憶體服務。查看我們關於 Agent 記憶體架構的綜合指南以了解生產環境模式。
回呼:控制 Agent 行為
ADK 回呼讓你能夠在四個點攔截和修改 Agent 行為:before_model_callback(LLM 呼叫前)、after_model_callback(LLM 回應後)、before_tool_callback(工具執行前)和 after_tool_callback(工具結果後)。將它們用於輸入驗證、安全過濾、日誌記錄,或在回應到達使用者之前進行修改。
回呼是你添加防護欄的地方。把它們想像成你 Agent 的中介軟體,每個請求和回應都會通過它們,你可以檢查、修改或封鎖任何內容。
from google.adk.agents import LlmAgent
def safety_filter(callback_context, llm_request):
"""Block requests containing harmful content patterns."""
user_message = str(llm_request)
blocked_patterns = ["ignore your instructions", "pretend you are"]
for pattern in blocked_patterns:
if pattern.lower() in user_message.lower():
# Return a response directly, skipping the model call
return {"blocked": True, "reason": "Request matched safety filter"}
# Return None to proceed normally
return None
def log_tool_usage(callback_context, tool_name, tool_result):
"""Log every tool call for monitoring."""
print(f"[TOOL LOG] {tool_name}: {tool_result}")
return None # Don't modify the result
root_agent = LlmAgent(
name="safe_assistant",
model="gemini-2.0-flash",
instruction="You are a helpful assistant.",
before_model_callback=safety_filter,
after_tool_callback=log_tool_usage,
description="A safety-filtered assistant with tool logging"
)before_model_callback 對生產環境最為重要。它在每次 LLM 呼叫之前運行,讓你有機會封鎖提示詞注入、驗證輸入或添加系統上下文。如果你返回一個回應物件,ADK 將完全跳過模型。返回 None 以讓請求通過。如需更多模式,請參閱LLM 安全防護欄的深度模式。
測試與評估你的 ADK Agent
ADK 包含一個內建的評估框架,其中有兩種評估器類型:ResponseEvaluator 檢查 Agent 的最終答案是否正確,而 TrajectoryEvaluator 驗證 Agent 是否採取了正確的步驟、以正確的順序呼叫了正確的工具。將測試案例撰寫為 JSON 檔案,並使用 pytest 運行它們,以便在部署前捕捉回歸問題。
為什麼要費心測試 Agent?因為它們是非確定性的。相同的輸入可能會產生不同的輸出,而且對指令的小幅更改可能會以微妙的方式破壞工具呼叫。根據我們的經驗,通過軌跡評估的 Agent 在生產環境中比僅測試最終輸出品質的 Agent 可靠得多。如需更廣泛的評估策略,請參閱我們的 LLM 評估策略指南。
你的測試案例放在 JSON 檔案中:
[
{
"input": "What's the stock price of AAPL?",
"expected_output": "198.50",
"expected_trajectory": [
{"tool_name": "get_stock_price", "args": {"ticker": "AAPL"}}
]
},
{
"input": "Compare AAPL and GOOGL prices",
"expected_output": "AAPL.*198.*GOOGL.*175",
"expected_trajectory": [
{"tool_name": "get_stock_price", "args": {"ticker": "AAPL"}},
{"tool_name": "get_stock_price", "args": {"ticker": "GOOGL"}}
]
}
]然後使用 pytest 運行評估。ADK Python 儲存庫 擁有完整的評估 API 參考:
# test_agent.py
import pytest
from google.adk.evaluation import ResponseEvaluator, TrajectoryEvaluator
def test_stock_agent_response():
evaluator = ResponseEvaluator(agent=root_agent)
results = evaluator.evaluate("test_cases.json")
assert results.pass_rate >= 0.8, f"Response pass rate too low: {results.pass_rate}"
def test_stock_agent_trajectory():
evaluator = TrajectoryEvaluator(agent=root_agent)
results = evaluator.evaluate("test_cases.json")
assert results.pass_rate >= 0.9, f"Trajectory pass rate too low: {results.pass_rate}"使用 pytest test_agent.py -v 運行。根據關鍵性設定你的閾值——對於創意寫作 Agent,80% 的回應準確率可能就可以了,但對於處理財務數據的任何內容,你會希望達到 95% 以上。
將你的 Google ADK Agent 部署至生產環境
使用一個指令將你的 ADK Agent 部署到 Google Cloud Run:adk deploy cloud_run --project YOUR_PROJECT --region us-central1。ADK 會打包你的程式碼、建構容器並啟動無伺服器端點。對於託管主機,請使用 Vertex AI Agent Engine。對於自訂基礎設施,ADK 也支援 Docker 容器化。
我們已在 Cloud Run 上為內部工具部署了 ADK Agent,冷啟動時間令人驚訝地快,基本 Agent 低於 3 秒。對於生產系統,考慮將你的部署與生產環境 Agent 的監控工具搭配使用。
部署至 Cloud Run(大多數情況下的推薦選擇)
Cloud Run 是最簡單的路徑。一個指令,你的 Agent 就會透過 HTTPS 端点上線:
adk deploy cloud_run \
--project your-gcp-project-id \
--region us-central1 \
--service-name my-agent-service \
--with_ui--with_ui 標誌會隨你的 Agent 一起部署 ADK Web 介面,因此你可以在生產環境中獲得基於瀏覽器的聊天介面進行測試。在幕後,ADK 會建構容器映像、將其推送到 Google Artifact Registry,並建立 Cloud Run 服務。完整的部署流程記錄在 Google 的 ADK Cloud Run 快速入門指南 中。
對於自訂基礎設施,這裡有一個最小的 Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8080
CMD ["adk", "api_server", "--port", "8080", "my_agent"]替代方案:Vertex AI Agent Engine
對於需要受託管擴展、監控和版本控制的企業團隊,Vertex AI Agent Engine 完全處理基礎設施。你用靈活性換取便利性,無需管理容器、自動擴展、內建分析。
成本考量
你應該知道的實際數字:
- Gemini API 免費層級: 每分鐘 15 次請求,每天 100 萬個 token。足夠用於開發和輕量演示。
- Gemini 2.0 Flash(付費): 每百萬輸入 token $0.10,每百萬輸出 token $0.40。價格足夠低廉,可用於生產環境。
- Cloud Run 免費層級: 每月 200 萬次請求,360,000 GB-秒的計算資源。一個每天處理 1,000 次請求的基本 Agent 完全可以保持在免費層級內。
- 優化提示: 對執行簡單路由或格式化的子 Agent 使用
gemini-2.0-flash(而非gemini-2.0-pro)。將功能更強大的模型保留給執行複雜推理的 Agent。
Techsy 如何進行 AI Agent 開發
在 Techsy,我們使用 ADK、LangGraph 和 CrewAI 為客戶建構了多 Agent 系統。框架的選擇取決於你的技術堆疊:如果你已經在使用 Google Cloud,ADK 消除了許多整合摩擦。如果你從第一天起就需要多供應商 LLM 支援,LangGraph 提供更多靈活性。
我們典型的參與始於架構諮詢,將你的使用案例映射到正確的 Agent 模式,隨後進行原型開發和 Cloud Run 部署。我們發現,團隊透過一開始就確立正確的架構,而不是後來重構,可以節省 2-3 週的時間。
為你的團隊建構 AI Agent?獲取免費諮詢,我們將幫助你選擇正確的框架和部署策略。
常見錯誤與疑難排解
這些是我們開始使用 ADK 時最常遇到的錯誤。節省你自己的除錯時間:
| 錯誤 | 原因 | 修復方法 |
|---|---|---|
GOOGLE_API_KEY not set | 缺少環境變數 | export GOOGLE_API_KEY="your-key" 或添加到 .env |
Model not found | 錯誤的模型名稱字串 | 使用確切的 ID:gemini-2.0-flash,而非 gemini-flash |
Tool function signature error | 缺少型別提示或文件字串 | 為所有參數添加型別提示,添加描述性文件字串 |
Agent not found | 錯誤的資料夾結構或缺少匯出 | 確保 __init__.py 以確切名稱匯出 root_agent |
Rate limit exceeded (429) | 免費層級 API 呼叫過多 | 升級至付費 Gemini 層級或添加指數退避 |
ImportError: google-adk | 套件未安裝 | 在你的活躍虛擬環境中運行 pip install google-adk |
除錯提示: adk web 是你最好的朋友。它即時顯示完整的對話追蹤記錄、每次模型呼叫、工具呼叫和 Agent 委派。當多 Agent 系統出現問題時,Web UI 會向你顯示鏈條究竟在哪裡斷裂。
常見問題
什麼是 Google ADK?
Google 的 Agent Development Kit (ADK) 是一個用於建構、評估和部署 AI Agent 的開源 Python 框架。它針對 Google Gemini 模型進行了優化,但透過 LiteLLM 整合支援 100+ 種 LLM。ADK 的核心優勢在於原生的多 Agent 協調,配備內建工具、開發者 UI 和一鍵 Cloud Run 部署。
Google ADK 可以免費使用嗎?
是的。ADK 本身在 Apache 2.0 許可證下是開源的。你需要一個 Gemini API 金鑰,其免費層級提供每分鐘 15 次請求和每天 100 萬個 token。雲端部署成本取決於你的主機選擇,Cloud Run 的免費層級涵蓋每月 200 萬次請求。
Google ADK 和 LangChain 有什麼區別?
ADK 是 Google 針對 Gemini 優化的意見型框架,具有原生多 Agent 協調和內建部署工具。LangChain 與模型無關,擁有更廣泛的第三方整合,但複雜度高得多。ADK 更適合希望快速部署的 Gemini 優先團隊;LangChain 適合需要最大靈活性的多供應商設置。
Google ADK 支援多 Agent 系統嗎?
是的,這是 ADK 的旗艦功能。你建立一個根 Agent,根據使用者請求將工作委派給專門的子 Agent。ADK 還提供 SequentialAgent、ParallelAgent 和 LoopAgent 用於確定性的工作流程協調。Agent 即工具模式讓 Agent 能夠將其他 Agent 作為可呼叫函式進行呼叫。
如何部署 Google ADK Agent?
運行 adk deploy cloud_run --project YOUR_PROJECT --region us-central1 以無伺服器方式部署到 Google Cloud Run。添加 --with_ui 以包含基於瀏覽器的聊天介面。你也可以部署到 Vertex AI Agent Engine 以進行受託管主機,或為自訂基礎設施建構 Docker 容器。
Google ADK 可以使用 Gemini 以外的模型嗎?
是的。ADK 透過 LiteLLM 整合支援 100+ 種模型,包括 Anthropic Claude、OpenAI GPT-4、Meta Llama 和 Mistral。將模型參數設定為 LiteLLM 模型字串,例如 litellm/anthropic/claude-3-sonnet 或 litellm/openai/gpt-4o。Gemini 模型無需 LiteLLM 前綴即可原生運作。
什麼是 ADK Web UI?
這是一個透過 adk web your_agent_folder 啟動的基於瀏覽器的除錯介面。它即時顯示對話追蹤記錄、工具呼叫、Agent 委派鏈和狀態變更。Web UI 對於除錯多 Agent 系統至關重要,因為它確切顯示哪個子 Agent 處理了每個請求。
Google ADK 支援 MCP(Model Context Protocol)嗎?
是的。ADK 具有原生的 Model Context Protocol 支援,允許 Agent 連接到任何相容 MCP 的工具伺服器以獲取外部工具和資料來源。這使得 ADK Agent 能夠與不斷增長的 MCP 生態系統互操作。如需了解該協議的背景,請參閱我們的 MCP 指南。
如何測試 ADK Agent?
ADK 附帶內建評估器:ResponseEvaluator 用於根據預期答案檢查輸出品質,TrajectoryEvaluator 用於驗證 Agent 是否以正確的順序呼叫了正確的工具。將測試案例撰寫為 JSON 檔案,定義輸入、預期輸出和預期的工具呼叫序列,然後使用 pytest 運行它們。
Google ADK 需要什麼版本的 Python?
ADK 需要 Python 3.9 或更高版本。建議使用 Python 3.10+ 以獲得完整的型別提示支援,這很重要,因為 ADK 使用型別提示來生成工具架構。Python 3.11 或 3.12 也為 Agent 工作負載提供了顯著的性能改進。使用 pip install google-adk 安裝。