crewai 快速灵活的多代理自动化框架-开源码库社区-开源分享-6协议-村兔网

crewai 快速灵活的多代理自动化框架

快速灵活的多代理自动化框架

CrewAI 是一个精益、闪电般快速的 Python 框架,完全从头开始构建,完全独立于 LangChain 或其他代理框架。 它为开发人员提供了高级简单性和精确的低级控制,非常适合创建适合任何场景的自主 AI 代理。

  • CrewAI Crews:针对自主性和协作智能进行优化。
  • CrewAI 流程:启用精细的、事件驱动的控制,单个 LLM 调用精确的任务编排并原生支持 Crews

CrewAI 拥有超过 100,000 名开发人员通过我们在 learn.crewai.com 的社区课程获得认证,正在迅速成为 企业级 AI 自动化的标准。

CrewAI AMP 套件

CrewAI AMP Suite 是一个全面的捆绑包,专为需要安全、可扩展且易于管理的代理驱动自动化的组织量身定制。

您可以免费试用套件的一部分:机组人员控制平面

机组人员控制平面主要特点:

  • 跟踪和可观察性:实时监控和跟踪您的 AI 代理和工作流程,包括指标、日志和跟踪。
  • 统一控制平面:用于管理、监控和扩展 AI 代理和工作流程的集中平台。
  • 无缝集成:轻松连接现有企业系统、数据源和云基础设施。
  • 高级安全性:内置强大的安全性和合规性措施,确保安全部署和管理。
  • 作的见解:实时分析和报告以优化绩效和决策。
  • 24/7支持:专门的企业支持,确保不间断运行和快速解决问题。
  • 本地和云部署选项:根据您的安全性和合规性要求,在本地或云中部署 CrewAI AMP。

CrewAI AMP 专为寻求强大、可靠的解决方案的企业而设计,以将复杂的业务流程转变为高效、 智能自动化。

目录

  • 为什么选择 CrewAI?
  • 开始
  • 主要特点
  • 了解流程和工作人员
  • CrewAI 与 LangGraph
  • 例子
    • 快速教程
    • 撰写职位描述
    • 旅行计划
    • 股票分析
    • 同时使用工作人员和流程
  • 将您的团队连接到模型
  • CrewAI 如何比较
  • 常见问题解答(FAQ)
  • 贡献
  • 遥测
  • 许可证

为什么选择 CrewAI?

CrewAI Logo

CrewAI 释放了多代理自动化的真正潜力,通过 AI 代理组或事件流提供一流的速度、灵活性和控制组合:

  • 独立框架:从头开始构建,独立于 LangChain 或任何其他代理框架。
  • 高性能:针对速度和最少的资源使用进行了优化,从而实现更快的执行。
  • 灵活的低级定制:完全自由地在高级别和低级别进行定制 – 从整体工作流程和系统架构到精细的代理行为、内部提示和执行逻辑。
  • 适合每个用例:事实证明,无论是简单任务还是高度复杂的真实企业级场景,都有效。
  • 强大的社区:由超过 100,000 名认证开发人员组成的快速增长的社区提供支持,提供全面的支持和资源。

CrewAI 使开发人员和企业能够自信地构建智能自动化,弥合简单性、灵活性和性能之间的差距。

开始

按照本教程设置并运行您的第一个 CrewAI 代理。

CrewAI 入门教程

 

学习资源

通过我们的综合课程学习 CrewAI:

  • 使用 CrewAI 的多 AI 代理系统 – 掌握多代理系统的基础知识
  • 实用的多 AI 代理和高级用例 – 深入了解高级实现

了解流程和工作人员

CrewAI 提供了两种强大的互补方法,它们无缝协作以构建复杂的 AI 应用程序:

  1. Crews:具有真正自主权和代理权的 AI 代理团队,通过基于角色的协作共同完成复杂的任务。机组人员支持:

    • 代理之间自然、自主的决策
    • 动态任务委派和协作
    • 具有明确目标和专业知识的专业角色
    • 灵活的问题解决方法
  2. 流程:生产就绪、事件驱动的工作流程,可对复杂的自动化进行精确控制。流程提供:

    • 对真实场景的执行路径进行细粒度控制
    • 任务之间安全、一致的状态管理
    • AI 代理与生产 Python 代码的干净集成
    • 复杂业务逻辑的条件分支

