Tracks
AI 智能体是能够执行任务并与世界交互的助手。不同于遵循固定规则的传统系统,它们可以学习并适应新情境。您可以将其视为能够感知环境并采取行动的软件程序。
但与我们熟知的热门 语言模型等其他 AI 实体相比,AI 智能体的独特之处是什么?
在本文中,我将回答这个问题,并介绍 CrewAI——一个免费且开源的 Python 框架,旨在简化多智能体 AI 系统的开发。我们将探讨智能体与语言模型的区别,讨论为何在构建 AI 应用时智能体框架很重要,并演示 CrewAI 如何让智能体协作并取得出色成果。
AI 智能体 vs. LLM
让我们澄清关于智能体与大型语言模型(LLM)差异的一个常见误解。二者同属人工智能范畴,但能力各不相同。

语言模型(如 ChatGPT 和 Gemini)擅长使用语言。它们在海量文本与代码上进行了广泛训练,具备理解与生成近似人类交流的语言的能力。
LLM 是人工智能领域的“文字大师”,能生成多种内容,包括翻译、摘要、创意叙事,甚至诗歌。它们的范围通常局限于与语言相关的任务。
而智能体的核心在于采取行动。它们能够导航、与对象交互,并基于感知做出决策。
简而言之,语言模型是“大脑”,智能体是“手”。两者结合,威力强大。
那么,在智能体在 AI 应用中扮演如此重要角色的背景下,当多个智能体需要协同工作时,我们如何管理其复杂性?这正是智能体框架的用武之地。
为何需要智能体框架
随着 AI 应用日益复杂,尤其是在多个智能体协作以实现共同目标的场景中,对智能体框架的需求应运而生。让我们看看智能体框架为何不可或缺。
编排与协调
随着 AI 系统规模扩大,往往会纳入众多能力各异的智能体。管理这些交互并确保协同一致变得愈发困难。
智能体框架提供结构化环境,用于编排智能体活动,定义其角色与职责,并改进沟通方式。
在多智能体系统中,一个重要方面是将任务高效分配给最合适的智能体,并有效管理共享资源。智能体框架为任务分配、资源协商与冲突解决提供动态机制。
模块化与可复用性
智能体框架提倡模块化的 AI 开发方法,将智能体设计与实现为独立组件。此种模块化有助于更好的代码组织,并使智能体模块可在多个项目间复用,从而简化复杂系统的开发与维护。借助这种基于组件的结构,AI 开发者可以专注于单个智能体,而不干扰更大的系统。
此外,智能体框架常采用基于角色的架构,允许开发者为智能体分配特定角色,从而定义其能力与权限。这种基于角色的设计带来更有序、易管理的系统,使得添加、移除或修改智能体对整体架构的影响最小。该灵活性确保系统能够在无需大规模返工的情况下演进并适应新需求。
适应性与学习
现实世界环境往往具有动态性、不可预测性且持续变化。智能体框架使智能体能够感知周遭变化并相应调整其行为。这种适应性确保智能体即便在复杂且不断变化的场景中也能有效运作,更好地应对现实世界挑战。
此外,智能体框架通常融入学习机制,使智能体能随时间提升性能。通过从反馈与经验中学习,智能体可持续优化决策过程并适应不断出现的新挑战。这种持续改进让智能体更高效、更有价值,推动系统的长期效率与成功。
既然谈到智能体框架,就让我们介绍一款在 AI 社区颇受关注的框架:CrewAI。
什么是 CrewAI?
CrewAI 是一个开源的 Python 框架,围绕两种互补的构件构建:
- Crews(团队)——通过基于角色的决策进行自主协作的 AI 智能体团队;以及
- Flows(流程)——可用于生产、事件驱动的工作流,助您掌控自动化。
二者结合,可让您从简单的研究管线构建到完全自主的多智能体系统。

该框架包含一系列工具,包括网页搜索引擎与语言模型,使智能体能够与外部世界交互、收集信息并采取行动以达成目标。
CrewAI 的设计与可扩展性,使其非常适合开发基础与复杂的多智能体应用,鼓励在 AI 系统内以协作方式应对挑战并进行决策。
下面看看让 CrewAI 成为构建多智能体系统强大工具的一些关键特性。
- 智能体编排:CrewAI 确保每个智能体都清楚自己的分工。它提供定义与协调智能体行为的工具,确保整体步调一致。
- 基于角色的架构:如同为乐手分配不同乐器,CrewAI 允许您为智能体分配特定角色,定义其能力与权限。即便复杂度上升,也能构建模块化、结构良好的系统。
- 灵活通信:CrewAI 支持多种通信渠道,使智能体间能够无缝交换信息。可以把它看作私聊、群聊与“扩音器”的合体。
- 工具集成:CrewAI 赋能智能体通过各种工具与世界交互。这些工具使智能体能够搜索网页、理解语言、分析数据并执行自定义任务。
- 可扩展性:CrewAI 旨在轻松扩展,确保您的多智能体系统在增长过程中依然响应迅速且高效。
那么,CrewAI 能带来哪些益处?让我们一探究竟。
CrewAI 的 Flows 与 Crews
CrewAI 围绕两种相辅相成的构件构建,它们协同处理从简单智能体任务到复杂生产管线的一切。
Crews 是自主协作的 AI 智能体团队。Crew 中的每个智能体都有明确的角色、目标与背景设定——它们相互协作完成任务、彼此委派,并在无需您为每一步编写脚本的情况下做出决策。当您希望智能体自己“摸索如何完成任务”时,就该使用 Crew。
Flows 是位于 Crews 之上的编排层。Flow 允许您将多个 Crew 串联起来,在步骤之间添加条件逻辑,跨管线管理状态,并基于事件触发操作。Crew 赋予您自治,Flow 则给予您掌控。
| Crews | Flows | |
|---|---|---|
| 最适合 | 自主、协作的智能体任务 | 受控执行的多阶段管线 |
| 控制层级 | 智能体驱动 | 开发者定义 |
| 适用场景 | 当您希望智能体自己找出“如何做” | 当您需要掌控“做什么、何时做、是否做” |
对于大多数初学者,您会从 Crews 起步。只有当您需要生产级可靠性时,才会使用 Flows。Flows 是您扩展规模的方式。
使用 CrewAI 的优势
CrewAI 使多个 AI 智能体能够协作、共享知识,并协调行动以达成共同目标。
通过自动化任务分配与资源管理,CrewAI 让智能体以最小开销专注于各自职责。
该框架还支持适应性,使智能体能够根据条件或目标的变化调整其行为。
此外,CrewAI 通过友好的平台简化了多智能体系统的创建与管理流程,降低了开发难度。

