更新於 2025年9月22日
11 分鐘
大膽承諾:如果您曾希望可以複製您最好的隊友,以更快地完成專案,那麼 CrewAI 就能讓您更接近這個目標——它會協調多個 AI 代理,共同規劃、協作和交付工作成果。
pip install crewai langchain-openai python-dotenv.env 檔案,其中包含您的 LLM 提供者金鑰:OPENAI_API_KEY=sk-your-key# 或您的堆疊支援的其他提供者from crewai import Agentfrom langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-4o-mini", temperature=0.2)researcher = Agent(role="市場研究員",goal="尋找關於目標市場和競爭對手的可信、最新的見解。",backstory=("你是一位勤奮的分析師,會驗證聲明、引用來源,並總結""來自信譽良好的出版物的信號。"),tools=[], # 稍後新增網路/搜尋/抓取工具llm=llm)strategist = Agent(role="產品策略師",goal="將研究綜合為清晰的定位和路線圖選項。",backstory="您優先考慮清晰度、可行性和可衡量的成果。",tools=[],llm=llm)writer = Agent(role="內容寫手",goal="製作結構良好的簡報,其中包含範例和後續步驟。",backstory="您以簡潔、有說服力的英語寫作,並遵循風格指南。",tools=[],llm=llm)from crewai import Taskresearch_task = Task(description=("研究 2025 年美國中小企業專案管理軟體市場。""找出主要競爭對手、定價層級、ICP 和三個未滿足的需求。""以項目符號形式傳回,並提供 3–5 個引文。"),expected_output=("一份 Markdown 簡報,包含以下章節:市場規模、主要參與者、定價、ICP、""未滿足的需求、來源 (附連結)。"),agent=researcher)synthesis_task = Task(description=("使用研究簡報,產生一份定位聲明、2–3 個差異化因素,""以及一份包含里程碑的 90 天路線圖。"),expected_output="一份簡潔的策略備忘錄 (<= 400 字)。",agent=strategist)writing_task = Task(description=("將策略備忘錄變成一份公開的一頁式文件。包含標題、""價值主張、功能要點和 CTA。"),expected_output="一份適用於登陸頁面的 Markdown 一頁式文件。",agent=writer)from crewai import Crewcrew = Crew(agents=[researcher, strategist, writer],tasks=[research_task, synthesis_task, writing_task],process="sequential", # 依序交接輸出verbose=True)result = crew.kickoffprint(result)fact_checker = Agent(role="事實查核員",goal="根據主要來源驗證所有聲明;標記薄弱的引文。",backstory="懷疑、一絲不苟、公正。",llm=llm)qa_task = Task(description="驗證所有事實陳述;新增帶有 [FIX] 標籤的內嵌更正。",expected_output="一份已更正的草稿,其中包含修正摘要。",agent=fact_checker)python 執行的工具型代理來進行可驗證的分析。from langchain_community.tools import DuckDuckGoSearchRunfrom langchain_community.document_loaders import WebBaseLoadersearch = DuckDuckGoSearchRundef web_search_tool(query: str):return search.run(query)def read_url_tool(url: str):loader = WebBaseLoader(url)docs = loader.loadreturn "\n\n".join([d.page_content[:2000] for d in docs])researcher.tools = [web_search_tool, read_url_tool]Task(description=("總結 5 項關於遠端工作效率的最新研究 (2023–2025),其中包含""方法、樣本大小和主要發現。"),expected_output=("Markdown,每個研究都有 H2 章節、最終比較表和連結。"),agent=researcher)r1 = Agent(role="研究員 A", goal="專注於定價", backstory="", llm=llm)r2 = Agent(role="研究員 B", goal="專注於功能", backstory="", llm=llm)# r1、r2 的平行任務;後續的綜合任務會合併它們的輸出。qa = Agent(role="品質保證審閱者",goal="確保輸出符合驗收標準和風格指南。",backstory="你很嚴格而且迂腐。",llm=llm)researcher = Agent(role="分析研究員",goal=("提供簡潔、準確的簡報,其中包含 3–5 個可信的引文和風險注意事項。"),backstory=("你會驗證聲明、偏好主要來源,並標記不確定性。"),llm=llm)crew = Crew(..., verbose=True, output_log_file="runs/2025-crew.log")persona = Agent(role="人物分析師", goal="定義 SaaS 中的 RevOps 領導者的 ICP 和 JTBD。", llm=llm)researcher = Agent(role="研究員", goal="收集可信的資料。", llm=llm)synth = Agent(role="合成器", goal="比較和解釋。", llm=llm)writer = Agent(role="寫手", goal="建立一份可供主管閱讀的簡報。", llm=llm)qa = Agent(role="品質保證", goal="驗證聲明和清晰度。", llm=llm)persona_task = Task(description="定義 SaaS 中 RevOps 領導者的 ICP 和 JTBD。", agent=persona,expected_output="要點 + 痛點 + 成功指標。")research_task = Task(description="收集 3 個工具的定價、功能和評論。", agent=researcher,expected_output="表格 + 5 個引文。")synth_task = Task(description="建構比較矩陣和前 3 大見解。", agent=synth,expected_output="Markdown 表格 + 見解。")write_task = Task(description="草擬一份包含建議的 1 頁簡報。", agent=writer,expected_output="Markdown 格式的主管簡報。")qa_task = Task(description="檢查準確性和可讀性;修正問題。", agent=qa,expected_output="乾淨、經過驗證的簡報。")crew = Crew(agents=[persona, researcher, synth, writer, qa],tasks=[persona_task, research_task, synth_task, write_task, qa_task],process="sequential", verbose=True)print(crew.kickoff)