更新于 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="定义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="起草一份带有建议的单页简报。", 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)