CrewAI 完整入門教學:從零開始建立自己的AI團隊
CrewAI是一個令人興奮的新框架,它能夠幫助你建立一支由自主代理人(Autonomous Agents)組成的AI團隊。這些代理人都是專門針對特定任務訓練的專家,並且共同朝向一個目標而努力。你可以將CrewAI想像成是一個虛擬的AI團隊,為你工作和完成各種任務。無論是撰寫電子郵件、規劃商業計劃、寫作或開發應用程式,CrewAI都能派遣適當的代理人為你完成。
在本教學中,我們將透過實作範例引導你了解CrewAI的運作原理及其組件。我們將一步步建構一個簡單的AI團隊,其目標是為會議準備一份簡報文件。
準備好來體驗CrewAI的強大功能了嗎?讓我們馬上開始吧!
任務概述
我們將建立一個AI團隊來協助準備會議。這個團隊由四個代理人組成:
- Researcher:負責搜索與會人員和公司的資訊。
- Industry Analyst:分析行業趨勢和挑戰。
- Meeting Strategist:規劃會議策略和重點。
- Brief Writer:撰寫簡潔的會議簡報文件。
這個團隊的目標是根據與會人員、會議背景和目的,生成一份包含行業分析、重點討論和策略建議的會議簡報文件。
任務流程
為了達成目標,我們的AI團隊將遵循以下步驟:
步驟 | 代理人 | 任務 |
---|---|---|
1 | Researcher | 搜索與會人員和公司的資訊 |
2 | Industry Analyst | 分析相關行業的趨勢和挑戰 |
3 | Meeting Strategist | 根據搜集的資訊規劃會議策略和重點 |
4 | Brief Writer | 綜合所有資訊,撰寫會議簡報文件 |
讓我們開始建構這個AI團隊吧!
設定環境
首先,我們需要設定開發環境。請確保您已安裝Python 3.10或更新版本,並建立一個虛擬環境。
# 建立虛擬環境
python -m venv crewai-env
# 啟動虛擬環境
source crewai-env/bin/activate # Windows: crewai-env\Scripts\activate
# 安裝 CrewAI
pip install crew
現在,我們已準備好開始coding了!
定義任務 (Tasks)
任務是CrewAI的核心,它們代表了要完成的工作項目。讓我們從定義四個任務開始:
# tasks.py
import textwrap
from crew import Task
class MeetingPrepTasks:
@staticmethod
def research_task(agent, meeting_participants, meeting_context):
description = textwrap.dedent("""
Conduct comprehensive research on each of the individuals and companies involved in the
upcoming meeting. Gather information about recent news, achievements, professional
background, and any relevant business activities.
""")
expected_output = "A detailed report summarizing the key findings about each participant and company, highlighting information that could be relevant for the meeting."
return Task(
description=description,
expected_output=expected_output,
agent=agent,
context=[meeting_participants, meeting_context]
)
# 其他任務的定義...
在這個範例中,我們定義了research_task
方法,用於建立第一個任務 - 搜索與會人員和公司的資訊。每個任務都需要有詳細的描述、預期輸出和指派給哪個代理人。
我們還可以定義其他三個任務,包括分析行業趨勢、規劃會議策略和撰寫會議簡報。
建立代理人 (Agents)
接下來,我們需要為每個任務創建對應的代理人。代理人是執行任務的工作者,它們具有特定的角色、目標和背景故事:
# agents.py
from crew import Agent
class MeetingPrepAgents:
@staticmethod
def researcher_agent():
role = "Research Specialist"
goal = "Conduct thorough research on people and companies involved in the meeting."
backstory = textwrap.dedent("""
As a research specialist, your mission is to uncover detailed information about the
individuals and entities participating in the meeting. Your insights will lay the
groundwork for strategic meeting preparation.
""")
return Agent(role, goal, backstory, verbose=True)
# 其他代理人的定義...
在這個範例中,我們定義了researcher_agent
方法,用於建立一個擔任"Research Specialist"角色的代理人。每個代理人都有自己的角色、目標和背景故事,以增加其專業性和可信度。
我們還需要為其他三個任務創建對應的代理人,包括Industry Analyst、Meeting Strategist和Brief Writer。
建立工具 (Tools)
為了協助代理人完成任務,我們可以提供一些工具。在這個範例中,我們將使用ExaSample API來搜索相關資訊:
# tools.py
from langchain.tools import BaseTool
from langchain.utilities import ExaSampleAPIWrapper
def search_tool():
sample_search = ExaSampleAPIWrapper()
return BaseTool(
name="Search",
description="Search the web for information related to the query",
func=sample_search.run,
tool_kwargs={"use_async": True, "max_urls": 3}
)
def create_tool_suite():
return [search_tool()]
我們定義了一個search_tool
,它使用ExaSample API來搜索與查詢相關的資訊。我們還定義了一個create_tool_suite
方法,用於將所有工具組合成一個工具套件。
建立AI團隊 (Crew)
現在,我們可以將任務、代理人和工具組合起來,創建我們的AI團隊了:
# main.py
from crew import Crew
from agents import MeetingPrepAgents
from tools import create_tool_suite
from tasks import MeetingPrepTasks
def main():
print("Welcome to the Meeting Prep Crew!")
# 獲取用戶輸入
meeting_participants = input("Enter the emails of the meeting participants: ")
meeting_context = input("Enter the context of the meeting: ")
meeting_objective = input("Enter the goal of the meeting: ")
# 創建代理人
researcher = MeetingPrepAgents.researcher_agent()
industry_analyst = MeetingPrepAgents.industry_analyst_agent()
strategist = MeetingPrepAgents.meeting_strategist_agent()
writer = MeetingPrepAgents.brief_writer_agent()
# 創建任務
research_task = MeetingPrepTasks.research_task(researcher, meeting_participants, meeting_context)
industry_task = MeetingPrepTasks.industry_analysis_task(industry_analyst, meeting_participants, meeting_context)
strategy_task = MeetingPrepTasks.meeting_strategy_task(strategist, [research_task.result, industry_task.result], meeting_objective)
brief_task = MeetingPrepTasks.summarizing_briefing_task(writer, [research_task.result, industry_task.result, strategy_task.result], meeting_objective)
# 創建工具套件
tools = create_tool_suite()
# 創建 Crew 並執行
crew = Crew(agents=[researcher, industry_analyst, strategist, writer],
tasks=[research_task, industry_task, strategy_task, brief_task],
tools=tools)
result = crew.run()
# 輸出結果
print(f"\nMeeting Brief:\n{result}")
if __name__ == "__main__":
main()
在這個main.py
文件中,我們執行以下步驟:
- 獲取用戶輸入,包括與會人員、會議背景和目標。
- 創建四個代理人(Researcher、Industry Analyst、Meeting Strategist 和 Brief Writer)。
- 創建四個任務,並將它們分配給對應的代理人。
- 創建工具套件。
- 使用代理人、任務和工具創建一個
Crew
實例。 - 執行
crew.run()
方法,獲取會議簡報文件。 - 輸出會議簡報文件。
就是這樣!現在你已經了解如何使用CrewAI來建立自己的AI團隊了。你可以根據自己的需求調整任務、代理人和工具,創建各種不同的AI團隊來幫助你完成各種任務。
希望這個教學對你有所幫助!如果你有任何其他問題或意見,歡迎隨時提出。祝你在CrewAI的學習之旅一切順利!