跳转到主要内容

释放协同 AI 的力量

想象一下,有一个由专业 AI 智能体组成的团队,他们无缝协作以解决复杂问题,每个智能体都贡献其独特的技能以实现共同的目标。这就是 CrewAI 的力量——一个使您能够创建协同 AI 系统的框架,这些系统可以完成远超单个 AI 能力的任务。 在本指南中,我们将逐步创建一个研究 Crew,帮助我们研究和分析一个主题,然后创建一份全面的报告。这个实际示例展示了 AI 智能体如何协作完成复杂任务,但这仅仅是 CrewAI 可能性的开端。

你将构建和学到什么

在本指南结束时,你将:
  1. 创建一个专业的 AI 研究团队,拥有明确的角色和职责
  2. 协调多个 AI 智能体之间的协作
  3. 自动化一个复杂的工作流程,包括信息收集、分析和报告生成
  4. 构建基础技能,可以应用于更具挑战性的项目
虽然在本指南中我们构建的是一个简单的研究 Crew,但相同的模式和技术可以应用于创建更复杂的团队,用于以下任务:
  • 由专业作家、编辑和事实核查员组成的多阶段内容创作
  • 具有分级支持智能体的复杂客户服务系统
  • 能够收集数据、创建可视化图表并生成见解的自主商业分析师
  • 构思、设计和规划实施的产品开发团队
让我们开始构建你的第一个 Crew 吧!

先决条件

在开始之前,请确保你已经:
  1. 按照安装指南安装了 CrewAI
  2. 按照LLM 设置指南在你的环境中设置了 LLM API 密钥
  3. 具备基本的 Python 知识

第 1 步:创建一个新的 CrewAI 项目

首先,让我们使用 CLI 创建一个新的 CrewAI 项目。此命令将建立一个完整的项目结构,包含所有必要文件,让你能够专注于定义你的智能体及其任务,而不是设置样板代码。
crewai create crew research_crew
cd research_crew
这将生成一个具有你的 Crew 所需基本结构的项目。CLI 会自动创建:
  • 一个包含必要文件的项目目录
  • 用于智能体和任务的配置文件
  • 一个基本的 Crew 实现
  • 一个用于运行 Crew 的主脚本
CrewAI Framework Overview

CrewAI 框架概述

第 2 步:探索项目结构

让我们花点时间来了解一下 CLI 创建的项目结构。CrewAI 遵循 Python 项目的最佳实践,使得随着你的 Crew 变得越来越复杂,维护和扩展代码变得容易。
research_crew/
├── .gitignore
├── pyproject.toml
├── README.md
├── .env
└── src/
    └── research_crew/
        ├── __init__.py
        ├── main.py
        ├── crew.py
        ├── tools/
        │   ├── custom_tool.py
        │   └── __init__.py
        └── config/
            ├── agents.yaml
            └── tasks.yaml
这种结构遵循 Python 项目的最佳实践,并使组织代码变得容易。将配置文件(YAML 格式)与实现代码(Python 格式)分离,使得在不更改底层代码的情况下,可以轻松修改你的 Crew 的行为。

第 3 步:配置你的智能体

现在到了有趣的部分——定义你的 AI 智能体!在 CrewAI 中,智能体是具有特定角色、目标和背景故事的专业实体,这些因素塑造了它们的行为。可以把它们想象成戏剧中的角色,每个角色都有自己的个性和目的。 对于我们的研究 Crew,我们将创建两个智能体:
  1. 一个擅长查找和组织信息的研究员
  2. 一个能够解读研究结果并创建富有洞察力报告的分析师
让我们修改 agents.yaml 文件来定义这些专业智能体。请务必将 llm 设置为你正在使用的提供商。
# src/research_crew/config/agents.yaml
researcher:
  role: >
    Senior Research Specialist for {topic}
  goal: >
    Find comprehensive and accurate information about {topic}
    with a focus on recent developments and key insights
  backstory: >
    You are an experienced research specialist with a talent for
    finding relevant information from various sources. You excel at
    organizing information in a clear and structured manner, making
    complex topics accessible to others.
  llm: provider/model-id  # e.g. openai/gpt-4o, google/gemini-2.0-flash, anthropic/claude...

