🤖 crewAI:用于协调角色扮演和自主AI代理的尖端框架。通过促进协作智能,CrewAI使代理能够无缝协作,解决复杂任务。
AI 协作的力量有太多可以提供的东西。
CrewAI 的设计旨在使 AI 代理能够承担角色、共享目标,并在一个紧密合作的单位中运作——就像一个运转良好的团队。无论您是在构建智能助手平台、自动化客户服务团队,还是多代理研究团队,CrewAI 都为复杂的多代理交互提供了基础。
要开始使用 CrewAI,请按照以下简单步骤操作:
pip install crewai
如果您想安装 'crewai' 包及其可选功能(包括用于代理的附加工具),可以使用以下命令:pip install 'crewai[tools]'。此命令安装基本包,并添加额外组件,这些组件需要更多的依赖项才能正常工作。
pip install 'crewai[tools]'
import os
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"
os.environ["SERPER_API_KEY"] = "Your Key" # serper.dev API key
# 您可以选择通过Ollama使用本地模型。例如,更多信息请参见 https://docs.crewai.com/how-to/LLM-Connections/。
# os.environ["OPENAI_API_BASE"] = 'http://localhost:11434/v1'
# os.environ["OPENAI_MODEL_NAME"] ='openhermes' # 根据可用模型进行调整
# os.environ["OPENAI_API_KEY"] ='sk-111111111111111111111111111111111111111111111111'
# 您可以传递一个可选的llm属性,指定您想要使用的模型。
# 它可以是通过Ollama / LM Studio的本地模型或
# 像OpenAI、Mistral、Antrophic等的远程模型(https://docs.crewai.com/how-to/LLM-Connections/)
#
# import os
# os.environ['OPENAI_MODEL_NAME'] = 'gpt-3.5-turbo'
#
# 或
#
# from langchain_openai import ChatOpenAI
search_tool = SerperDevTool()
# 定义您的代理及其角色和目标
researcher = Agent(
role='高级研究分析师',
goal='揭示AI和数据科学的前沿发展',
backstory="""您在一家领先的科技智库工作。
您的专长在于识别新兴趋势。
您擅长剖析复杂数据并提供可行的见解。""",
verbose=True,
allow_delegation=False,
# 您可以传递一个可选的llm属性,指定您想要使用的模型。
# llm=ChatOpenAI(model_name="gpt-3.5", temperature=0.7),
tools=[search_tool]
)
writer = Agent(
role='技术内容策略师',
goal='撰写引人入胜的科技进展内容',
backstory="""您是一位著名的内容策略师,以深刻且引人入胜的文章而闻名。
您将复杂概念转化为引人注目的叙述。""",
verbose=True,
allow_delegation=True
)
# 为您的代理创建任务
task1 = Task(
description="""对2024年AI的最新进展进行全面分析。
确定关键趋势、突破性技术和潜在行业影响。""",
expected_output="完整的分析报告,以要点形式呈现",
agent=researcher
)
task2 = Task(
description="""根据提供的见解,撰写一篇引人入胜的博客
文章,突出最重要的AI进展。
您的文章应信息丰富且易于理解,适合科技爱好者。
让它听起来酷一些,避免复杂的词汇,以免听起来像AI写的。""",
expected_output="至少4段的完整博客文章",
agent=writer
)
# 使用顺序过程实例化您的团队
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=2, # 您可以将其设置为1或2以选择不同的日志级别
process = Process.sequential
)
# 让您的团队开始工作!
result = crew.kickoff()
print("######################")
print(result)
除了顺序过程外,您还可以使用层级过程,该过程会自动为定义的团队分配一位经理,以便通过委派和结果验证来妥善协调任务的规划和执行。有关流程的更多信息,请参见这里。
- 基于角色的代理设计:为代理定制特定角色、目标和工具。
- 自主的代理间委托:代理可以自主委托任务并在彼此之间询问,从而提高问题解决效率。
- 灵活的任务管理:定义具有可定制工具的任务,并动态分配给代理。
- 驱动流程:目前仅支持
sequential
任务执行和hierarchical
流程,但正在开发更复杂的流程,如共识和自主流程。 - 将输出保存为文件:将单个任务的输出保存为文件,以便后续使用。
- 将输出解析为Pydantic或Json:如果需要,可以将单个任务的输出解析为Pydantic模型或Json。
- 与开源模型兼容:使用Open AI或开源模型运行您的团队,详细信息请参阅将crewAI连接到LLMs页面,以配置代理与模型的连接,包括本地运行的模型!
您可以在 crewAI-examples repo 中测试不同的 AI 团队的真实案例:
查看此示例的代码或观看下面的视频:
查看此示例的代码或观看下面的视频:
查看此示例的代码 或观看下面的视频:
crewAI 支持通过多种连接选项使用各种 LLM。默认情况下,您的代理在查询模型时将使用 OpenAI API。然而,还有几种其他方法可以让您的代理连接到模型。例如,您可以通过 Ollama 工具配置您的代理使用本地模型。
有关配置您代理与模型连接的详细信息,请参阅 将 crewAI 连接到 LLM 页面。
-
Autogen: 虽然 Autogen 在创建能够协同工作的对话代理方面表现良好,但它缺乏内在的过程概念。在 Autogen 中,协调代理之间的互动需要额外的编程,随着任务规模的增长,这可能变得复杂且繁琐。
-
ChatDev: ChatDev 将过程的概念引入了 AI 代理的领域,但其实现相当僵化。ChatDev 的定制选项有限,且不适合生产环境,这可能会妨碍在实际应用中的可扩展性和灵活性。
CrewAI 的优势: CrewAI 的构建考虑到了生产。它结合了 Autogen 对话代理的灵活性和 ChatDev 结构化过程的方法,但没有僵化的限制。CrewAI 的过程设计为动态和可适应的,能够无缝融入开发和生产工作流程中。
CrewAI 是开源的,我们欢迎贡献。如果您想要贡献,请:
- Fork 该仓库。
- 为您的功能创建一个新分支。
- 添加您的功能或改进。
- 发送一个拉取请求。
- 我们感谢您的意见!
poetry lock
poetry install
poetry shell
pre-commit install
poetry run pytest
poetry run mypy
poetry build
pip install dist/*.tar.gz
CrewAI 使用匿名远程监控收集使用数据,主要目的是帮助我们通过关注最常用的功能、集成和工具来改进库。
理解 不收集任何数据 关于提示、任务描述、代理的背景故事或目标、工具的使用、API 调用、响应、代理处理的任何数据或秘密和环境变量,除了提到的条件,这是至关重要的。当 share_crew
功能启用时,将收集详细数据,包括任务描述、代理的背景故事或目标以及其他特定属性,以提供更深入的见解,同时尊重用户隐私。我们现在不提供禁用此功能的方法,但未来会提供。
收集的数据包括:
- crewAI 版本
- 以便我们了解有多少用户在使用最新版本
- Python 版本
- 以便我们决定支持哪些版本
- 一般操作系统 (例如 CPU 数量,macOS/Windows/Linux)
- 以便我们知道应该关注哪个操作系统,以及是否可以构建特定操作系统相关的功能
- 一个团队中的代理和任务数量
- 以确保我们在内部进行类似用例的测试,并教育人们最佳实践
- 正在使用的团队流程
- 理解我们应该集中精力的地方
- 代理是否使用内存或允许委托
- 理解我们是否改进了功能,或者甚至可能放弃它们
- 任务是并行执行还是顺序执行
- 理解我们是否应该更加关注并行执行
- 使用的语言模型
- 提高对最常用语言的支持
- 团队中代理的角色
- 理解高层次的用例,以便我们能够构建更好的工具、集成和示例
- 可用工具名称
- 理解在公开可用的工具中,哪些工具被使用得最多,以便我们可以改进它们
用户可以选择进一步的远程监控,通过将其团队的 share_crew
属性设置为 True
来共享完整的远程监控数据。启用 share_crew
会导致收集详细的团队和任务执行数据,包括任务的 goal
、backstory
、context
和 output
。这使得在尊重用户选择共享的同时,能够更深入地洞察使用模式。
CrewAI 根据 MIT 许可证发布。