昨天我們學會了 Coordinator/Dispatcher 模式,讓 Agent 團隊有了基本的分工能力。但我們不只需要總監分配任務,更需要像工廠生產線、派對籌備、研究團隊、作家工作室那樣的多樣化協作模式。
今天要介紹的四種進階模式,就是讓你的 Agent 團隊從「會分工」升級到「會協作」的關鍵!
還記得你去麵包店買麵包嗎?不是隨便抓個麵粉就能變出麵包,而是:
每個步驟都要等前一個完成,這就是「Sequential Pipeline」(依序管線) 的精髓!
from google.adk.agents import SequentialAgent, LlmAgent
validator = LlmAgent(
name="驗證員",
instruction="檢查輸入資料",
output_key="驗證結果"
)
processor = LlmAgent(
name="處理員",
instruction="根據 {驗證結果} 處理資料",
output_key="處理結果"
)
reporter = LlmAgent(
name="報告員",
instruction="根據 {處理結果} 產生報告"
)
pipeline = SequentialAgent(
name="資料生產線",
sub_agents=[validator, processor, reporter]
)
想像你要辦一場盛大的派對,如果一個人慢慢做,可能要忙一整天:
但如果你有三個朋友,大家同時出發:
一小時後,三個人帶著成果回來集合,派對準備就緒!這就是「Parallel Fan-Out/Gather」(平行展開/收集) 的威力。
from google.adk.agents import SequentialAgent, ParallelAgent, LlmAgent
fetch_weather = LlmAgent(
name="天氣小幫手",
instruction="查詢天氣",
output_key="天氣"
)
fetch_news = LlmAgent(
name="新聞小幫手",
instruction="查詢新聞",
output_key="新聞"
)
gather = ParallelAgent(
name="平行收集",
sub_agents=[fetch_weather, fetch_news]
)
synthesizer = LlmAgent(
name="綜合分析員",
instruction="根據 {天氣} 和 {新聞} 統整資訊"
)
workflow = SequentialAgent(
name="平行再整合",
sub_agents=[gather, synthesizer]
)
記得《哈利波特》裡的魔法學校嗎?鄧不利多 (校長) 不會親自教每個學生,而是:
這就是「Hierarchical Task Decomposition」(階層式任務分解) 的運作邏輯!
from google.adk.agents import LlmAgent
from google.adk.tools import agent_tool
web_searcher = LlmAgent(
name="網路搜尋員",
description="查找資料"
)
summarizer = LlmAgent(
name="摘要員",
description="摘要內容"
)
research_assistant = LlmAgent(
name="研究助理",
model="gemini-2.0-flash",
description="整合資料並摘要",
tools=[
agent_tool.AgentTool(agent=web_searcher),
agent_tool.AgentTool(agent=summarizer)
]
)
report_writer = LlmAgent(
name="報告撰寫員",
model="gemini-2.0-flash",
instruction="請研究助理協助完成主題報告",
tools=[agent_tool.AgentTool(agent=research_assistant)]
)
還記得作文課嗎?老師總說「好文章是改出來的」:
這個「寫 → 檢查 → 改進」的循環,就是「Iterative Refinement」(迭代式精煉) 的核心!
from google.adk.agents import LoopAgent, LlmAgent, BaseAgent
from google.adk.events import Event, EventActions
from google.adk.agents.invocation_context import InvocationContext
from typing import AsyncGenerator
refiner = LlmAgent(
name="修正員",
instruction="根據 state['current_text'] 與 state['需求'],產生或優化內容,結果存回 state['current_text']",
output_key="current_text"
)
checker = LlmAgent(
name="檢查員",
instruction="檢查 state['current_text'] 是否符合 state['需求'],回傳 'pass' 或 'fail'",
output_key="check_status"
)
class StopIfPass(BaseAgent):
async def _run_async_impl(
self,
ctx: InvocationContext
) -> AsyncGenerator[Event, None]:
status = ctx.session.state.get("check_status", "fail")
should_stop = (status == "pass")
yield Event(
author=self.name,
actions=EventActions(escalate=should_stop)
)
loop = LoopAgent(
name="反覆優化",
max_iterations=5,
sub_agents=[refiner, checker, StopIfPass(name="停止判斷員")]
)
這四種進階模式,代表了 Agent 協作的四種核心思維:
掌握這四種模式,你的 Agent 團隊就能像專業工廠、派對主辦人、研究團隊、作家工作室一樣靈活運作。