CrewAI 是一个开源的 Python 框架,用于编排协作的自主 AI 代理,通过角色分配和任务管理实现复杂任务的自动化。本文档基于 CrewAI GitHub 仓库 的信息,旨在帮助用户快速上手 CrewAI,构建并运行 AI 代理团队。

1. 简介

CrewAI 是一个轻量、高性能的框架,专注于多 AI 代理协作,能够通过角色扮演和任务分配实现复杂任务的自动化。它支持灵活的定制、外部工具集成以及多种大型语言模型(LLM)的使用,适用于从简单任务到企业级复杂场景的自动化需求。

主要特性

  • 角色驱动的代理设计:为每个代理定义特定的角色、目标和背景故事。
  • 自主代理间协作:代理可以自主委托任务并相互交流,提升问题解决效率。
  • 灵活的任务管理:动态分配任务并支持自定义工具。
  • 高性能与轻量:优化执行速度和资源使用,独立于其他框架如 LangChain。
  • 支持多种 LLM:兼容开源和专有模型,支持本地模型(如通过 Ollama 或 LM Studio)。

2. 安装与环境配置

2.1 安装 CrewAI

确保你的系统已安装 Python 3.8 或更高版本。建议使用虚拟环境以避免依赖冲突。

运行以下命令安装 CrewAI:

pip install crewai

如果使用 Poetry 管理依赖,运行:

poetry add crewai

若遇到 Poetry 相关错误,可更新 CrewAI 包:

poetry update crewai

2.2 配置环境变量

CrewAI 需要配置 API 密钥以使用 LLM(如 OpenAI、Anthropic 或本地模型)。创建一个 .env 文件存储密钥,格式如下:

OPENAI_API_KEY=your_openai_api_key
SERPER_API_KEY=your_serper_api_key

确保将 .env 添加到 .gitignore 中以防止泄露密钥。

2.3 项目结构

推荐使用 CrewAI 的 YAML 模板结构来组织项目。运行以下命令创建一个新项目:

crewai create latest-ai-development

这将生成以下目录结构:

latest-ai-development/
├── .gitignore
├── pyproject.toml
├── README.md
├── .env
└── src/
    └── latest_ai_development/
        ├── __init__.py
        ├── main.py
        ├── crew.py
        ├── tools/
        │   ├── custom_tool.py
        │   └── __init__.py
        └── config/
            ├── agents.yaml
            ├── tasks.yaml
  • agents.yaml:定义代理的角色、目标和背景。
  • tasks.yaml:定义任务的描述和预期输出。
  • main.py:主程序入口,加载配置并运行代理团队。

3. 创建你的第一个 AI 代理团队

以下是一个简单的例子,展示如何使用 CrewAI 创建一个研究和报告生成团队。

3.1 定义代理

编辑 src/latest_ai_development/config/agents.yaml 文件,定义两个代理:研究员和报告撰写者。

researcher:
  role: Senior Data Researcher
  goal: Uncover cutting-edge developments in AI
  backstory: You're a seasoned researcher with a knack for uncovering the latest developments in AI. Known for your ability to find relevant information and present it clearly.

writer:
  role: Report Writer
  goal: Create a comprehensive report based on research findings
  backstory: You're an expert writer skilled in transforming complex data into clear, engaging reports.

3.2 定义任务

编辑 src/latest_ai_development/config/tasks.yaml 文件,定义两个任务:研究和报告撰写。

research_task:
  description: Research the latest advancements in AI for 2025
  expected_output: A detailed summary of recent AI developments
  agent: researcher

writing_task:
  description: Write a comprehensive report based on the research findings
  expected_output: A markdown-formatted report
  agent: writer

3.3 配置主程序

编辑 src/latest_ai_development/main.py,加载代理和任务,并运行 CrewAI:

from crewai import Crew, Agent, Task
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 配置代理
researcher = Agent(
    role="Senior Data Researcher",
    goal="Uncover cutting-edge developments in AI",
    backstory="You're a seasoned researcher with a knack for uncovering the latest developments in AI.",
    verbose=True,
    allow_delegation=False
)

writer = Agent(
    role="Report Writer",
    goal="Create a comprehensive report based on research findings",
    backstory="You're an expert writer skilled in transforming complex data into clear, engaging reports.",
    verbose=True,
    allow_delegation=False
)

# 配置任务
research_task = Task(
    description="Research the latest advancements in AI for 2025",
    expected_output="A detailed summary of recent AI developments",
    agent=researcher
)

writing_task = Task(
    description="Write a comprehensive report based on the research findings",
    expected_output="A markdown-formatted report",
    agent=writer
)

# 创建 Crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    verbose=2
)

# 运行 Crew
result = crew.kickoff()

# 输出结果
print(result)

3.4 运行项目

在终端中运行以下命令:

python src/latest_ai_development/main.py

运行后,CrewAI 将按顺序执行任务,生成一个 report.md 文件,包含研究结果和最终报告。

4. 高级功能

4.1 集成外部工具

CrewAI 支持与外部工具、API 和数据库集成。例如,使用 crewAI-tools 包添加搜索功能:

pip install crewai-tools

示例:添加互联网搜索工具。

from crewai_tools import SerperDevTool

search_tool = SerperDevTool()
researcher = Agent(
    role="Senior Data Researcher",
    goal="Uncover cutting-edge developments in AI",
    tools=[search_tool],
    verbose=True
)

需要提供 SERPER_API_KEY,可从 Serper 获取。

4.2 使用本地 LLM

CrewAI 支持本地模型(如 Llama 3.1)。以下是配置 NVIDIA NIM 模型的示例:

from crewai import LLM

local_nvidia_nim_llm = LLM(
    model="openai/meta/llama-3.1-8b-instruct",
    base_url="http://localhost:8000/v1",
    api_key="your_api_key"
)

researcher = Agent(
    role="Senior Data Researcher",
    goal="Uncover cutting-edge developments in AI",
    llm=local_nvidia_nim_llm,
    verbose=True
)

参考 LLM 配置文档 获取更多细节。

4.3 流程管理

CrewAI 支持两种主要流程:

  • 顺序流程:任务按顺序执行(默认)。
  • 层级流程:自动分配一个管理者代理协调任务。

启用层级流程:

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    process="hierarchical",
    verbose=2
)

更多流程(如共识流程)正在开发中。

5. 最佳实践

  • 优化 token 使用:监控 LLM 的 token 使用,调整上下文窗口和温度参数以平衡性能和成本。
  • 使用 YAML 模板:通过 agents.yamltasks.yaml 保持项目结构清晰。
  • 启用详细日志:设置 verbose=True 以调试代理行为。
  • 社区资源:参考 CrewAI-examples 仓库 获取实际案例,如旅行规划或股票分析。

6. 贡献与支持

CrewAI 是一个开源项目,欢迎社区贡献。你可以:

若需企业级功能(如实时监控、安全集成),可探索 CrewAI Enterprise

7. 注意事项

  • 遥测数据:CrewAI 默认启用匿名遥测以改进功能,不收集敏感数据(如提示或 API 密钥)。可通过设置环境变量 OTEL_SDK_DISABLED=true 禁用。
  • 依赖管理:定期更新 CrewAI 和相关包以避免兼容性问题。
  • Windows 用户:若遇到 chroma-hnswlib 构建错误,安装 Visual Studio Build Tools 并启用 C++ 桌面开发。

8. 总结

CrewAI 提供了一个强大而灵活的框架,用于构建协作 AI 代理团队。通过角色驱动的设计、任务管理和外部工具集成,用户可以轻松实现复杂任务的自动化。遵循本指南,你可以快速创建并运行你的第一个 CrewAI 项目,并根据需求扩展功能。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