當單一 AI 代理不足以應對複雜、多階段的任務時,多代理協作系統便應運而生。在眾多框架中,CrewAI 以其獨特的「角色導向」設計哲學脫穎而出。它並非簡單地讓多個代理進行對話,而是旨在模擬一個分工明確、目標一致的高效人類團隊。本文將深入剖析 CrewAI 的核心架構,並以一個商業實戰案例,展示如何利用它構建一個能自主完成市場分析報告的 AI 團隊。

一、CrewAI 的核心架構與設計哲學

CrewAI 的設計理念是將複雜任務分解給具有特定角色 (Role) 的代理,每個代理專注於執行其擅長的任務 (Task)

其系統由五個關鍵元件組成:

  1. Agents (代理):具有特定角色、目標 (goal) 和背景故事 (backstory) 的 AI 執行者。這些設定共同定義了代理的「人格」和行為模式。
  2. Tasks (任務):分配給代理的具體工作描述,包含清晰的指令和預期輸出 (expected_output),確保任務成果可以順利地傳遞給下一個代理。
  3. Tools (工具):代理可以使用的外部功能,如 API 或資料庫查詢工具。
  4. Crew (團隊):將代理和任務組織在一起的核心協調單位。
  5. Process (流程):定義團隊的協作模式,主要分為 sequential (順序處理) 和 hierarchical (層級處理)。

圖表解說:CrewAI 核心架構

此組件圖展示了 CrewAI 的核心元件如何協同工作,形成一個以「團隊」為中心的協作系統。

PlantUML 圖表

二、實戰:構建市場分析 AI 團隊

我們將構建一個能自動生成「AI 產業市場分析報告」的 AI 團隊。這個團隊需要三個角色:

1. 定義代理 (Agents)

from crewai import Agent
from crewai_tools import SerperDevTool

# 建立一個網路搜尋工具
search_tool = SerperDevTool()

# 市場研究員
researcher = Agent(
    role="資深市場研究員",
    goal="發掘關於 {topic} 的前緣洞見",
    backstory="你是一位在科技巨頭工作的資深市場研究員,擅長識別市場趨勢。",
    tools=[search_tool],
    allow_delegation=True # 允許將任務委派給其他代理
)

# 策略分析師
analyst = Agent(
    role="首席策略分析師",
    goal="從市場資料中提煉出可行的策略性見解",
    backstory="你擅長分析複雜數據,並從中找出商業機會與潛在風險。",
    allow_delegation=False
)

# 報告撰寫員
writer = Agent(
    role="專業科技作家",
    goal="撰寫一篇引人入勝、格式清晰的技術分析報告",
    backstory="你是一位知名的科技專欄作家,以清晰、簡潔的寫作風格著稱。",
    allow_delegation=False
)

2. 定義任務 (Tasks)

每個任務都與一個代理綁定,並可以接收來自上游任務的上下文 (context)。

from crewai import Task

# 研究任務
research_task = Task(
    description="收集關於 {topic} 的最新市場趨勢與主要競爭者的資訊。",
    expected_output="一份包含至少 5 個關鍵洞見的要點報告。",
    agent=researcher
)

# 分析任務
analysis_task = Task(
    description="分析提供的市場資料,進行 SWOT 分析,並提出至少 3 個策略建議。",
    expected_output="一份包含 SWOT 分析和策略建議的完整分析報告。",
    context=[research_task], # 此任務的上下文來自研究任務
    agent=analyst
)

# 撰寫任務
writing_task = Task(
    description="根據提供的分析報告,撰寫一篇結構完整、約 500 字的市場分析文章。",
    expected_output="一篇格式化為 Markdown 的市場分析報告。",
    context=[analysis_task], # 此任務的上下文來自分析任務
    agent=writer
)

3. 組建團隊 (Crew) 並啟動

我們將代理和任務組建成一個團隊,並設定其為順序處理 (Sequential) 模式。

from crewai import Crew, Process

# 建立團隊
market_analysis_crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential,
    memory=True # 啟用記憶功能,讓代理能記住對話歷史
)

# 啟動團隊
result = market_analysis_crew.kickoff(inputs={"topic": "AI 在醫療領域的應用"})
print(result)

圖表解說:市場分析團隊工作流程

此活動圖展示了市場分析團隊在順序處理模式下的協作流程,清晰地呈現了任務的依賴關係和資訊的流動。

PlantUML 圖表

三、處理模式與監控

  • 處理模式: 除了 sequential,CrewAI 還支援 hierarchical (層級) 模式。在該模式下,需要指定一個 manager_llm,由一個管理者代理來動態地協調和委派任務,適用於更複雜、非線性的工作流程。
  • 使用 AgentOps 監控: 在開發複雜的多代理系統時,可觀察性至關重要。只需在建立 Crew 時傳入 agentops 物件,即可與 AgentOps 監控平台無縫整合,深入追蹤和分析代理的行為、成本和效能。

結論

CrewAI 透過其獨特的「角色導向」設計,為開發多代理系統提供了一個強大而結構化的框架。它不僅僅是讓多個 AI 進行簡單的對話,而是真正地構建了一個分工明確、目標一致的「AI 團隊」。結合 AgentOps 等監控工具,開發者可以對複雜的代理協作進行全方位的觀測與持續最佳化,從而釋放出多代理系統在解決真實世界複雜問題上的巨大潛力。