CrewAI 與 João Moura:用「角色扮演」讓 AI 團隊真正分工合作

CrewAI 與 João Moura:用「角色扮演」讓 AI 團隊真正分工合作

AI 系列-深入介紹 CrewAI 創辦人 João Moura 與他打造的多智能體協作框架,從 Agent 角色設計、Task 指派、到 Crew 流程控制,一次看懂這套把「AI 組織行為」工程化的框架。


如果 LangChain 解決的是「怎麼接管道」,那 CrewAI 解決的是**「怎麼帶團隊」**。

2023 年底,巴西工程師 João Moura 把一個問題想清楚了:當你有多個 AI Agent,最難的不是讓每一個 Agent 更聰明,而是讓它們知道自己的角色是什麼、該做什麼事、以及如何把結果傳給下一個人

CrewAI 的答案是:把企業組織的運作邏輯直接搬進 AI 框架。每個 Agent 有職稱、有目標、有背景故事——它不只是在執行指令,它在扮演一個角色


為什麼你需要認識 João Moura?

在 CrewAI 之前,João Moura 在 Clearbit(B2B 數據智能公司,後被 HubSpot 以 1.5 億美元收購)擔任工程師。他長期處理的問題是:如何讓系統自動化地完成需要多個步驟、多個決策點的複雜任務

這段經歷讓他對「工作流程設計」有深刻的直覺。當大型語言模型開始成熟,他看到的不是一個更聰明的聊天機器人,而是一個可以被角色化、組織化、協作化的工作單元。

2023 年 10 月,CrewAI 開源發布。三個月內,GitHub Stars 突破 10,000,成為當年 Multi-Agent 框架中成長最快的專案之一。

2024 年,CrewAI 完成 1,800 萬美元種子輪融資,投資方包含 Boldstart Ventures。Moura 的目標清晰:讓企業能像管理員工一樣管理 AI Agent 團隊


CrewAI 的核心哲學:AI 版的「職責分明」

傳統的 Agent 框架問的是:「這個 AI 能做什麼工具?」
CrewAI 問的是:「這個 AI 是誰?它的職責是什麼?

這個思維轉換帶來了根本性的差異。

1. Agent:不只是工具呼叫者,而是有身份的角色

from crewai import Agent

researcher = Agent(
    role='資深市場研究員',
    goal='找出 AI Agent 框架市場中最具競爭力的三個玩家',
    backstory="""你在科技產業工作超過十年,
    擅長從海量資訊中找到真正有價值的洞察。
    你不相信表面數字,你要挖掘背後的原因。""",
    verbose=True,
    allow_delegation=False,
    tools=[search_tool, scrape_tool]
)

rolegoalbackstory 三個欄位,讓 Agent 不只是功能的載體,更是一個有脈絡的虛擬員工。Backstory 尤其關鍵——它讓 LLM 在回應時有明確的視角與風格,輸出品質遠比通用提示詞穩定。

2. Task:把工作拆成可交付的任務單

from crewai import Task

research_task = Task(
    description="""分析以下 AI Agent 框架的市場定位:
    LangChain、CrewAI、AutoGen。
    重點:各自的差異化優勢、目標客群、商業模式。""",
    expected_output='一份 500 字的比較分析報告,含結論建議',
    agent=researcher
)

expected_output 是 CrewAI 的獨特設計——它明確告訴 Agent「什麼叫做完成」,大幅減少輸出漂移(output drift)的問題。

3. Crew:把 Agent 與 Task 組成協作單元

from crewai import Crew, Process

crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential,  # 或 Process.hierarchical
    verbose=True
)

result = crew.kickoff()

Crew 是整個框架的核心。它定義了誰做什麼、以什麼順序、用什麼方式協作。


兩種協作模式

CrewAI 目前支援兩種 Process,對應不同的組織結構:

Sequential(循序模式)

Task 1(研究員)→ Task 2(分析師)→ Task 3(撰稿人)→ 輸出

前一個 Task 的輸出自動成為下一個 Task 的輸入。適合有明確流程順序的工作,例如:研究 → 分析 → 撰寫。

Hierarchical(階層模式)

              Manager Agent(規劃 & 分配)
             /         |          \
        研究員        分析師       撰稿人
          ↓             ↓           ↓
        報告回傳 → Manager 整合 → 最終輸出

由一個 Manager Agent 負責任務分配與結果整合。適合需要動態調整、任務之間有複雜依賴的場景。Manager 會根據各 Agent 的回報決定下一步——這正是 Andrew Ng 四大模式中 Multi-Agent + Planning 的完整體現。

