CrewAI :用于编排角色扮演、自主人工智能代理的尖端框架。通过促进协作智能,CrewAI 使代理能够无缝协作,处理复杂的任务。
主页 |文档 |与文档聊天 |示例 |话语
为什么选择 CrewAI?
入门
主要特点
示例
快速教程
撰写职位描述
旅行计划
库存分析
将您的团队与模型联系起来
CrewAI 的比较
贡献
遥测
执照
人工智能协作的力量实在是太多了。 CrewAI 旨在使人工智能代理能够承担角色、分享目标并在一个有凝聚力的单元中运作——就像一个运转良好的团队。无论您是要构建智能助理平台、自动化客户服务整体还是多代理研究团队,CrewAI 都可以为复杂的多代理交互提供支柱。
要开始使用 CrewAI,请按照以下简单步骤操作:
确保您的系统上安装了 Python >=3.10 <=3.13。 CrewAI 使用 UV 进行依赖管理和包处理,提供无缝的设置和执行体验。
首先,安装CrewAI:
pip 安装crewai
如果您想要安装“crewai”软件包及其可选功能(包括用于代理的其他工具),您可以使用以下命令来完成此操作:
pip install 'crewai[工具]'
上面的命令安装基本包,并添加需要更多依赖项才能运行的额外组件。
要创建新的 CrewAI 项目,请运行以下 CLI(命令行界面)命令:
rewai 创建船员 <project_name>
此命令创建一个具有以下结构的新项目文件夹:
my_project/ ├── .gitignore ├── pyproject.toml ├── README.md ├── .env └── src/ └── my_project/ ├── __init__.py ├── main.py ├── crew.py ├── tools/ │ ├── custom_tool.py │ └── __init__.py └── config/ ├── agents.yaml └── tasks.yaml
现在,您可以通过编辑src/my_project
文件夹中的文件来开始开发您的团队。 main.py
文件是项目的入口点, crew.py
文件是您定义船员的位置, agents.yaml
文件是您定义代理的位置, tasks.yaml
文件是您定义任务的位置。
修改src/my_project/config/agents.yaml
以定义您的代理。
修改src/my_project/config/tasks.yaml
以定义您的任务。
修改src/my_project/crew.py
以添加您自己的逻辑、工具和特定参数。
修改src/my_project/main.py
为您的代理和任务添加自定义输入。
将环境变量添加到.env
文件中。
启动你的船员:
rewai 创建船员最新的人工智能发展
根据需要修改文件以适合您的用例:
代理.yaml
# src/my_project/config/agents.yamlresearcher: 角色:> {topic} 高级数据研究员目标:> 发现 {topic} 背景故事中的前沿发展:> 您是一位经验丰富的研究人员,有能力发现领域的最新发展{话题}。因您能够找到最相关的信息并以清晰简洁的方式呈现而闻名。 reporting_analyst: 角色:> {topic} 报告分析师目标: > 根据 {topic} 数据分析和研究结果创建详细报告 背景故事: > 您是一位一丝不苟的分析师,对细节有着敏锐的洞察力。您因能够将复杂的数据转化为清晰简洁的报告而闻名,使其他人能够轻松理解您提供的信息并根据您提供的信息采取行动。
任务.yaml
# src/my_project/config/tasks.yamlresearch_task: 描述:> 对 {topic} 进行彻底的研究 确保您找到任何有趣且相关的信息,因为当前年份是 2024 年。预期输出:> 包含最多 10 个要点的列表有关 {topic} 代理的相关信息:researcherreporting_task:描述:> 查看您获得的上下文并将每个主题展开为报告的完整部分。 确保报告详细并包含所有相关信息。 预期输出:> 包含主要主题的完整报告,每个主题都有完整的信息部分。 格式化为没有“``”代理的降价:reporting_analyst 输出文件:report.md
船员.py
# src/my_project/crew.pyfrom craftai import Agent, Crew, Process, Taskfrom craftai.project import CrewBase, agent, craft, taskfrom craftai_tools import SerperDevTool@CrewBaseclass LatestAiDevelopmentCrew(): """LatestAiDevelopment船员"""@agentdef 研究人员(self ) -> Agent: return Agent( config=self.agents_config['researcher'],详细=真,工具=[SerperDevTool()] ) @agentdef reporting_analyst(self) -> Agent: return Agent( config=self.agents_config['reporting_analyst'], verbose=True ) @taskdef Research_task(self) -> 任务: return Task( config=self.tasks_config['research_task'], ) @taskdef reporting_task(self) -> 任务: return Task( config=self.tasks_config['reporting_task'], output_file='report.md' ) @crewdef船员(self) -> Crew: """创建LatestAiDevelopment船员"""return Crew(agents=self.agents, # 由@agent自动创建decoratortasks=self.tasks, # 由@task自动创建Decoratorprocess=Process.sequential, verbose=True, )
主要.py
#!/usr/bin/env python# src/my_project/main.pyimport sysfromlatest_ai_development.crew import LatestAiDevelopmentCrewdef run():""" 运行船员。 """inputs = {'topic': 'AI Agents'}LatestAiDevelopmentCrew ().crew().kickoff(输入=输入)
在运行您的工作人员之前,请确保您在.env
文件中将以下键设置为环境变量:
OpenAI API 密钥(或其他 LLM API 密钥): OPENAI_API_KEY=sk-...
Serper.dev API 密钥: SERPER_API_KEY=YOUR_KEY_HERE
锁定依赖项并使用 CLI 命令安装它们,但首先导航到您的项目目录:
cd my_project 船员安装(可选)
要运行您的工作人员,请在项目的根目录中执行以下命令:
克鲁瓦伊润
或者
python src/my_project/main.py
如果由于使用poetry导致错误,请运行以下命令更新您的crewai包:
船员更新
您应该在控制台中看到输出,并且应该在项目的根目录中创建带有完整最终报告的report.md
文件。
除了顺序流程之外,您还可以使用分层流程,该流程会自动将经理分配给定义的人员,以通过委派和结果验证来正确协调任务的规划和执行。请在此处查看有关流程的更多信息。
基于角色的代理设计:定制具有特定角色、目标和工具的代理。
代理间自主委派:代理可以自主委派任务并相互查询,提高解决问题的效率。
灵活的任务管理:使用可定制的工具定义任务并将其动态分配给代理。
流程驱动:目前仅支持sequential
任务执行和hierarchical
流程,但正在开发更复杂的流程,例如共识和自治。
将输出保存为文件:将各个任务的输出保存为文件,以便稍后使用。
将输出解析为 Pydantic 或 Json :将单个任务的输出解析为 Pydantic 模型或 Json(如果需要)。
使用开源模型:使用开放 AI 或开源模型运行您的团队,请参阅将 CrewAI 连接到 LLM 页面,了解有关配置代理与模型的连接的详细信息,甚至是本地运行的模型!
您可以在 CrewAI-examples 存储库中测试 AI 人员的不同现实生活示例:
登陆页面生成器
在执行过程中有人工输入
旅行计划
库存分析
查看此示例的代码或观看下面的视频:
查看此示例的代码或观看下面的视频:
查看此示例的代码或观看下面的视频:
CrewAI 支持通过各种连接选项使用各种 LLM。默认情况下,您的代理在查询模型时将使用 OpenAI API。但是,还有其他几种方法可以让您的代理连接到模型。例如,您可以通过 Ollama 工具将代理配置为使用本地模型。
请参阅将 CrewAI 连接到 LLM 页面,了解有关配置代理与模型的连接的详细信息。
CrewAI 的优势:CrewAI 的构建以生产为中心。它提供了 Autogen 对话代理的灵活性和 ChatDev 的结构化流程方法,但没有僵化。 CrewAI 的流程设计为动态且适应性强,可无缝融入开发和生产工作流程。
Autogen :虽然 Autogen 在创建能够协同工作的会话代理方面做得很好,但它缺乏固有的流程概念。在 Autogen 中,编排代理的交互需要额外的编程,随着任务规模的增长,这可能会变得复杂和繁琐。
ChatDev :ChatDev 将流程的概念引入了 AI 代理领域,但其实现相当僵化。 ChatDev 中的自定义是有限的,并且不适合生产环境,这可能会阻碍实际应用程序中的可扩展性和灵活性。
CrewAI 是开源的,我们欢迎贡献。如果您想做出贡献,请:
分叉存储库。
为您的功能创建一个新分支。
添加您的功能或改进。
发送拉取请求。
我们感谢您的意见!
紫外线锁 紫外同步
紫外线
预提交安装
uv 运行 pytest 。
紫外线照射
紫外线构建
pip 安装 dist/*.tar.gz
CrewAI 使用匿名遥测来收集使用数据,主要目的是通过将精力集中在最常用的功能、集成和工具上来帮助我们改进库。
重要的是要了解,除了提到的条件外,不会收集有关提示、任务描述、代理的背景故事或目标、工具的使用、API 调用、响应、代理处理的任何数据或秘密和环境变量的数据。 。启用share_crew
功能后,系统会收集详细数据,包括任务描述、代理的背景故事或目标以及其他特定属性,以在尊重用户隐私的同时提供更深入的见解。我们现在不提供禁用它的方法,但将来我们会提供。
收集的数据包括:
CrewAI 版本
这样我们就可以了解有多少用户正在使用最新版本
Python 版本
这样我们就可以决定更好地支持哪些版本
通用操作系统(例如CPU数量、macOS/Windows/Linux)
所以我们知道我们应该关注什么操作系统以及我们是否可以构建特定的操作系统相关功能
团队中的代理数量和任务
因此,我们确保使用类似的用例进行内部测试,并教育人们最佳实践
正在使用的船员流程
了解我们应该把精力集中在哪里
如果代理正在使用内存或允许委派
了解我们是否改进了功能或者甚至放弃了它们
如果任务是并行执行还是顺序执行
了解我们是否应该更多地关注并行执行
正在使用的语言模型
改进了对最常用语言的支持
特工在船员中的角色
了解高级用例,以便我们可以构建更好的工具、集成和示例
可用的工具名称
了解公开可用的工具中哪些工具使用得最多,以便我们改进它们
用户可以选择加入进一步遥测,通过将其 Crew 上的share_crew
属性设置为True
来共享完整的遥测数据。启用share_crew
会收集详细的人员和任务执行数据,包括goal
、 backstory
、 context
和任务output
。这样可以更深入地了解使用模式,同时尊重用户的共享选择。
CrewAI 在 MIT 许可证下发布。
答:CrewAI 是一个用于编排角色扮演、自主 AI 代理的尖端框架。它使代理能够无缝协作,通过协作智能处理复杂的任务。
答:您可以使用 pip 安装 CrewAI:
pip 安装crewai
对于其他工具,请使用:
pip install 'crewai[工具]'
答:是的,CrewAI 支持各种法学硕士,包括本地模型。您可以通过 Ollama 和 LM Studio 等工具将代理配置为使用本地模型。有关更多详细信息,请查看 LLM Connections 文档。
答:主要功能包括基于角色的代理设计、自主代理间委托、灵活的任务管理、流程驱动的执行、输出另存为文件以及与开源和专有模型的兼容性。
答:CrewAI 的设计考虑到了生产,提供类似于 Autogen 的对话代理和 ChatDev 等结构化流程的灵活性,但更适合实际应用。
答:是的,CrewAI 是开源的,欢迎社区做出贡献。
答:CrewAI 使用匿名遥测技术来收集使用数据以进行改进。不会收集任何敏感数据(如提示、任务描述或 API 调用)。用户可以通过在其 Crew 上设置share_crew=True
来选择共享更详细的数据。
答:您可以在 CrewAI-examples 存储库中找到各种现实生活中的示例,包括旅行计划、股票分析工具等。
答:欢迎大家踊跃投稿!您可以分叉存储库,为您的功能创建新分支,添加改进,然后发送拉取请求。有关更多详细信息,请查看自述文件中的贡献部分。