analyst:
  role: >
    Data Analyst and Report Writer for {topic}
  goal: >
    Analyze research findings and create a comprehensive, well-structured
    report that presents insights in a clear and engaging way
  backstory: >
    You are a skilled analyst with a background in data interpretation
    and technical writing. You have a talent for identifying patterns
    and extracting meaningful insights from research data, then
    communicating those insights effectively through well-crafted reports.
  llm: provider/model-id  # e.g. openai/gpt-4o, google/gemini-2.0-flash, anthropic/claude...
注意每个智能体都有明确的角色、目标和背景故事。这些元素不仅仅是描述性的——它们主动塑造了智能体处理任务的方式。通过精心设计这些元素,你可以创建具有互补技能和观点的专业智能体。

第 4 步:定义你的任务

定义好我们的智能体后,现在需要给它们分配具体的任务。在 CrewAI 中,任务代表智能体将要执行的具体工作,包含详细的指令和预期的输出。 对于我们的研究 Crew,我们将定义两个主要任务:
  1. 一个用于收集全面信息的研究任务
  2. 一个用于创建富有洞察力报告的分析任务
让我们修改 tasks.yaml 文件
# src/research_crew/config/tasks.yaml
research_task:
  description: >
    Conduct thorough research on {topic}. Focus on:
    1. Key concepts and definitions
    2. Historical development and recent trends
    3. Major challenges and opportunities
    4. Notable applications or case studies
    5. Future outlook and potential developments

    Make sure to organize your findings in a structured format with clear sections.
  expected_output: >
    A comprehensive research document with well-organized sections covering
    all the requested aspects of {topic}. Include specific facts, figures,
    and examples where relevant.
  agent: researcher

analysis_task:
  description: >
    Analyze the research findings and create a comprehensive report on {topic}.
    Your report should:
    1. Begin with an executive summary
    2. Include all key information from the research
    3. Provide insightful analysis of trends and patterns
    4. Offer recommendations or future considerations
    5. Be formatted in a professional, easy-to-read style with clear headings
  expected_output: >
    A polished, professional report on {topic} that presents the research
    findings with added analysis and insights. The report should be well-structured
    with an executive summary, main sections, and conclusion.
  agent: analyst
  context:
    - research_task
  output_file: output/report.md
请注意分析任务中的 context 字段——这是一个强大的功能,允许分析师访问研究任务的输出。这创建了一个工作流程,其中信息在智能体之间自然流动,就像在人类团队中一样。

第 5 步:配置你的 Crew

现在是时候通过配置我们的 Crew 将所有内容整合在一起了。Crew 是协调智能体如何协同工作以完成任务的容器。 让我们修改 crew.py 文件:
# src/research_crew/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 ResearchCrew():
    """Research crew for comprehensive topic analysis and reporting"""

    agents: List[BaseAgent]
    tasks: List[Task]

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

    @agent
    def analyst(self) -> Agent:
        return Agent(
            config=self.agents_config['analyst'], # type: ignore[index]
            verbose=True
        )

    @task
    def research_task(self) -> Task:
        return Task(
            config=self.tasks_config['research_task'] # type: ignore[index]
        )

    @task
    def analysis_task(self) -> Task:
        return Task(
            config=self.tasks_config['analysis_task'], # type: ignore[index]
            output_file='output/report.md'
        )

    @crew
    def crew(self) -> Crew:
        """Creates the research crew"""
        return Crew(
            agents=self.agents,
            tasks=self.tasks,
            process=Process.sequential,
            verbose=True,
        )
在这段代码中,我们正在:
  1. 创建研究员智能体,并为其配备 SerperDevTool 以搜索网络
  2. 创建分析师智能体
  3. 设置研究和分析任务
  4. 配置 Crew 以顺序执行任务(分析师将等待研究员完成)
这就是奇迹发生的地方——只需几行代码,我们就定义了一个协同 AI 系统,其中专业智能体在一个协调的过程中协同工作。

第 6 步:设置你的主脚本

现在,让我们设置将运行我们 Crew 的主脚本。在这里,我们提供我们希望 Crew 研究的具体主题。
#!/usr/bin/env python
# src/research_crew/main.py
import os
from research_crew.crew import ResearchCrew

# Create output directory if it doesn't exist
os.makedirs('output', exist_ok=True)

