使用CrewAI搭建多智能体协作Ai Agent
CrewAI 介绍CrewAI 是一款开源的、面向开发者的人工智能协作框架,目标是通过高效的多智能体协作系统,实现复杂任务的自动化与智能化。其核心设计理念是模拟人类团队分工协作的模式,让每个 AI 智能体(Agent)承担特定角色(如研究员、工程师、分析师等),通过协同合作完成高阶任务。项目基于 Python 构建,注重灵活性与可扩展性,为开发者提供了一种新型的 AI 工作流设计范式。GitH..
CrewAI 介绍 CrewAI 是一款开源的、面向开发者的人工智能协作框架,目标是通过高效的多智能体协作系统 ,实现复杂任务的自动化与智能化。其核心设计理念是模拟人类团队分工协作的模式,让每个 AI 智能体(Agent)承担特定角色(如研究员、工程师、分析师等),通过协同合作完成高阶任务。项目基于 Python 构建,注重灵活性与可扩展性,为开发者提供了一种新型的 AI 工作流设计范式。
GitHub 仓库地址:https://github.com/crewAIInc/crewAI
核心功能与特性
1.角色驱动的智能体设计
- 每个 Agent 可定制独特的角色、目标、工具和工作流程,例如"数据分析师"专注处理结构化数据,"市场研究员"擅长信息检索与总结。
- 支持记忆(Memory)功能,提高任务间的上下文连贯性。
2.协作式任务编排
- 通过链式(Sequential)或分层(Hierarchical)任务分配模式,实现智能体间的协同配合,例如任务拆分、结果传递与动态调整。
- 提供灵活的流程控制(如顺序执行、条件分支),适应不同场景需求。
3.工具生态系统
- 内置丰富的工具库(文件读写、搜索引擎、API 调用等),同时支持开发者自定义工具扩展。
- 兼容 LangChain 生态,无缝接入多种第三方服务(如向量数据库、LLM 接口)。
4.多模型支持
- 支持主流大语言模型(OpenAI、Anthropic、本地模型等),可根据任务需求灵活切换。
- 提供接口标准化设计,便于集成新兴的 LLM 技术。
5.快速开发与调试
- 简洁的 Python API 与示例代码,降低多智能体系统的开发门槛。
- 提供日志追踪与可视化工具,帮助观察 Agent 的决策过程。
应用场景
- 自动化数据分析
从数据清洗到可视化报告的端到端生成。
- 智能内容生产
多角色协作完成市场调研、文案撰写、SEO 优化等任务。
- 代码开发辅助
由架构师、程序员、测试员等角色协作编写或优化代码。
- 商业决策模拟
通过多方智能体辩论生成风险评估与策略建议。
为何选择 CrewAI?
- 开源透明
基于 MIT 协议开放源代码,开发者可深度定制与贡献。
- 轻量高效
相比传统单智能体系统,协作模式显著提升复杂任务的处理能力。
- 社区驱动
活跃的开发者社区持续提供工具模块与最佳实践案例。
快速上手
-
安装 :
pip install crewai
-
参考官方文档定义 Agents、Tasks 与 Crew 工作流,5 分钟内即可启动首个多智能体协作任务。
CrewAI 正在快速发展,为企业的自动化流程、个人开发者的 AI 应用构建提供了一种全新的可能性。无论是学术研究还是商业落地,均值得探索尝试。
使用crewAI搭建一个reddit内容抓取AI Agent
https://github.com/majacinka/crewai-experiments/blob/main/reddit_newsletter.py
Reddit Newsletter 的结构解析与核心功能说明:
前期准备
创建Reddit应用
在使用PRAW之前,需要在Reddit上创建一个应用。步骤如下:
- 登录Reddit账户
-
访问 https://www.reddit.com/prefs/apps
- 点击"create another app…"
- 填写应用信息(名称、类型选择"script"、描述等)
- 创建完成后,你将获得client_id和client_secret
代码整体结构
此脚本基于 CrewAI 框架 实现多智能体协作,目标是自动抓取 Reddit 的 LocalLLaMA
子版块内容,生成 AI 项目分析报告及符合特定格式的中文博客文章。代码流程如下:
- 初始化环境
设置 OpenAI API 并加载自定义模型。
- 数据抓取工具
通过
praw
库连接 Reddit API 获取帖子与评论。 - 定义智能体
explorer
(研究员)、writer
(作者)、critic
(审阅者)分工协作。 - 创建任务链
按顺序执行任务,生成报告 → 撰写博客 → 格式审核。
- 执行流程
启动智能体组(
Crew
)并输出结果。
关键模块解析
1. 数据抓取工具 - BrowserTool
class BrowserTool:
@tool("Scrape reddit content")
def scrape_reddit(max_comments_per_post=7):
reddit = praw.Reddit(client_id="xxx", client_secret="xxx", user_agent="user-agent")
...
return scraped_data
- 功能
从
LocalLLaMA
子版块爬取热门帖子及评论(默认12个帖子,每帖最多7条评论)。 - 异常处理
检测到 API 异常时休眠60秒重试。
- 输出格式
返回包含标题、URL和评论的字典列表。
2. 智能体定义
智能体 |
角色 |
职责 |
工具/模型 |
---|---|---|---|
explorer |
资深研究员 |
提取 Reddit 数据 → 生成项目分析报告 |
scrape_reddit
+ GPT-4o |
writer |
技术作者 |
将报告转换为通俗易懂的博文 |
GPT-4o |
critic |
审阅专家 |
强制博客符合指定 Markdown 格式且使用中文 |
GPT-4o |
3. 任务设计
-
task_report
-
目标 :根据 Reddit 数据生成 5-10个AI项目 的详细报告(项目符号列表,每个项目3句描述)。
-
约束:仅使用子版块内容,文本无代码。
-
task_blog
-
目标 :撰写 10+段落 的博文,突出关键项目名称(加粗),附带链接。
-
格式:简洁有趣,技术术语转白话。
-
task_critique
-
目标 :强制输出符合以下结构的 Markdown:
## [标题](链接) - 有趣事实 - 对整体主题的关联性分析
流程执行
crew = Crew(
agents=[explorer, writer, critic],
tasks=[task_report, task_blog, task_critique],
process=Process.sequential
)
result = crew.kickoff()
-
模式 :顺序执行(
Sequential
),前一任务的输出作为后一任务的输入。
改进建议
- 安全性
敏感信息(如 API Key)应通过环境变量或加密存储,避免硬编码。
- 错误处理
增加重试机制应对 Reddit 的访问频率限制。
- 扩展性
- 添加缓存模块避免重复抓取。
- 引入多智能体异步协作(如并行处理多个子版块)。
- 本地化优化
完善中文生成的 prompt 细节,避免格式错误。
适用场景
- 自动生成 Reddit 社区的技术趋势简报
- 多语言内容创作(通过调整提示词适配不同语言)
- AI 项目动态监控与分析工具链的开发
更多推荐
所有评论(0)