CrewAI 的真正力量在结合 Crews 和 Flows 时显现出来。这种协同作用使您能够:

  • 构建复杂的生产级应用程序
  • 平衡自主性与精确控制
  • 处理复杂的真实场景
  • 维护干净、可维护的代码结构

安装入门

要开始使用 CrewAI,请按照以下简单步骤作:

1. 安装

确保您的系统上安装了 Python >=3.10 <3.14。CrewAI 使用 UV 进行依赖管理和包处理,提供无缝的设置和执行体验。

首先,安装 CrewAI:

pip install crewai

如果您想安装 ‘crewai’ 包及其可选功能(包括代理的附加工具),您可以使用以下命令来实现:

pip install 'crewai[tools]'

上面的命令安装基本包,并添加额外的组件,这些组件需要更多依赖项才能运行。

对依赖关系进行故障排除

如果您在安装或使用过程中遇到问题,以下是一些常见的解决方案:

常见问题

  1. ModuleNotFoundError:没有名为“tiktoken”的模块

    • 显式安装 tiktoken:pip install 'crewai[embeddings]'
    • 如果使用 embedchain 或其他工具:pip install 'crewai[tools]'
  2. tiktoken 的构建轮失败

    • 确保已安装 Rust 编译器(请参阅上面的安装步骤)
    • 对于 Windows:验证是否安装了 Visual C++ 生成工具
    • 尝试升级 pip:pip install --upgrade pip
    • 如果问题仍然存在,请使用预构建的轮子:pip install tiktoken --prefer-binary

2. 使用 YAML 配置设置团队

要创建新的 CrewAI 项目,请运行以下 CLI(命令行界面)命令:

crewai create crew <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_projectmain.pycrew.pyagents.yamltasks.yaml

要自定义您的项目,您可以:

  • 修改以定义您的代理。src/my_project/config/agents.yaml
  • 修改以定义您的任务。src/my_project/config/tasks.yaml
  • 修改以添加您自己的逻辑、工具和特定参数。src/my_project/crew.py
  • 修改以为您的代理和任务添加自定义输入。src/my_project/main.py
  • 将环境变量添加到文件中。.env

具有顺序流程的简单船员示例:

实例化您的团队:

crewai create crew latest-ai-development

根据需要修改文件以适应您的用例:

agents.yaml

# src/my_project/config/agents.yaml
researcher:
  role: >
    {topic} Senior Data Researcher
  goal: >
    Uncover cutting-edge developments in {topic}
  backstory: >
    You're a seasoned researcher with a knack for uncovering the latest
    developments in {topic}. Known for your ability to find the most relevant
    information and present it in a clear and concise manner.

reporting_analyst:
  role: >
    {topic} Reporting Analyst
  goal: >
    Create detailed reports based on {topic} data analysis and research findings
  backstory: >
    You're a meticulous analyst with a keen eye for detail. You're known for
    your ability to turn complex data into clear and concise reports, making
    it easy for others to understand and act on the information you provide.

任务.yaml

# src/my_project/config/tasks.yaml
research_task:
  description: >
    Conduct a thorough research about {topic}
    Make sure you find any interesting and relevant information given
    the current year is 2025.
  expected_output: >
    A list with 10 bullet points of the most relevant information about {topic}
  agent: researcher

reporting_task:
  description: >
    Review the context you got and expand each topic into a full section for a report.
    Make sure the report is detailed and contains any and all relevant information.
  expected_output: >
    A fully fledge reports with the mains topics, each with a full section of information.
    Formatted as markdown without '```'
  agent: reporting_analyst
  output_file: report.md

crew.py

# src/my_project/crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai_tools import SerperDevTool
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List