def run():
    """
    Run the research crew.
    """
    inputs = {
        'topic': 'Artificial Intelligence in Healthcare'
    }

    # Create and run the crew
    result = ResearchCrew().crew().kickoff(inputs=inputs)

    # Print the result
    print("\n\n=== FINAL REPORT ===\n\n")
    print(result.raw)

    print("\n\nReport has been saved to output/report.md")

if __name__ == "__main__":
    run()
这个脚本准备环境,指定我们的研究主题,并启动 Crew 的工作。CrewAI 的强大之处在于这段代码的简洁性——所有管理多个 AI 智能体的复杂性都由框架处理。

第 7 步:设置你的环境变量

在你的项目根目录下创建一个 .env 文件,并填入你的 API 密钥
SERPER_API_KEY=your_serper_api_key
# Add your provider's API key here too.
有关配置你选择的提供商的详细信息,请参阅LLM 设置指南。你可以从 Serper.dev 获取 Serper API 密钥。

第 8 步:安装依赖项

使用 CrewAI CLI 安装所需的依赖项
crewai install
此命令将:
  1. 从你的项目配置中读取依赖项
  2. 如果需要,创建一个虚拟环境
  3. 安装所有必需的包

第 9 步:运行你的 Crew

现在是激动人心的时刻——是时候运行你的 Crew,亲眼见证 AI 协作的实际效果了!
crewai run
当你运行这个命令时,你会看到你的 Crew 活跃起来。研究员将收集有关指定主题的信息,然后分析师将根据该研究创建一份全面的报告。你将实时看到智能体们的思考过程、行动和输出,因为它们共同努力完成任务。

第 10 步:查看输出

一旦 Crew 完成工作,你将在 output/report.md 文件中找到最终报告。该报告将包括:
  1. 一份执行摘要
  2. 有关该主题的详细信息
  3. 分析和见解
  4. 建议或未来考虑事项
花点时间欣赏一下你所取得的成就——你创建了一个系统,其中多个 AI 智能体在一个复杂的任务上进行协作,每个智能体都贡献了其专业技能,从而产生了任何单个智能体都无法单独实现的成果。

探索其他 CLI 命令

CrewAI 提供了其他几个有用的 CLI 命令来处理 Crew
# View all available commands
crewai --help

# Run the crew
crewai run

# Test the crew
crewai test

# Reset crew memories
crewai reset-memories

# Replay from a specific task
crewai replay -t <task_id>

可能性的艺术:超越你的第一个 Crew

你在本指南中构建的仅仅是个开始。你所学的技能和模式可以应用于创建日益复杂的 AI 系统。以下是一些扩展这个基础研究 Crew 的方法:

扩展你的 Crew

你可以向你的 Crew 添加更多专业智能体:
  • 一个事实核查员,用于验证研究结果
  • 一个数据可视化专员,用于创建图表
  • 一个在特定领域拥有专业知识的领域专家
  • 一个评论员,用于找出分析中的弱点

添加工具和能力

你可以用额外的工具来增强你的智能体:
  • 用于实时研究的网络浏览工具
  • 用于数据分析的 CSV/数据库工具
  • 用于数据处理的代码执行工具
  • 连接到外部服务的 API

创建更复杂的工作流程

你可以实现更复杂的流程:
  • 分层流程,其中经理智能体将任务委派给工作智能体
  • 带有反馈循环的迭代流程,用于改进
  • 多个智能体同时工作的并行流程
  • 根据中间结果进行调整的动态流程

应用于不同领域

同样的模式可以应用于创建用于以下领域的 Crew:
  • 内容创作:作家、编辑、事实核查员和设计师协同工作
  • 客户服务:分流智能体、专家和质量控制协同工作
  • 产品开发:研究员、设计师和规划师协作
  • 数据分析:数据收集员、分析师和可视化专家

后续步骤

既然你已经构建了你的第一个 Crew,你可以:
  1. 尝试不同的智能体配置和个性
  2. 尝试更复杂的任务结构和工作流程
  3. 实现自定义工具,为你的智能体赋予新能力
  4. 将你的 Crew 应用于不同的主题或问题领域
  5. 探索 CrewAI Flows,以使用过程式编程实现更高级的工作流程
恭喜!你已成功构建了你的第一个 CrewAI Crew,它可以研究和分析你提供的任何主题。这个基础经验为你提供了创建日益复杂的 AI 系统的技能,这些系统可以通过协作智能来解决复杂的多阶段问题。