告别单打独斗:使用 CrewAI 构建你的第一支虚拟员工团队
告别单打独斗:使用 CrewAI 构建你的第一支虚拟员工团队
第一部分:引言与基础 (Introduction & Foundation)
1. 引人注目的标题 (Compelling Title)
主标题:告别单打独斗:使用 CrewAI 构建你的第一支虚拟员工团队
副标题:从选题策划到产品原型,用大语言模型LLM驱动的协作系统,3小时完成你独自要花3天的工作流
2. 摘要/引言 (Abstract / Introduction)
问题陈述
你是否有过这种**个人创业/副业/探索性技术项目中“分身乏术”的经历?比如你可能是个独立开发者:要写前端组件、调研技术选型、设计系统架构、写README.md、做SEO标题摘要、查文档…一堆杂活分散了你的核心能力(比如你最擅长的代码实现);你可能是个内容创作者:要找爆款选题、搜素材、写初稿、润色文案、做内容排版、准备发布文案…从早上忙到深夜也赶不上一周三更的KPI;你可能是个产品经理实习生:要做用户访谈分析竞品、梳理需求文档PRD、画原型草图?但团队没人带,怕PRD写得一团糟;甚至,哪怕你是个职场中的管理者?有时候想偷偷做个“小实验性报告初稿,又怕花太多时间被老板发现…
更痛苦的是,**现在市面上的大多数LLM应用(比如ChatGPT、Claude、Gemini的单个对话窗口)本质上还是“单打独斗的工具人”——它们每次只能处理一个小任务片段,无法自动理解你的全局目标、无法拆分任务、无法自动调用多个LLM分别处理不同专业方向、无法在处理过程中相互沟通修正错误、无法对最终结果进行复盘优化。你得像个保姆一样,手动把每个任务拆得明明白白、手动把上一步的输出复制粘贴到下一步的输入里、手动检查每一步的结果有没有问题——这不仅没有解放你的生产力,反而增加了“上下文切换+人工校对”的双重负担!
核心方案
今天这篇文章,我要给你介绍一套2024年最火的开源LLM协作框架——CrewAI,它能帮你把大语言模型LLM从“单个工具人”变成“一支专业的虚拟员工团队”:
- 定义角色(Agents/Roles):给每个Agent设定清晰的“人设”(职业、性格、专业领域、工具使用权限);
- **分配任务(Tasks):给每个Agent分配具体的、可执行的、有验收标准的任务;
- **编排流程(Processes):设定任务之间的先后顺序或协作规则(比如串行流程Sequential Process,或者群体决策流程Hierarchical Process);
- **集成工具(Tools):让Agents可以像真人员工一样“查资料、搜实时数据、调用外部API、甚至写代码执行Python/Rust/JS!
主要成果/价值
读完这篇文章并跟着动手实践后,你将:
- 完全理解CrewAI的**核心架构与概念(Agent、Task、Process、Tool这四大支柱);
- 从零开始搭建一个**3个Agent的内容创作虚拟团队(选题策划师SEO分析师文案撰写者);
- 学会给Agent集成**DuckDuckGo搜索引擎工具(免费无API Key!)、**Wikipedia知识库检索工具;
- 掌握CrewAI的**串行流程与简单调试技巧;
- 获得一套**可复现的、可直接修改扩展的虚拟团队代码模板;
- 理解如何把这套模板**迁移到你的真实场景(比如独立开发、产品经理做PRD、数据分析师做报告)。
文章导览
这篇文章会分为四个部分:
- 第一部分:引言与基础——介绍我们要解决的问题、核心方案、目标读者与前置知识、文章目录;
- 第二部分:核心内容——深入讲解CrewAI的核心概念与理论基础、环境准备、3个内容创作Agent的分步实现、关键代码解析;
- 第三部分:验证与扩展——展示我们虚拟团队的运行结果、性能优化与最佳实践、常见问题与解决方案、未来扩展方向;
- 第四部分:总结与附录——回顾文章要点、列出参考资料、提供完整的GitHub代码仓库链接。
3. 目标读者与前置知识 (Target Audience & Prerequisites)
目标读者
这篇文章的目标读者是:
- 有一定Python基础(至少会写Python代码、会用pip安装库、会用print()函数调试),但对LLM协作框架不熟悉的初级/中级开发者;
- 内容创作者、独立开发者、产品经理、数据分析师等有大量重复性或需要多角色协作的探索性任务需求,但没有太多技术背景的**“非硬核技术人员”(当然,你还是需要一点点Python基础,或者跟着我可以帮你简化代码里的注释);
- 对大语言模型LLM感兴趣,想尝试用LLM解决实际问题的技术爱好者。
前置知识
在阅读这篇文章之前,你需要:
- 拥有**Python 3.10以上版本(建议Python 3.11或3.12,因为CrewAI对Python版本有要求,3.10是最低门槛);
- 会用pip或conda管理Python环境(虚拟环境是必须的!不要污染你的全局Python环境!);
- 拥有**至少一个大语言模型API Key:
- 最推荐的是OpenAI的GPT-4o或GPT-4o Mini(虽然OpenAI的API Key不是必须的,但免费模型的效果会差很多,不过我后面也会告诉你如何用**Ollama本地部署模型,实现完全免费的虚拟团队,但本地模型的速度会比较慢,对电脑配置要求也比较高);
- 如果你没有OpenAI的API Key,可以用**Claude 3 Haiku(Anthropic的);
- 甚至可以用**国内的模型API Key:比如通义千问(Qwen)、智谱清言(GLM)、月之暗面(Kimi)(这些模型的API调用方式和OpenAI的API完全兼容,只需要改一下API Base URL和API Key即可!);
- 对大语言模型LLM的基本概念有**有一点点了解(比如什么是prompt、什么是LLM、LLM的局限性)。
4. 文章目录 (Table of Contents)
第一部分:引言与基础
1. 引人注目的标题
2. 摘要/引言
3. 目标读者与前置知识
4. 文章目录
第二部分:核心内容
5. 问题背景与动机
6. 核心概念与理论基础
6.1 什么是CrewAI?
6.2 核心概念结构与四大支柱组成
6.2.1 核心概念之间的关系:ER实体关系图与交互关系图
6.2.2 核心概念核心属性维度对比markdown表格
6.3 CrewAI的数学模型(提示工程协作过程的马尔可夫决策过程MDP模型
6.4 CrewAI的两种核心流程:串行流程Sequential Process与群体决策流程Hierarchical Process
6.4.1 串行流程Sequential Process的算法流程图
6.4.2 群体决策流程Hierarchical Process的算法流程图
7. 环境准备
7.1 创建Python虚拟环境
7.2 安装CrewAI及其依赖库
7.3 配置大语言模型API Key
7.3.1 配置OpenAI API Key
7.3.2 配置国内模型API Key(通义千问Qwen为例)
7.3.3 配置Ollama本地模型API Key(完全免费!)
7.4 验证环境是否配置成功
8. 分步实现:从零到一构建内容创作虚拟团队
8.1 场景介绍
8.2 项目结构设计
8.3 系统功能设计
8.4 系统接口设计
8.5 系统核心实现源代码
8.5.1 导入必要的库
8.5.2 配置环境变量与大语言模型LLM
8.5.3 定义工具(Tools):DuckDuckGo搜索工具与Wikipedia检索工具
8.5.4 定义角色(Agents/Roles):选题策划师SEO分析师文案撰写者
8.5.5 定义任务(Tasks):选题调研SEO优化文案撰写
8.5.6 定义流程(Processes):串行流程Sequential Process
8.5.7 运行虚拟团队并输出结果
9. 关键代码解析与深度剖析
9.1 角色(Agent)的核心参数解析:role、backstory、goal、tools、allow_delegation、verbose、llm
9.2 任务(Task)的核心参数解析:description、expected_output、agent、context、tools、async_execution
9.3 流程(Process)的核心参数解析:process、manager_llm、manager_backstory、manager_goal、verbose
9.4 提示工程(Prompt Engineering)在CrewAI中的重要性:如何写好Agent的role、backstory、goal?如何写好Task的description、expected_output?
9.5 为什么我们需要设置allow_delegation?什么时候应该设置allow_delegation=True?
---
第三部分:验证与扩展
10. 结果展示与验证
10.1 运行我们的内容创作虚拟团队
10.2 验证运行结果的质量
10.3 调试虚拟团队的常见技巧
11. 性能优化与最佳实践
11.1 性能优化:如何让虚拟团队运行得更快?如何降低API调用成本?
11.2 最佳实践:如何定义好的Agent?如何定义好的Task?如何用好工具?如何调试虚拟团队?
12. 常见问题与解决方案(FAQ / Troubleshooting)
12.1 技术问题:虚拟团队运行报错?如何解决?
12.2 效果问题:虚拟团队输出的结果质量不好?如何优化?
12.3 成本问题:API调用成本太高?如何降低?
13. 未来展望与扩展方向
13.1 技术发展历史的markdown表格
13.2 未来扩展方向:如何给虚拟团队集成更多工具?如何使用CrewAI的高级流程(比如Consensus Process群体共识流程)?如何部署虚拟团队到生产环境?如何给虚拟团队添加记忆功能(Memory)?如何给虚拟团队添加知识库(Knowledge Base)?如何给虚拟团队添加异步任务(Async Execution)?
---
第四部分:总结与附录
14. 总结
15. 参考资料
16. 附录
16.1 完整的GitHub代码仓库链接
16.2 完整的requirements.txt文件
16.3 如何配置其他国内模型API Key的完整文档链接
16.4 如何配置Ollama本地模型的完整文档链接
16.5 如何给虚拟团队添加更多工具的完整文档链接
第二部分:核心内容 (Core Content)
5. 问题背景与动机 (Problem Background & Motivation)
深入探讨为什么这个问题值得关注
根据Statista的最新数据(2024年Q1),全球大语言模型LLM的市场规模已经达到了290亿美元,预计到2030年将达到1.3万亿美元——这意味着LLM正在以前所未有的速度渗透到我们生活和工作的方方面面。
但与此同时,目前LLM的使用率虽然很高,但深度使用率却很低——根据Gartner的最新数据(2024年Q2),只有12%的企业和个人能够真正地用LLM解决复杂的、需要多角色协作的任务——而剩下的**88%**的用户,要么只是用LLM做一些简单的、单任务的工作(比如写一封邮件、写一段代码、问一个简单的问题),要么就是“LLM的“玩具用户”——玩了几天就不用了。
为什么会出现这种情况呢?因为现在市面上的大多数LLM应用都有一个致命的缺点:它们是“单Agent系统”——每次只能处理一个小任务片段,无法自动理解你的全局目标、无法拆分任务、无法自动调用多个LLM分别处理不同专业方向、无法在处理过程中相互沟通修正错误、无法对最终结果进行复盘优化。
分析现有解决方案的局限性或不足之处
为了解决这个问题,市面上也出现了一些“多Agent系统”的解决方案,但它们都有各自的局限性:
- LangChain的Multi-Agent系统:LangChain是目前最火的LLM应用开发框架,但它的Multi-Agent系统非常复杂——你需要自己写很多代码来实现Agent之间的通信、任务的拆分、流程的编排——对于初级开发者来说,学习曲线非常陡峭;
- AutoGPT:AutoGPT是2023年最火的“自主Agent系统”——它可以自动设定目标、自动拆分任务、自动调用工具、自动完成任务——但它的可控性非常差——它经常会“跑偏”,做一些你没有让它做的事情,而且它的成本非常高——因为它会不断地调用工具和LLM,直到它自己觉得任务完成——对于大多数用户来说,这是不可接受的;
- BabyAGI:BabyAGI是另一个2023年很火的“自主Agent系统”——它的可控性比AutoGPT好一些,但它的功能非常有限——它只能做一些简单的任务拆分和执行,无法实现真正的“多Agent协作”;
- 企业级的多Agent系统:比如Microsoft 365 Copilot Studio、Google Workspace Duet AI Enterprise——这些系统非常强大,但它们的成本非常高——而且它们的灵活性非常差——你只能在它们提供的功能范围内使用,无法自己定义Agent、任务、流程、工具——对于独立开发者、内容创作者、产品经理等“非硬核技术人员”来说,这是不可接受的。
为你的技术选型或方案设计提供充分的理由
那么,为什么我们要选择CrewAI呢?因为CrewAI完美地解决了现有解决方案的所有局限性:
- 简单易用:CrewAI的学习曲线非常平缓——你只需要写几百行Python代码,甚至几十行Python代码,就可以从零到一构建一个专业的虚拟员工团队;
- 可控性强:CrewAI是一个明确的流程编排框架——你可以完全控制Agent的角色、任务、流程、工具——你可以设定任务的先后顺序、可以设定Agent之间的协作规则、可以设定任务的验收标准——你不用担心Agent会“跑偏”;
- 灵活性高:CrewAI是一个开源框架——你可以自己定义Agent、任务、流程、工具——你可以集成任何你想要的大语言模型LLM——你可以集成任何你想要的外部API——你可以集成任何你想要的Python库;
- 成本可控:CrewAI是一个流程明确的框架——你可以完全控制Agent调用LLM和工具的次数——你可以设定任务的验收标准——你不用担心Agent会不断地调用LLM和工具——你可以把API调用成本控制在你的预算范围内;
- 可扩展性强:CrewAI有一个非常活跃的开源社区——每天都有新的工具、新的流程、新的Agent模板被开发出来——你可以很容易地找到你需要的工具、流程、Agent模板——你可以很容易地扩展你的虚拟员工团队。
6. 核心概念与理论基础 (Core Concepts & Theoretical Foundation)
6.1 什么是CrewAI?
CrewAI是由João Moura(巴西的一位资深的软件工程师兼AI爱好者)在2023年10月发布的一个开源的、专门用于构建LLM协作的Python框架——它的核心思想是:“把大语言模型LLM当成虚拟员工,把任务分配给不同的虚拟员工,让它们像真人团队一样协作完成任务”。
CrewAI的口号是:“Orchestrating role-playing AI agents”——翻译过来就是:“编排角色扮演的AI Agent”。
根据CrewAI的官方文档,截至2024年Q2,CrewAI的GitHub仓库已经有了超过30,000个Star**——这意味着它是目前最火的LLM协作框架之一。
6.2 核心概念结构与四大支柱组成
CrewAI的核心概念结构可以用**“四层金字塔模型**来表示:
- **第一层(最底层):大语言模型LLM——这是CrewAI的“大脑”——所有的Agent都是基于LLM来运行的;
- **第二层:工具Tools——这是CrewAI的“手脚”——Agent可以用工具来查资料、搜实时数据、调用外部API、甚至写代码执行;
- **第三层:角色Agent/Role——这是CrewAI的“核心”——每个Agent都有一个清晰的“人设”(职业、性格、专业领域、工具使用权限);
- **第四层(最顶层):团队Crew——这是CrewAI的“整体”——由多个Agent、多个Task、一个Process组成——这就是我们要构建的“虚拟员工团队”。
在这四层金字塔模型中,最核心的四个支柱是:角色Agent/Role、任务Task、流程Process、工具Tools——我们把这四个支柱称为CrewAI的“四大金刚”**。
接下来,我们会用ER实体关系图、交互关系图、核心属性维度对比markdown表格来详细讲解这四个核心概念之间的关系。
6.2.1 核心概念之间的关系:ER实体关系图与交互关系图
首先,我们来看一下CrewAI的ER实体关系图——这个图展示了CrewAI的核心概念之间的静态关系:
从这个ER实体关系图中,我们可以看到:
- 一个Crew由多个Agent、多个Task、一个Process组成;
- **一个Crew可以使用多个Tool(不过,Tool通常是分配给Agent或Task的,而不是直接分配给Crew的);
- **一个Agent可以执行多个Task;
- **一个Agent可以使用多个Tool;
- **一个Task分配给一个Agent;
- **一个Task可以使用多个Tool;
- **一个Task可以依赖多个其他Task的输出作为上下文;
- **一个Agent可以委托给多个其他Agent(如果allow_delegation=True);
- **一个Process编排所有的Agent和Task;
- **如果是群体决策流程Hierarchical Process,那么需要一个Manager Agent;
- **Manager Agent本质上是一个普通的Agent,但它有一个特殊的功能:它可以拆分任务、分配任务、检查任务的验收标准、协调Agent之间的协作。
接下来,我们来看一下CrewAI的交互关系图——这个图展示了CrewAI的核心概念之间的动态交互关系:
从这个交互关系图中,我们可以看到:
- **用户输入全局目标给虚拟团队Crew;
- **虚拟团队Crew把全局目标传递给流程Process;
- **如果是串行流程Sequential Process:
a. 流程Process分配第一个任务给Agent1;
b. Agent1调用工具Tool(如果需要);
c. 工具Tool返回结果给Agent1;
d. Agent1返回第一个任务的结果给流程Process;
e. 流程Process分配第二个任务给Agent2,并且把第一个任务的结果作为上下文传递给Agent2;
f. Agent2调用工具Tool(如果需要);
g. 工具Tool返回结果给Agent2;
h. Agent2返回第二个任务的结果给流程Process;
i. 流程Process返回最终结果给虚拟团队Crew;
j. 虚拟团队Crew返回最终结果给用户; - **如果是群体决策流程Hierarchical Process:
a. 流程Process把全局目标传递给Manager Agent;
b. Manager Agent拆分任务,并且分配任务给Agent1和Agent2;
c. 流程Process分配第一个任务给Agent1;
d. 流程Process分配第二个任务给Agent2;
e. Agent1调用工具Tool(如果需要);
f. 工具Tool返回结果给Agent1;
g. Agent1返回第一个任务的结果给Manager Agent;
h. Agent2调用工具Tool(如果需要);
i. 工具Tool返回结果给Agent2;
j. Agent2返回第二个任务的结果给Manager Agent;
k. Manager Agent合并任务结果,并且检查验收标准;
l. Manager Agent返回最终结果给流程Process;
m. 流程Process返回最终结果给虚拟团队Crew;
n. 虚拟团队Crew返回最终结果给用户。
6.2.2 核心概念核心属性维度对比markdown表格
接下来,我们来看一下CrewAI的核心概念核心属性维度对比markdown表格——这个表格展示了CrewAI的核心概念之间的核心属性对比:
| 核心概念 | 定义 | 核心属性 | 必需属性 | 可选属性 |
|---|---|---|---|---|
| **Crew(虚拟团队) | 由多个Agent、多个Task、一个Process组成的整体 | 无 | agents、tasks、process | tools、memory、cache、manager_llm、manager_backstory、manager_goal、verbose、language、max_rpm、full_output、output_log_file |
| **Agent(角色) | 一个有清晰“人设”的虚拟员工 | role、backstory、goal | role、goal | backstory、tools、allow_delegation、verbose、llm、max_rpm、cache、function_calling_llm、step_callback、memory、memory_config |
| **Task(任务) | 分配给一个Agent的具体的、可执行的、有验收标准的任务 | description、expected_output、agent | description、expected_output、agent | context、tools、async_execution、output_json、output_pydantic、output_file、callback、human_input |
| **Process(流程) | 编排所有Agent和Task的规则 | 无 | 无 | 无 |
| **Tool(工具) | Agent或Task可以使用的外部资源 | 无 | 无 | 无 |
6.3 CrewAI的数学模型(提示工程协作过程的马尔可夫决策过程MDP模型)
虽然CrewAI是一个工程框架,但它的协作过程本质上是一个马尔可夫决策过程(Markov Decision Process,简称MDP)**——我们可以用数学模型来描述CrewAI的协作过程,这有助于我们更深入地理解CrewAI的工作原理。
首先,我们来回顾一下马尔可夫决策过程MDP的定义:
一个马尔可夫决策过程MDP是一个五元组 ( S , A , P , R , γ ) (S, A, P, R, γ) (S,A,P,R,γ),其中:
- S S S:状态空间(State Space)——所有可能的状态的集合;
- A A A:动作空间(Action Space)——所有可能的动作的集合;
- P ( s ′ ∣ s , a ) P(s' | s, a) P(s′∣s,a):状态转移概率函数(State Transition Probability Function)——在状态 s s s下执行动作 a a a后转移到状态 s ′ s' s′的概率;
- R ( s , a , s ′ ) R(s, a, s') R(s,a,s′):奖励函数(Reward Function)——在状态 s s s下执行动作 a a a后转移到状态 s ′ s' s′后获得的奖励;
- γ γ γ:折扣因子(Discount Factor)—— 0 ≤ γ ≤ 1 0 ≤ γ ≤ 1 0≤γ≤1,表示未来奖励的折扣率。
接下来,我们把CrewAI的协作过程映射到马尔可夫决策过程MDP:
- 状态空间 S S S:
- s 0 s_0 s0:初始状态——用户输入的全局目标;
- s t s_t st:中间状态——第 t t t个任务的执行结果、所有已执行任务的上下文、所有已调用工具的结果;
- s T s_T sT:终止状态——所有任务都执行完成,并且满足验收标准;
- 因此,状态空间 S = { s 0 , s 1 , . . . , s T } S = \{s_0, s_1, ..., s_T\} S={s0,s1,...,sT};
- 动作空间 A A A:
- a a g e n t a_{agent} aagent:选择下一个要执行任务的Agent;
- a t a s k a_{task} atask:选择下一个要执行的Task;
- a t o o l a_{tool} atool:选择下一个要调用的Tool(如果需要);
- a d e l e g a t e a_{delegate} adelegate:选择下一个要委托的Agent(如果allow_delegation=True);
- 因此,动作空间 A = { a a g e n t , a t a s k , a t o o l , a d e l e g a t e } A = \{a_{agent}, a_{task}, a_{tool}, a_{delegate}\} A={aagent,atask,atool,adelegate};
- 状态转移概率函数 P ( s ′ ∣ s , a ) P(s' | s, a) P(s′∣s,a):
- 这个函数本质上是**由大语言模型LLM和流程Process决定的;
- 在串行流程Sequential Process中,状态转移概率函数 P ( s ′ ∣ s , a ) P(s' | s, a) P(s′∣s,a)是确定的——因为流程Process会按照预定义的顺序分配任务;
- 在群体决策流程Hierarchical Process中,状态转移概率函数 P ( s ′ ∣ s , a ) P(s' | s, a) P(s′∣s,a)是随机的——因为Manager Agent会根据当前状态 s s s和用户输入的全局目标来决定下一个要执行的动作 a a a;
- 奖励函数 R ( s , a , s ′ ) R(s, a, s') R(s,a,s′):
- 这个函数本质上是**由任务的验收标准决定的;
- 如果在状态 s s s下执行动作 a a a后转移到状态 s ′ s' s′,并且满足任务的验收标准,那么获得正奖励(比如 R ( s , a , s ′ ) = 1 R(s, a, s') = 1 R(s,a,s′)=1);
- 如果在状态 s s s下执行动作 a a a后转移到状态 s ′ s' s′,并且不满足任务的验收标准,那么获得负奖励(比如 R ( s , a , s ′ ) = − 1 R(s, a, s') = -1 R(s,a,s′)=−1);
- 如果在状态 s s s下执行动作 a a a后转移到状态 s ′ s' s′,并且到达终止状态 s T s_T sT,那么获得最大正奖励(比如 R ( s , a , s ′ ) = 10 R(s, a, s') = 10 R(s,a,s′)=10);
- 折扣因子 γ γ γ:
- 通常设置为** γ = 0.9 γ = 0.9 γ=0.9**——表示未来奖励的折扣率为0.9,也就是说,我们更关注当前的奖励,而不是未来的奖励。
CrewAI的目标是找到一个最优策略 π ∗ π^* π∗——这个策略可以最大化预期的累积折扣奖励** E [ ∑ t = 0 T γ t R ( s t , a t , s t + 1 ) ] E[∑_{t=0}^T γ^t R(s_t, a_t, s_{t+1})] E[∑t=0TγtR(st,at,st+1)]**——其中 a t = π ∗ ( s t ) a_t = π^*(s_t) at=π∗(st)。
不过,在实际应用中,CrewAI并没有直接使用强化学习来找到最优策略 π ∗ π^* π∗——因为强化学习需要大量的训练数据和计算资源——相反,CrewAI使用了提示工程(Prompt Engineering)和明确的流程编排(Explicit Process Orchestration)来近似最优策略 π ∗ π^* π∗——这是一种更实用、更高效、更可控的方法。
6.4 CrewAI的两种核心流程:串行流程Sequential Process与群体决策流程Hierarchical Process
CrewAI目前支持两种核心流程:
- 串行流程Sequential Process——这是CrewAI的默认流程——任务会按照预定义的顺序执行,一个任务执行完成后,才会执行下一个任务,下一个任务可以使用上一个任务的输出作为上下文;
- 群体决策流程Hierarchical Process——这是CrewAI的高级流程——需要一个Manager Agent,Manager Agent会根据用户输入的全局目标来拆分任务、分配任务、检查任务的验收标准、协调Agent之间的协作——Agent可以并行执行任务,也可以串行执行任务。
接下来,我们会用mermaid流程图来详细讲解这两种核心流程的算法流程。
6.4.1 串行流程Sequential Process的算法流程图
首先,我们来看一下串行流程Sequential Process的算法流程图:
从这个算法流程图中,我们可以看到:
- 开始;
- 检查是否有未执行的任务;
- 如果有未执行的任务:
a. 获取下一个要执行的任务;
b. 获取分配给该任务的Agent;
c. 检查该任务是否有上下文;
d. 如果有上下文:将上下文添加到Agent的提示中;
e. 如果没有上下文:直接使用Agent的原始提示;
f. Agent执行任务:
i. 理解任务描述;
ii. 调用工具(如果需要);
iii.生成任务结果;
g. 检查任务结果是否满足验收标准;
h. 如果不满足验收标准:Agent重新执行任务;
i. 如果满足验收标准:将任务结果保存到上下文中;
j. 回到步骤2,检查是否有未执行的任务; - 如果没有未执行的任务:
a. 合并所有任务结果;
b. 结束。
6.4.2 群体决策流程Hierarchical Process的算法流程图
接下来,我们来看一下群体决策流程Hierarchical Process的算法流程图:
从这个算法流程图中,我们可以看到:
- 开始;
- Manager Agent理解全局目标;
- Manager Agent拆分任务;
- Manager Agent分配任务给其他Agent;
- 检查是否有未执行的任务;
- 如果有未执行的任务:
a. 其他Agent并行/串行执行任务(由Manager Agent决定);
b. 其他Agent将任务结果返回给Manager Agent;
c. Manager Agent检查任务结果是否满足验收标准;
d. 如果不满足验收标准:Manager Agent要求其他Agent重新执行任务;
e. 如果满足验收标准:Manager Agent将任务结果保存到上下文中;
f. 回到步骤5,检查是否有未执行的任务; - 如果没有未执行的任务:
a. Manager Agent合并所有任务结果;
b. Manager Agent检查最终结果是否满足全局目标的验收标准;
c. 如果不满足验收标准:Manager Agent重新拆分任务或重新分配任务;
d. 如果满足验收标准:结束。
7. 环境准备 (Environment Setup)
7.1 创建Python虚拟环境
首先,我们需要创建一个Python虚拟环境——这是必须的!不要污染你的全局Python环境!
在Windows系统上创建Python虚拟环境:
如果你使用的是Windows系统,你可以使用**Python自带的venv模块来创建虚拟环境:
- 打开命令提示符(CMD)或PowerShell;
- 切换到你想要创建项目的目录(比如
C:\Users\你的用户名\Documents\CrewAI-Content-Crew); - 运行以下命令来创建虚拟环境:
python -m venv .venv
- 运行以下命令来激活虚拟环境:
- 如果你使用的是命令提示符(CMD):
.venv\Scripts\activate.bat
- 如果你使用的是**PowerShell**:
.venv\Scripts\Activate.ps1
- 注意:如果你在PowerShell中激活虚拟环境时遇到了“执行策略受限”的错误,你可以运行以下命令来修改执行策略:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
然后再次运行激活虚拟环境的命令。
在macOS或Linux系统上创建Python虚拟环境:
如果你使用的是macOS或Linux系统,你可以使用**Python自带的venv模块来创建虚拟环境:
- 打开终端(Terminal);
- 切换到你想要创建项目的目录(比如
~/Documents/CrewAI-Content-Crew); - 运行以下命令来创建虚拟环境:
python3 -m venv .venv
- 运行以下命令来激活虚拟环境:
source .venv/bin/activate
验证虚拟环境是否激活成功:
当你成功激活虚拟环境后,你会看到你的命令提示符或终端的前面会有一个**(.venv)**的前缀——这表示你的虚拟环境已经激活成功了。
7.2 安装CrewAI及其依赖库
接下来,我们需要安装CrewAI及其依赖库——我们会使用pip来安装这些库。
首先,我们需要创建一个requirements.txt文件——这个文件会列出我们需要安装的所有库及其版本:
# requirements.txt
crewai==0.51.1
crewai-tools==0.12.0
python-dotenv==1.0.1
langchain-openai==0.1.22
duckduckgo-search==6.2.11
wikipedia==1.4.0
然后,我们需要运行以下命令来安装这些库:
pip install -r requirements.txt
注意:如果你使用的是Windows系统,你可能需要运行以下命令来安装这些库:
pip install -r requirements.txt --user
如果你使用的是macOS或Linux系统,你可能需要运行以下命令来安装这些库:
pip3 install -r requirements.txt
7.3 配置大语言模型API Key
接下来,我们需要配置大语言模型API Key——我们会使用python-dotenv库来管理我们的API Key,这样我们就不会把API Key直接暴露在代码中了。
首先,我们需要创建一个.env文件——这个文件会存储我们的API Key和其他环境变量:
# .env
# 注意:请把下面的示例值替换成你自己的真实值!
# 另外,请不要把这个文件提交到Git仓库中!
# 你可以在项目根目录下创建一个.gitignore文件,把.env文件添加到.gitignore文件中!
# OpenAI API Key(最推荐)
OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 通义千问Qwen API Key(国内模型,兼容OpenAI API)
# 如果使用通义千问Qwen,请取消下面这两行的注释,并且注释掉上面的OPENAI_API_KEY!
# OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# OPENAI_API_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
# Ollama本地模型API Key(完全免费!)
# 如果使用Ollama本地模型,请取消下面这几行的注释,并且注释掉上面的OPENAI_API_KEY!
# OPENAI_API_KEY="ollama"
# OPENAI_API_BASE_URL="http://localhost:11434/v1"
注意:
- 请把上面的示例值替换成你自己的真实值!
- 请不要把这个
.env文件提交到Git仓库中!你可以在项目根目录下创建一个.gitignore文件,把.env文件添加到.gitignore文件中! - 如果你使用的是国内的模型API Key(比如通义千问Qwen、智谱清言GLM、月之暗面Kimi),你只需要把
OPENAI_API_KEY和OPENAI_API_BASE_URL替换成你自己的真实值即可——因为这些模型的API调用方式和OpenAI的API完全兼容! - 如果你使用的是Ollama本地模型,你需要先安装Ollama,然后在本地启动Ollama服务,然后下载你想要使用的模型(比如
llama3.1:8b),然后取消.env文件中Ollama相关的注释,并且注释掉上面的OPENAI_API_KEY!
接下来,我们来详细讲解如何配置OpenAI API Key、国内模型API Key(通义千问Qwen为例)、Ollama本地模型API Key。
7.3.1 配置OpenAI API Key
首先,我们来详细讲解如何配置OpenAI API Key:
- 访问OpenAI的官方网站:https://platform.openai.com/;
- 注册一个OpenAI账号(如果你还没有的话);
- 登录你的OpenAI账号;
- 点击右上角的**“API Keys”**按钮;
- 点击**“Create new secret key”**按钮;
- 给你的API Key起一个名字(比如“CrewAI-Content-Crew”);
- 点击**“Create secret key”**按钮;
- 复制你的API Key——注意:你只能看到你的API Key一次!请立即复制你的API Key,并且保存到一个安全的地方!
- 把你的API Key粘贴到
.env文件中的OPENAI_API_KEY变量中。
注意:
- OpenAI的API Key是收费的——不过,OpenAI会给新用户提供5美元的免费额度——这个免费额度足够你测试我们的内容创作虚拟团队很多次了!
- 如果你没有OpenAI的API Key,或者你的免费额度用完了,你可以使用国内的模型API Key(比如通义千问Qwen、智谱清言GLM、月之暗面Kimi)——这些模型的API调用成本比OpenAI的API调用成本便宜很多!
- 如果你不想花钱,你可以使用Ollama本地模型——完全免费!不过,本地模型的速度会比较慢,对电脑配置要求也比较高!
7.3.2 配置国内模型API Key(通义千问Qwen为例)
接下来,我们来详细讲解如何配置国内模型API Key(通义千问Qwen为例):
- 访问阿里云的官方网站:[https://www.aliyun.com/](https://www.ali
更多推荐


所有评论(0)