@CrewBase
class LatestAiDevelopmentCrew():
	"""LatestAiDevelopment crew"""
	agents: List[BaseAgent]
	tasks: List[Task]

	@agent
	def researcher(self) -> Agent:
		return Agent(
			config=self.agents_config['researcher'],
			verbose=True,
			tools=[SerperDevTool()]
		)

	@agent
	def reporting_analyst(self) -> Agent:
		return Agent(
			config=self.agents_config['reporting_analyst'],
			verbose=True
		)

	@task
	def research_task(self) -> Task:
		return Task(
			config=self.tasks_config['research_task'],
		)

	@task
	def reporting_task(self) -> Task:
		return Task(
			config=self.tasks_config['reporting_task'],
			output_file='report.md'
		)

	@crew
	def crew(self) -> Crew:
		"""Creates the LatestAiDevelopment crew"""
		return Crew(
			agents=self.agents, # Automatically created by the @agent decorator
			tasks=self.tasks, # Automatically created by the @task decorator
			process=Process.sequential,
			verbose=True,
		)

main.py

#!/usr/bin/env python
# src/my_project/main.py
import sys
from latest_ai_development.crew import LatestAiDevelopmentCrew

def run():
    """
    Run the crew.
    """
    inputs = {
        'topic': 'AI Agents'
    }
    LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)

3. 管理你的团队

在运行团队之前,请确保在文件中将以下键设置为环境变量:.env

  • OpenAI API 密钥(或其他 LLM API 密钥):OPENAI_API_KEY=sk-...
  • Serper.dev API 密钥:SERPER_API_KEY=YOUR_KEY_HERE

锁定依赖项并使用 CLI 命令安装它们,但首先,导航到您的项目目录:

cd my_project
crewai install (Optional)

要运行您的团队,请在项目的根目录中执行以下命令:

crewai run

python src/my_project/main.py

如果由于使用诗歌而发生错误,请运行以下命令来更新您的 crewai 包:

crewai update

您应该在控制台中看到输出,并且应该在项目的根目录中创建该文件,其中包含完整的最终报告。report.md

除了顺序流程之外,您还可以使用分层流程,该流程会自动将经理分配给定义的团队,通过委派和验证结果来正确协调任务的计划和执行。在此处查看有关流程的更多信息。

主要特点

CrewAI 作为一个精益、独立、高性能的多 AI 代理框架脱颖而出,提供简单、灵活和精确的控制,不受其他代理框架的复杂性和限制。

  • 独立和精益:完全独立于 LangChain 等其他框架,提供更快的执行速度和更轻的资源需求。
  • 灵活精确:通过直观的船员或精确的流程轻松编排自主代理,实现满足您需求的完美平衡。
  • 无缝集成:轻松结合 Crews(自主性)和 Flows(精确性)来创建复杂的、真实世界的自动化。
  • 深度定制:定制各个方面——从高级工作流程到低级内部提示和座席行为。
  • 可靠的性能:在简单任务和复杂的企业级自动化中获得一致的结果。
  • 勃发展的社区:以强大的文档和超过 100,000 名认证开发人员为后盾,提供卓越的支持和指导。

选择 CrewAI 轻松构建功能强大、适应性强且可用于生产的 AI 自动化。

例子

您可以在 CrewAI-examples 存储库中测试 AI 船员的不同现实生活示例:

  • 登陆页面生成器
  • 在执行过程中进行人工输入
  • 旅行计划
  • 股票分析

快速教程

CrewAI 教程

撰写职位描述

查看此示例的代码或观看下面的视频:

职位发布

旅行计划

查看此示例的代码或观看下面的视频:

旅行计划

股票分析

查看此示例的代码或观看下面的视频:

股票分析

同时使用工作人员和流程

当将 Crews 与 Flows 相结合以创建复杂的自动化管道时,CrewAI 的强大功能真正大放异彩。 CrewAI 流支持逻辑运算符,例如 和 组合多个条件。这可以与 、 或装饰器一起使用,以创建复杂的触发条件。or_and_@start@listen@router

  • or_:满足任何指定条件时触发。
  • and_满足所有指定条件时触发。

以下是在流程中编排多个 Crew 的方法:

from crewai.flow.flow import Flow, listen, start, router, or_
from crewai import Crew, Agent, Task, Process
from pydantic import BaseModel