模式適合場景控制程度
Sequential固定流程、步驟明確高(可預測)
Hierarchical動態任務、需要決策中(彈性高)

CrewAI vs LangGraph:同樣是 Multi-Agent,差在哪?

這是目前最常被問到的問題。兩者都能做 Multi-Agent,但出發點完全不同:

面向CrewAILangGraph
設計語言角色 / 組織(人類比喻)節點 / 圖(工程比喻)
上手門檻低(產品經理也能讀懂)中高(需要理解圖論概念)
流程控制Sequential / Hierarchical任意圖結構(最靈活)
狀態管理內建(隱性)顯式 State 物件(透明)
適合誰快速原型、業務自動化複雜工作流、需要精細控制
底層可搭配任何 LLMLangChain 生態系

簡單記:CrewAI 是高層抽象,LangGraph 是低層精控。兩者不互斥,甚至有人用 LangGraph 實作 CrewAI 的 Hierarchical 模式底層。


實戰範例:三人 AI 寫作團隊

from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool

search_tool = SerperDevTool()

# ── 定義三個角色 ──
researcher = Agent(
    role='科技趨勢研究員',
    goal='收集最新、最可靠的 AI Agent 市場數據',
    backstory='你是一位資深科技記者,有嚴格的事實查核習慣。',
    tools=[search_tool]
)

analyst = Agent(
    role='商業策略分析師',
    goal='從研究數據中萃取可執行的商業洞察',
    backstory='你在麥肯錫工作過五年,習慣用數字說話。'
)

writer = Agent(
    role='科技部落客',
    goal='把複雜的技術分析寫成讀者願意讀完的文章',
    backstory='你的文章在 HackerNews 多次登上首頁。'
)

# ── 定義三個任務 ──
research = Task(
    description='研究 CrewAI、LangGraph、AutoGen 的 2025 年最新發展',
    expected_output='含來源的重點摘要,500 字以內',
    agent=researcher
)

analysis = Task(
    description='基於研究報告,分析哪個框架最適合台灣中小企業導入',
    expected_output='SWOT 分析表 + 一句話結論',
    agent=analyst
)

writing = Task(
    description='將分析結果寫成一篇繁體中文技術部落格文章',
    expected_output='800-1000 字,含標題、小標、結語',
    agent=writer
)

# ── 組成 Crew 並執行 ──
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research, analysis, writing],
    process=Process.sequential
)

result = crew.kickoff()
print(result)

三個 Agent,各有身份,各司其職,輸出自動串接——這段程式碼在生產環境中可以實際運行,不是示意圖。


經典語錄

"The future of work is not humans replaced by AI. It's humans managing crews of AI agents."

工作的未來不是人類被 AI 取代,而是人類管理 AI Agent 團隊。

"Give your AI a role, a goal, a backstory — and watch it perform."

給你的 AI 一個角色、一個目標、一段背景故事——然後看它發揮。


實用建議:三個起步行動

步驟 1:從 Role + Goal + Backstory 開始思考

在寫程式之前,先用自然語言定義你需要哪些「虛擬員工」。這不是技術問題,而是組織設計問題。拿出一張紙,寫下:這個 Agent 的職稱是什麼?它的目標是什麼?它有什麼獨特的工作風格?

步驟 2:用 expected_output 定義「完成的標準」

每個 Task 都必須有清晰的 expected_output。模糊的輸出定義會讓 Agent 反覆修改、浪費 Token。把它想成你寫給員工的驗收標準。

步驟 3:先用 Sequential,需要時再升級 Hierarchical

Sequential 可預測、好除錯。Hierarchical 彈性高但 Token 消耗大(Manager 需要額外的推理成本)。先用最簡單的模式跑通,再依需求升級。


我的反思

讀完 CrewAI 的設計,我最大的感受是:João Moura 根本不是在做 AI 框架,他是在做組織設計工具

rolegoalbackstory——這三個欄位不是技術參數,它們是管理學的語言。這讓我想到上一篇提到的 Harrison Chase:Chase 的 LangChain 是給工程師的工具,Moura 的 CrewAI 是給所有人的工具。

這種「把複雜技術翻譯成人類語言」的能力,本身就是一種深刻的技術洞見——它不是簡化,而是找到了問題的正確抽象層

回到這個系列的脈絡:Andrew Ng 定義框架,Shunyu Yao 設計推理引擎,Harrison Chase 工程化落地,João Moura 則把整件事組織化、人性化。四個人,四個視角,共同拼出了現代 AI Agent 生態系的輪廓。


參考資料 (References)

官方資源

延伸閱讀

推薦影片