SuperAPI AI 工具集

crewai-multi-agent

智能体与模型

查看项目

更新于 10-30 06:48

技能介绍

CrewAI 是一个多智能体编排框架,用于构建由自主 AI 智能体组成的团队,让它们协作解决复杂任务。

主要用途

CrewAI 适用于以下场景:构建具有专业化角色的多智能体系统;需要智能体之间自主协作;希望按角色进行任务分派(如研究员、写作者、分析师);需要顺序或层级流程执行;构建带有记忆和可观测性的生产工作流;以及希望比 LangChain/LangGraph 更简单的设置。

主要能力

  • 独立轻量:不依赖 LangChain,占用资源少。
  • 基于角色:每个智能体拥有角色、目标和背景故事。
  • 双范式:支持 Crews(自主协作)和 Flows(事件驱动编排)。
  • 50+ 内置工具:涵盖网页抓取、搜索、数据库、AI 服务等。
  • 记忆系统:支持短期记忆(ChromaDB)、长期记忆(SQLite)和实体记忆(ChromaDB)。
  • 生产就绪:提供追踪和企业级特性。

使用方式

安装

# 核心框架
pip install crewai

# 包含 50+ 内置工具
pip install 'crewai[tools]'

通过 CLI 创建项目

# 创建新的 crew 项目
crewai create crew my_project
cd my_project

# 安装依赖
crewai install

# 运行 crew
crewai run

纯代码方式定义简单的 crew

from crewai import Agent, Task, Crew, Process

# 1. 定义智能体
researcher = Agent(
    role="Senior Research Analyst",
    goal="Discover cutting-edge developments in AI",
    backstory="You are an expert analyst with a keen eye for emerging trends.",
    verbose=True
)

writer = Agent(
    role="Technical Writer",
    goal="Create clear, engaging content about technical topics",
    backstory="You excel at explaining complex concepts to general audiences.",
    verbose=True
)

# 2. 定义任务
research_task = Task(
    description="Research the latest developments in {topic}. Find 5 key trends.",
    expected_output="A detailed report with 5 bullet points on key trends.",
    agent=researcher
)

write_task = Task(
    description="Write a blog post based on the research findings.",
    expected_output="A 500-word blog post in markdown format.",
    agent=writer,
    context=[research_task]  # 使用研究输出
)

# 3. 创建并运行 crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,  # 任务按顺序运行
    verbose=True
)

# 4. 执行
result = crew.kickoff(inputs={"topic": "AI Agents"})
print(result.raw)

核心概念

智能体(Agents):自主工作者,可配置角色、目标、背景故事、LLM、工具、记忆、是否允许委派、最大迭代次数和速率限制等。

任务(Tasks):工作单元,可指定描述、预期输出、负责智能体、上下文依赖、输出文件、是否异步执行和是否需要人工输入。

Crews:智能体团队,配置智能体列表、任务列表、流程类型(顺序或层级)、记忆、缓存、速率限制等,通过 kickoff 执行并获取原始输出、任务输出和 token 使用量。

流程类型

  • 顺序(Sequential,默认):任务按顺序执行,每个智能体完成自己的任务后再进行下一个。
  • 层级(Hierarchical):自动创建经理智能体来分派和协调任务,可指定经理使用的 LLM。

使用工具

可安装 crewai[tools] 使用 50+ 内置工具,例如 SerperDevTool(网页搜索)、ScrapeWebsiteTool(网页抓取)、FileReadTool(读取文件)、PDFSearchTool(搜索 PDF)、WebsiteSearchTool(搜索网站)、CodeDocsSearchTool(搜索代码文档)、YoutubeVideoSearchTool(搜索 YouTube)等。也可通过继承 BaseTool 并实现 _run 方法创建自定义工具。

YAML 配置(推荐)

项目结构通常为 src/my_project/config/agents.yaml 和 tasks.yaml 定义智能体与任务,crew.py 组装 crew,main.py 作为入口。使用 @CrewBase、@agent、@task、@crew 装饰器从配置加载。

Flows(事件驱动编排)

对于带条件逻辑的复杂工作流,可使用 crewai.flow.flow 中的 Flow、start、listen、router 等构建事件驱动流程,并配合 Pydantic 状态模型管理状态。

记忆系统

通过 memory=True 启用记忆,可自定义嵌入提供者。记忆类型包括短期(ChromaDB)、长期(SQLite)和实体(ChromaDB)。

LLM 提供者

支持 OpenAI(默认)、Anthropic、本地 Ollama、Azure 等,通过 crewai.LLM 指定模型和 base_url。

适用场景与限制

CrewAI 适合多智能体团队协作、角色化任务分派、顺序或层级流程以及事件驱动工作流。若需求是通用 LLM 应用或 RAG 管道,可考虑 LangChain;复杂有状态循环工作流可考虑 LangGraph;微软生态的多智能体对话可考虑 AutoGen;文档问答和知识检索可考虑 LlamaIndex。

最佳实践

  • 为每个智能体设定清晰且独特的专长。
  • 较大项目使用 YAML 配置以便组织。
  • 启用记忆以改善跨任务上下文。
  • 设置 max_iter 防止无限循环(默认 15)。
  • 每个智能体限制 3-5 个工具。
  • 设置 max_rpm 避免 API 速率限制。

常见问题

  • 智能体陷入循环:限制 max_iter 和 max_rpm。
  • 任务未使用上下文:在任务中显式传递 context=[task1]。
  • 记忆错误:通过环境变量 CREWAI_STORAGE_DIR 指定存储目录。

资源

  • GitHub:https://github.com/crewAIInc/crewAI(25k+ stars)
  • 文档:https://docs.crewai.com
  • 工具:https://github.com/crewAIInc/crewAI-tools
  • 示例:https://github.com/crewAIInc/crewAI-examples
  • 版本:1.2.0+
  • 许可证:MIT