# Define structured state for precise control
class MarketState(BaseModel):
    sentiment: str = "neutral"
    confidence: float = 0.0
    recommendations: list = []

class AdvancedAnalysisFlow(Flow[MarketState]):
    @start()
    def fetch_market_data(self):
        # Demonstrate low-level control with structured state
        self.state.sentiment = "analyzing"
        return {"sector": "tech", "timeframe": "1W"}  # These parameters match the task description template

    @listen(fetch_market_data)
    def analyze_with_crew(self, market_data):
        # Show crew agency through specialized roles
        analyst = Agent(
            role="Senior Market Analyst",
            goal="Conduct deep market analysis with expert insight",
            backstory="You're a veteran analyst known for identifying subtle market patterns"
        )
        researcher = Agent(
            role="Data Researcher",
            goal="Gather and validate supporting market data",
            backstory="You excel at finding and correlating multiple data sources"
        )

        analysis_task = Task(
            description="Analyze {sector} sector data for the past {timeframe}",
            expected_output="Detailed market analysis with confidence score",
            agent=analyst
        )
        research_task = Task(
            description="Find supporting data to validate the analysis",
            expected_output="Corroborating evidence and potential contradictions",
            agent=researcher
        )

        # Demonstrate crew autonomy
        analysis_crew = Crew(
            agents=[analyst, researcher],
            tasks=[analysis_task, research_task],
            process=Process.sequential,
            verbose=True
        )
        return analysis_crew.kickoff(inputs=market_data)  # Pass market_data as named inputs

    @router(analyze_with_crew)
    def determine_next_steps(self):
        # Show flow control with conditional routing
        if self.state.confidence > 0.8:
            return "high_confidence"
        elif self.state.confidence > 0.5:
            return "medium_confidence"
        return "low_confidence"

    @listen("high_confidence")
    def execute_strategy(self):
        # Demonstrate complex decision making
        strategy_crew = Crew(
            agents=[
                Agent(role="Strategy Expert",
                      goal="Develop optimal market strategy")
            ],
            tasks=[
                Task(description="Create detailed strategy based on analysis",
                     expected_output="Step-by-step action plan")
            ]
        )
        return strategy_crew.kickoff()

    @listen(or_("medium_confidence", "low_confidence"))
    def request_additional_analysis(self):
        self.state.recommendations.append("Gather more data")
        return "Additional analysis required"

此示例演示如何:

  1. 使用 Python 代码进行基本数据作
  2. 创建和执行 Crew 作为工作流中的步骤
  3. 使用 Flow 装饰器管理作顺序
  4. 根据 Crew 结果实现条件分支

将您的团队连接到模型

CrewAI 支持通过多种连接选项使用各种 LLM。默认情况下,您的代理在查询模型时将使用 OpenAI API。但是,还有其他几种方法可以让您的代理连接到模型。例如,您可以通过 Ollama 工具将代理配置为使用本地模型。

有关配置代理与模型的连接的详细信息,请参阅将 CrewAI 连接到 LLM 页面。

CrewAI 如何比较

CrewAI的优势:CrewAI通过其独特的Crews和Flows架构,将自主代理智能与精确的工作流程控制相结合。该框架在高级编排和低级定制方面表现出色,支持具有精细控制的复杂生产级系统。

  • LangGraph:虽然 LangGraph 为构建代理工作流程提供了基础,但其方法需要大量的样板代码和复杂的状态管理模式。该框架与 LangChain 的紧密耦合可能会限制在实现自定义代理行为或与外部系统集成时的灵活性。

附注:CrewAI 与 LangGraph 相比表现出显着的性能优势,在某些情况下执行速度提高了 5.76 倍,例如此 QA 任务示例(见比较),同时在某些编码任务中实现更高的评估分数和更快的完成时间,如本例(详细分析)。

  • 自动生成:虽然 Autogen 擅长创建能够协同工作的对话代理,但它缺乏固有的流程概念。在 Autogen 中,编排代理的交互需要额外的编程,随着任务规模的增长,这可能会变得复杂和繁琐。
  • ChatDev:ChatDev 将流程的概念引入了 AI 代理领域,但其实现相当僵化。ChatDev 中的自定义是有限的,并且不适合生产环境,这可能会阻碍实际应用程序的可扩展性和灵活性。

