iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
Build on Google AI

30 天用 Google ADK 打造你的「全自動 AI 虛擬團隊」系列 第 23 篇

Day 23 | ADK Multi-Agent:設定 PM、RD、行銷的跨部門溝通協議

  • 分享至 

  • xImage
  •  

大家好!歡迎來到「Build on Google AI」工程挑戰的第 23 天。

(我知道各位在想什麼:「說好的 Action Confirmations 呢?你又跳票了!」請聽我解釋,這是架構師的深思熟慮。在把「人類 (Human)」放進工作流進行最終確認之前,我們必須先確保「機器與機器」之間的溝通是完美的。我們總不能讓人類按了「Approve」之後,才發現行銷 Agent 根本沒拿到 RD Agent 的最新分鏡表吧?)

在前幾天,我們成功打造了 PM、RD 與行銷這三位各司其職的超強 Agent。但真實企業中,跨部門溝通往往是最大的災難——「資訊落差 (Information Silos)」同樣會發生在 AI 系統裡。

如果只是用傳統的 output = agent_A(); agent_B(output) 來串接,這叫「腳本 (Script)」,不叫「系統 (System)」。今天,我們要利用 Google ADK 的 Multi-Agent Workflow (多智能體工作流) 與 State Management (狀態管理),為這三位虛擬員工建立一套堅不可摧的跨部門溝通協議!

第一步:定義「跨部門共用白板」 (Shared State)
在 ADK 的多智能體架構中,Agents 不應該直接互相傳遞字串,而是應該共同維護一個「全局狀態 (Global State)」。這就像是會議室裡的白板,PM 在上面寫需求,RD 在上面畫架構,行銷在上面補文案。

我們透過 Pydantic 定義這個 CampaignState,確保每個 Agent 讀寫資料時都具備強型別約束。

from pydantic import BaseModel
from typing import Optional, List
from models import VideoStoryboard, MarketingCampaign # 匯入我們前幾天寫好的 Schema

# 定義多智能體協作的「全局白板」
class CampaignState(BaseModel):
    user_request: str = ""                     # 初始需求
    refined_spec: Optional[str] = None         # PM 萃取後的具體規格
    storyboard: Optional[VideoStoryboard] = None # RD 產出的強型別分鏡表
    marketing_assets: Optional[MarketingCampaign] = None # 行銷產出的貼文包
    current_status: str = "INIT"               # 追蹤目前進度

第二步:定義 Agents 的「職責與邊界」 (Node Operations)
接下來,我們初始化這三位 Agent。在 ADK 的 Workflow 中,我們不只給 Agent 指令,還要告訴它們「該從白板 (State) 上讀取什麼,並把產出寫回白板的哪個欄位」。

from google.adk import Agent

# 1. PM Agent:負責釐清模糊需求
pm_agent = Agent(
    name="pm_agent",
    model="gemini-2.5-flash",
    instruction="你是專案經理。請將使用者的模糊需求,轉換為條理分明的影片規格書(包含目標受眾、核心痛點、影片長度)。",
    # ADK 狀態路由設定:讀取 user_request,寫入 refined_spec
    state_mapping={
        "inputs": ["user_request"],
        "outputs": ["refined_spec"]
    }
)

# 2. RD (導演) Agent:負責將規格視覺化 (結合 Day 18 的自我修正機制)
rd_agent = Agent(
    name="rd_agent",
    model="gemini-2.5-pro",
    instruction="你是專業導演。請根據 PM 的規格書,產出精準的分鏡腳本。",
    response_schema=VideoStoryboard,
    state_mapping={
        "inputs": ["refined_spec"],  # 只讀取 PM 的產出,實現上下文隔離
        "outputs": ["storyboard"]
    }
)

# 3. 行銷 Agent:負責包裝推廣
marketing_agent = Agent(
    name="marketing_agent",
    model="gemini-2.5-pro",
    instruction="你是行銷總監。請根據分鏡表,為 FB、IG、Threads 產出帶有爆款鉤子的宣傳文案。",
    response_schema=MarketingCampaign,
    state_mapping={
        "inputs": ["storyboard"],    # 直接讀取 Pydantic 物件,無需重新解析 JSON
        "outputs": ["marketing_assets"]
    }
)

第三步:編織有向無環圖 (Workflow Graph)
這是 Multi-Agent 最迷人的地方。我們將這些 Agent 視為節點 (Nodes),並定義資料流動的方向 (Edges)。如果未來需要加入「法務 Agent」來審核行銷文案,我們只需要在圖中插入一個節點,完全不需要大幅改寫底層程式碼!

from google.adk import Workflow

# 建立自動化行銷產線工作流
campaign_workflow = Workflow(
    name="Video_Marketing_Assembly_Line",
    state_schema=CampaignState # 綁定我們的全局白板
)

# 定義 Agent 之間的交接順序 (Handoff Protocol)
campaign_workflow.add_sequence([
    "START", 
    pm_agent, 
    rd_agent, 
    marketing_agent, 
    "END"
])

# 編譯工作流
app = campaign_workflow.compile()

系統運作:見證跨部門協作的奇蹟
現在,當我們啟動這個 Workflow,我們只需要在起點丟入一句話,剩下的就交給這三位頂尖員工。

if __name__ == "__main__":
    # 啟動工作流,注入初始狀態
    initial_state = CampaignState(
        user_request="我們下個月要推廣 Google ADK,幫我做一支短片和社群貼文,主打解決 JSON 報錯。"
    )
    
    print("🚀 啟動跨部門 AI 工作流...\n")
    
    # 執行 Workflow 並取得最終狀態
    final_state = app.run(initial_state)
    
    print("✅ 跨部門協作完成!最終產出成果:\n")
    print(f"📋 【PM 規格書】\n{final_state.refined_spec}\n")
    print(f"🎬 【RD 分鏡表】(總時長: {final_state.storyboard.total_duration_seconds}s)\n(省略詳細分鏡...)\n")
    print(f"🔥 【行銷文案】\n包含 {len(final_state.marketing_assets.posts)} 篇跨平台貼文!")

https://ithelp.ithome.com.tw/upload/images/20260924/20121643ADFMHL7gBX.png

https://ithelp.ithome.com.tw/upload/images/20260924/20121643CWeR8cYI7U.png

https://ithelp.ithome.com.tw/upload/images/20260924/20121643RJU37w4XOz.png

小結
「架構的優雅,決定了系統的壽命。」

今天,我們拋棄了義大利麵條般的程式碼,利用 Google ADK 的 Workflow 與 State,建立了一個極度清晰、可擴展的多智能體跨部門協作產線。PM、RD、行銷 Agent 現在能透過強型別的白板完美傳遞資訊。


上一篇
Day 22 | 行銷 Agent 登場:抓取爆款鉤子,產出社群文案
下一篇
Day 24 | 衝突解決:設計 Agent 談判機制與防止無窮迴圈
系列文
30 天用 Google ADK 打造你的「全自動 AI 虛擬團隊」 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言