首页 › AI Agent › AI Agent 开发实战 › 第三节 多Agent协作工作流构建指南:CrewAI深度解析

第三节 多Agent协作工作流构建指南:CrewAI深度解析

​

飞书文档 - 图片

​

为什么选择 CrewAI?​

在开发实际的自动化业务流时,开发者最大的痛点往往不是模型不够聪明,而是“多个 Agent 聚在一起不知道该干什么”——即所谓的“无组织涌现”导致死循环或跑题。​

CrewAI 解决了这个痛点,它的核心优势在于极强的角色化(Role-playing)和目标导向(Goal-oriented):​

​

🥛

角色设定(Role & Backstory): 强制要求为每个 Agent 设定清晰的背景故事和职责边界,这极大地降低了模型幻觉。​

任务分配(Delegation): 任务可以串行执行(Sequential),也可以并行执行(Hierarchical)。Agent 之间可以相互指派子任务,并期待特定格式的输出。​

内置工具生态: 原生集成 LangChain 工具库,并且内置了搜索、网页抓取等常用能力。​

​

CrewAI 核心概念解析​

​

⚽

•

Agent(智能体): 团队中的“员工”。拥有 role(职位)、goal(OKR)、backstory(简历)和 tools(技能/工具)。​

•

Task(任务): 分配给 Agent 的具体工作。包含 description(需求文档)和 expected_output(交付物标准)。​

•

Crew(团队): 负责统筹 Agents 和 Tasks 的容器。它决定了任务的执行顺序(process)。​

•

Process(流程): 工作流引擎。目前支持 Sequential(按顺序一个一个做)和 Hierarchical(由一个 Manager Agent 动态分配任务)。​

​

实战:构建一个自动化的市场调研分析团队​

3.1 准备环境与工具​

首先安装 CrewAI 和相关的搜索工具包。为了方便管理系统提示词,你可以使用 QubitTool 的 Prompt 导航库 来获取灵感。​

​

代码块​

Bash

pip install crewai langchain-openai duckduckgo-search​

​

3.2 定义 Agents (员工)​

我们需要精心雕琢它们的 backstory,这决定了它们处理任务时的专业度和口吻。​

python​

​

代码块​

Python

import os​

from crewai import Agent, Task, Crew, Process​

from langchain_openai import ChatOpenAI​

from langchain.tools import DuckDuckGoSearchRun​

​

# 确保配置了 OPENAI_API_KEY​

os.environ["OPENAI_API_KEY"] = "sk-..."​

llm = ChatOpenAI(model="gpt-4-turbo", temperature=0.3)​

search_tool = DuckDuckGoSearchRun()​

​

# 1. 资深市场研究员​

researcher = Agent(​

role='资深AI行业分析师',​

goal='发掘和分析 AI 编码助手(如 Cursor, Trae, Copilot)的最新市场动态和技术趋势',​

backstory='你曾在顶级科技咨询公司工作 10 年,对开发者工具赛道有着敏锐的嗅觉。你擅长从海量碎片化信息中提取核心数据和竞争格局。',​

verbose=True,​

allow_delegation=False, # 研究员只负责自己找资料,不指派给别人​

tools=[search_tool],​

llm=llm​

​

3.3 定义 Tasks (任务)​

Task 的关键在于明确 expected_output。如果需要将其转化为代码结构,你可以使用 JSON 转代码工具 辅助生成 Pydantic 模型。​

python​

​

代码块​

Python

​

3.4 组建 Crew 并执行​

我们将任务串联起来。CrewAI 默认采用串行流程,前一个任务的输出会自动作为后一个任务的上下文。​

python​

​

代码块​

Python

​

与现有工具的集成与进阶​

CrewAI 最强大的地方在于它可以无缝接入 LangChain 庞大的工具生态。这意味着你的 Agent 不仅能上网搜索,还能:​

•

连接 SQL 数据库执行查询(Database Agent)。​

•

读取 GitHub 仓库的 Issue(GitHub Agent)。​

•

甚至调用本地的 Python 脚本。​

如果你希望 Manager Agent 动态决定任务分发,只需将 process 修改为 Process.hierarchical,并提供一个更高性能的 manager_llm。​

FAQ 常见问题解答​

Q: Agent 之间发生“踢皮球”或死循环怎么办? A: 这是开启了 allow_delegation=True 时常见的问题。建议:1) 明确 backstory 中的职责边界;2) 限制任务的 max_iter(最大重试次数);3) 尽量让底层执行者(如 Researcher)的 allow_delegation 设为 False。​

Q: CrewAI 和 AutoGen 能结合使用吗? A: 从架构上看它们是竞争关系。如果你更偏好明确的流程控制和角色扮演,CrewAI 是更好的选择。但两者都可以封装为对方系统中的一个工具(Tool)节点。​

Q: 如何测试和验证我的 Agent 的输入输出? A: 当你的 CrewAI Agent 需要集成外部 API 或工具时,通常会处理大量的 JSON 数据。强烈建议使用我们免费的 JSON 格式化工具 在线格式化和验证你的 JSON 负载。这能确保在将数据喂给 LLM 之前,数据结构是绝对正确的。​

总结​

CrewAI 将复杂的 Multi-Agent 系统抽象为了一家虚拟公司的运作流程。通过精心设计 Role、Goal 和 Task,开发者可以快速构建出稳定且高质量的自动化工作流。这种“面向组织架构编程”的范式,极大地降低了 AI 应用落地的门槛,是每个追求自动化的团队不可错过的利器。​

​