贡献

CrewAI 是开源的,我们欢迎贡献。如果您想做出贡献,请:

  • 分叉存储库。
  • 为功能创建新分支。
  • 添加您的功能或改进。
  • 发送拉取请求。
  • 感谢您的意见!

安装依赖项

uv lock
uv sync

虚拟环境

uv venv

预提交钩子

pre-commit install

运行测试

uv run pytest .

运行静态类型检查

uvx mypy src

包装

uv build

本地安装

pip install dist/*.tar.gz

遥测

CrewAI 使用匿名遥测来收集使用数据,主要目的是通过将精力集中在最常用的功能、集成和工具上来帮助我们改进库。

重要的是要了解,除了上述条件外,不会收集有关提示、任务描述、代理的背景故事或目标、工具使用、API 调用、响应、代理处理的任何数据或机密和环境变量的数据。启用该功能后,将收集详细数据,包括任务描述、代理的背景故事或目标以及其他特定属性,以提供更深入的见解,同时尊重用户隐私。用户可以通过将环境变量 OTEL_SDK_DISABLED 设置为 true 来禁用遥测。share_crew

收集的数据包括:

  • CrewAI 版本
    • 所以我们可以了解有多少用户在使用最新版本
  • Python 版本
    • 因此,我们可以决定更好地支持哪些版本
  • 一般作系统(例如 CPU 数量、macOS/Windows/Linux)
    • 因此,我们知道我们应该关注什么作系统,以及我们是否可以构建特定的作系统相关功能
  • 班组中的代理和任务数量
    • 因此,我们确保在内部测试类似的用例,并向人们介绍最佳实践
  • 正在使用的船员流程
    • 了解我们应该将精力集中在哪里
  • 如果代理正在使用内存或允许委派
    • 了解我们是否改进了这些功能,甚至可能删除它们
  • 如果任务正在并行或顺序执行
    • 了解我们是否应该更多地关注并行执行
  • 正在使用的语言模型
    • 改进了对最常用语言的支持
  • 代理在船员中的角色
    • 了解高级用例,以便我们可以构建更好的工具、集成和示例
  • 可用的工具名称
    • 了解公开可用的工具中,哪些工具使用最多,以便我们改进它们

用户可以选择加入进一步遥测,通过在其 Crews 上将属性设置为来共享完整的遥测数据。启用结果是收集详细的班组和任务执行数据,包括 、 和 任务。这样可以更深入地了解使用模式,同时尊重用户的共享选择。share_crewTrueshare_crewgoalbackstorycontextoutput

许可证

CrewAI 根据 MIT 许可证发布。

常见问题解答(FAQ)

常规

  • CrewAI 到底是什么?
  • 如何安装 CrewAI?
  • CrewAI 是否依赖 LangChain?
  • CrewAI 是开源的吗?
  • CrewAI 会收集用户的数据吗?

特性和功能

  • CrewAI 可以处理复杂的用例吗?
  • 我可以将 CrewAI 与本地 AI 模型一起使用吗?
  • Crews 与 Flows 有何不同?
  • CrewAI 比 LangChain 好多少?
  • CrewAI 是否支持微调或训练自定义模型?

资源和社区

  • 在哪里可以找到真实世界的 CrewAI 示例?
  • 我如何为 CrewAI 做出贡献?

企业功能

  • CrewAI AMP 提供哪些附加功能?
  • CrewAI AMP 是否可用于云和本地部署?
  • 我可以免费试用 CrewAI AMP 吗?

问:CrewAI 到底是什么?

答:CrewAI 是一个独立、精益且快速的 Python 框架,专为编排自主 AI 代理而构建。与 LangChain 等框架不同,CrewAI 不依赖外部依赖项,使其更精简、更快、更简单。

问:如何安装 CrewAI?

A:使用 pip 安装 CrewAI:

pip install crewai

如需其他工具,请使用:

pip install 'crewai[tools]'

问:CrewAI 是否依赖 LangChain?

答:没有。CrewAI 完全是从头开始构建的,不依赖于 LangChain 或其他代理框架。这确保了精益、快速和灵活的体验。

问:CrewAI 可以处理复杂的用例吗?

答:是的。CrewAI 擅长简单和高度复杂的现实场景,提供从内部提示到复杂的工作流程编排的高级和低级别深度定制选项。

问:我可以将 CrewAI 与本地 AI 模型一起使用吗?

答:当然!CrewAI 支持各种语言模型,包括本地语言模型。Ollama 和 LM Studio 等工具可实现无缝集成。查看 LLM 连接文档了解更多详情。

问:Crews 与 Flows 有何不同?

答:工作人员提供自主代理协作,非常适合需要灵活决策和动态交互的任务。流程提供精确的、事件驱动的控制,非常适合管理详细的执行路径和安全状态管理。您可以无缝地将两者结合起来,以获得最大效率。

问:CrewAI 比 LangChain 更好吗?

答:CrewAI 提供更简单、更直观的 API、更快的执行速度、更可靠和一致的结果、强大的文档和活跃的社区——解决与 LangChain 相关的常见批评和限制。

问:CrewAI 是开源的吗?

答:是的,CrewAI 是开源的,并积极鼓励社区贡献和协作。

问:CrewAI 是否收集用户的数据?

答:CrewAI 收集匿名遥测数据严格用于改进目的。除非用户明确启用,否则绝不会收集提示、任务或 API 响应等敏感数据。

问:在哪里可以找到真实世界的 CrewAI 示例?

答:查看 CrewAI 示例存储库中的实际示例,涵盖旅行计划、库存分析和职位发布等用例。

问:我如何为 CrewAI 做出贡献?

答:热忱欢迎投稿!分叉存储库,创建分支,实现更改,并提交拉取请求。有关详细指南,请参阅自述文件的贡献部分。

问:CrewAI AMP 提供哪些附加功能?

答:CrewAI AMP 提供高级功能,例如统一控制平面、实时可观察性、安全集成、高级安全性、可作的见解和专门的 24/7 企业支持。

问:CrewAI AMP 是否可用于云和本地部署?

答:是的,CrewAI AMP 支持基于云和本地部署的选项,使企业能够满足其特定的安全性和合规性要求。

问:我可以免费试用 CrewAI AMP 吗?

答:是的,您可以通过免费访问 Crew Control Plane 来探索 CrewAI AMP 套件的一部分。

问:CrewAI 是否支持微调或训练自定义模型?

答:是的,CrewAI 可以与定制训练或微调的模型集成,使您能够通过特定领域的知识和准确性来增强您的代理。

问:CrewAI 代理可以与外部工具和 API 交互吗?

答:当然!CrewAI 代理可以轻松地与外部工具、API 和数据库集成,使他们能够利用现实世界的数据和资源。

问:CrewAI 适合生产环境吗?

答:是的,CrewAI 是按照生产级标准明确设计的,确保企业部署的可靠性、稳定性和可扩展性。

问:CrewAI 的可扩展性如何?

答:CrewAI 具有高度可扩展性,支持简单的自动化和同时涉及大量代理和复杂任务的大规模企业工作流程。

问:CrewAI 是否提供调试和监控工具?

答:是的,CrewAI AMP 包括高级调试、跟踪和实时可观察性功能,简化了自动化的管理和故障排除。

问:CrewAI 支持哪些编程语言?

答:CrewAI 主要基于 Python,但通过其灵活的 API 集成功能,可以轻松地与用任何编程语言编写的服务和 API 集成。

问:CrewAI 是否为初学者提供教育资源?

答:是的,CrewAI 通过 learn.crewai.com 提供广泛的适合初学者的教程、课程和文档,为各种技能水平的开发人员提供支持。

问:CrewAI 可以自动化人机交互工作流程吗?

答:是的,CrewAI 完全支持人机交互工作流程,允许人类专家和人工智能代理之间无缝协作,以增强决策能力。

 

请登录后发表评论

    没有回复内容