CrewAI 的另一大优势是其对多种工具的集成。这扩展了智能体的能力,使其能够与外部世界交互并获取信息。
CrewAI 支持如网页搜索引擎、语言模型、数据分析工具,甚至自定义功能等工具。这使智能体能够执行超出其核心能力的任务,例如从网络检索信息或进行复杂数据分析。
上手实践:使用 CrewAI 构建网页搜索工具
让我们动手构建一个使用 CrewAI 工具的工作流,先抓取网站内容,然后在其上执行 RAG。
我们需要编写使工具工作的代码。开始之前,使用 pip 安装 crewai-tools 与 crewai 包:
# Install CrewAI with tools support
pip install 'crewai[tools]'
# Or using uv (recommended by CrewAI for dependency management)
uv add 'crewai[tools]'
安装完成后,按以下步骤操作。此示例将使用三种不同工具:用于抓取网站的 ScrapeWebsiteTool、用于写文件的 FileWriterTool,以及用于在上下文中进行 RAG 搜索的 TXTSearchTool。我们开始吧。
步骤 1:抓取网站
我们首先导入必要的库并初始化 ScrapeWebsiteTool。该工具用于从网站提取内容。在此示例中,它被设置为抓取维基百科“Artificial Intelligence(人工智能)”页面的内容:
from crewai_tools import ScrapeWebsiteTool, FileWriterTool, TXTSearchTool
import requests
# Initialize the tool, potentially passing the session
tool = ScrapeWebsiteTool(website_url='https://en.wikipedia.org/wiki/Artificial_intelligence')
# Extract the text
text = tool.run()
print(text)
步骤 2:将提取的文本写入文件
现在我们使用 FileWriterTool 将提取文本保存到名为 ai.txt 的文件中。
# Initialize the tool
file_writer_tool = FileWriterTool()
# Write content to a file in a specified directory
result = file_writer_tool._run(filename='ai.txt', content = text, directory = '', overwrite=True)
print(result)
步骤 3:设置文本搜索工具
我们设置另一个工具,用于搜索刚保存的文件 ai.txt 的内容。我们还设置了 OpenAI API 密钥的环境变量。
import os
from crewai_tools import TXTSearchTool
os.environ['OPENAI_API_KEY'] = 'API-KEY'
# Initialize the tool with a specific text file, so the agent can search within the given text file's content
tool = TXTSearchTool(txt='ai.txt')
步骤 4:创建执行任务的智能体并运行
我们创建一个担任教育者角色的数据分析智能体。该智能体的任务是基于我们在文件中检索到的文本,回答“什么是自然语言处理?”这一问题。
from crewai import Agent, Task, Crew
context = tool.run('What is natural language processing?')
data_analyst = Agent(
role='Educator',
goal=f'Based on the context provided, answer the question - What is Natural Language Processing? Context - {context}',
backstory='You are a data expert',
verbose=True,
allow_delegation=False,
tools=[tool]
)
test_task = Task(
description="Using the provided context, answer the question: What is Natural Language Processing?",
tools=[tool],
agent=data_analyst,
expected_output='A clear, 2-3 paragraph explanation of Natural Language Processing, covering its definition, key techniques, and common applications.'
)
crew = Crew(
agents=[data_analyst],
tasks=[test_task]
)
output = crew.kickoff()

CrewAI 与 LangGraph、AutoGen 的比较
CrewAI 的主要替代方案包括 LangGraph 与微软的 AutoGen。CrewAI 最大的优势在于其基于角色的智能体范式。也就是说,通过为智能体定义角色、目标与背景设定,您能获得更贴近人类团队协作方式的行为表现。
LangGraph 通过基于图的方式提供对执行流程更强的掌控,但需要理解有向图与状态管理等概念。对于大多数刚接触多智能体系统的开发者而言,CrewAI 能更快产出可用原型。
结语
CrewAI 提供了一个实用的平台来管理多智能体系统。无论是抓取内容还是任务委派,该框架都支持智能体之间的协作,并帮助它们适应与改进。
通过集成工具并提供有组织的结构,CrewAI 使开发者更易于管理智能体交互、分配任务,并确保最佳性能。