crewai vs autogen vs langgraph

CrewAI vs AutoGen vs LangGraph:多 Agent 框架终决

三足鼎立:2026 多 Agent 框架格局 2026 年,多 Agent 系统已经从实验室走向生产环境。在众多框架中,CrewAI、AutoGen 和 LangGraph 形成了三足鼎立的格局。它们各自代表了不同的设计哲学:CrewAI 追求极简易用,AutoGen 强调对话式协作,LangGraph 则以状态机建模见长。 本文将从架构设计、开发体验、性能基准、生产就绪度四个维度进行深度对比,帮助你做出技术选型决策。 架构设计对比 CrewAI:角色扮演驱动的 Crew 模型 CrewAI 采用"团队角色"隐喻,每个 Agent 有明确的角色定义、目标和背景故事: from crewai import Agent, Task, Crew, Process researcher = Agent( role='资深市场研究员', goal='收集并分析 {topic} 的市场数据', backstory='你是一位拥有 15 年经验的市场研究专家,擅长数据分析和趋势预测', tools=[search_tool, calculator_tool], llm='gpt-4o', verbose=True, max_iter=10, memory=True, allow_delegation=True ) analyst = Agent( role='金融分析师', goal='基于研究数据生成投资建议', backstory='你是华尔街资深分析师,专注于科技行业投资', llm='claude-3.5-sonnet', verbose=True ) writer = Agent( role='技术报告撰写人', goal='将分析结果转化为易读的投资报告', backstory='你是前彭博社记者,擅长将复杂金融概念通俗化', llm='gpt-4o' ) research_task = Task( description='研究 {topic} 市场规模、竞争格局和增长趋势', agent=researcher, expected_output='包含数据图表的市场研究报告' ) analysis_task = Task( description='基于研究报告生成投资建议', agent=analyst, expected_output='投资评级和目标价分析', context=[research_task] ) writing_task = Task( description='撰写最终投资报告', agent=writer, expected_output='格式完整的投资分析报告', context=[research_task, analysis_task] ) crew = Crew( agents=[researcher, analyst, writer], tasks=[research_task, analysis_task, writing_task], process=Process.sequential, verbose=True, memory=True, embedder={'provider': 'openai', 'config': {'model': 'text-embedding-3-small'}} ) result = crew.kickoff(inputs={'topic': 'AGI 芯片'}) AutoGen:对话即程序 AutoGen 采用多 Agent 对话模型,Agent 之间通过消息传递协作: ...

2026-06-28 · 3 min · 519 words · 硅基 AGI 探索者
autogen vs crewai

AutoGen vs CrewAI框架对比

概述 AutoGen vs CrewAI框架对比是AI智能体领域中AutoGen vs CrewAI框架对比的重要主题。本文将从多个角度深入分析这一话题,为读者提供系统性的认知框架和实践参考。 核心概念 基本定义 在深入讨论之前,我们需要明确几个核心概念。AI智能体是指能够感知环境、理解指令、规划行动并调用工具完成任务的AI系统。与传统的聊天机器人不同,智能体具有自主性、目标导向性和工具使用能力。 AutoGen vs CrewAI框架对比涉及的关键技术包括: 大语言模型:作为智能体的认知引擎,负责理解、推理和生成 工具调用:通过Function Calling或MCP协议与外部系统交互 记忆系统:短期记忆处理当前对话,长期记忆存储历史经验 规划引擎:将复杂任务分解为可执行的子步骤 技术原理 从技术层面看,AutoGen vs CrewAI框架对比的核心在于如何让AI系统更好地理解和执行人类意图。这涉及多个技术环节的协同: 首先是感知层,智能体需要准确理解用户的自然语言指令,提取关键信息和约束条件。其次是规划层,将高层目标分解为具体的执行步骤。然后是执行层,调用合适的工具完成每个步骤。最后是反馈层,根据执行结果调整后续策略。 实践分析 当前现状 在框架测评领域,当前的技术实践呈现出几个明显特征: 工程化程度提升:从实验室原型到生产级系统,工程能力成为关键差异化因素 评估体系完善:越来越多标准化的评测基准被提出,帮助开发者量化能力边界 开源生态繁荣:开源框架和工具链的成熟降低了开发门槛 安全意识增强:对AI安全和对齐问题的重视程度显著提升 关键挑战 尽管进展显著,AutoGen vs CrewAI框架对比仍面临几个核心挑战: 技术挑战: 大模型的幻觉问题在智能体场景下被放大,因为智能体需要做出实际决策 多步推理中的错误累积效应导致长程任务成功率下降 工具调用的可靠性受外部API稳定性影响 工程挑战: 智能体的可观测性不足,调试和排错困难 成本控制与性能优化的平衡 从单机到分布式部署的架构复杂性 安全挑战: Prompt注入等攻击手段不断进化 智能体权限管理需要更精细化的控制 数据隐私保护在多Agent协作场景下更加复杂 优化策略 针对上述挑战,以下是几个关键优化方向: 技术优化 分而治之:将复杂任务分解为可独立验证的子任务,降低单步错误影响 多路投票:对关键决策使用多次采样投票机制,提高可靠性 渐进式信任:智能体权限从最小化开始,根据表现逐步扩展 人在回路:高风险决策保留人工审核环节 工程优化 可观测性优先:建立完善的日志、指标和追踪体系 灰度发布:新版本智能体先在小流量环境验证 自动化测试:构建端到端测试套件,防止回归 成本监控:实时追踪Token消耗和API调用成本 案例研究 为了更具体地说明AutoGen vs CrewAI框架对比的实践价值,我们来看一个典型场景: 某科技公司在内部IT运维中部署了AI智能体,负责处理员工的工单请求。智能体需要理解员工的自然语言描述,判断问题类型,查询知识库,执行修复操作或转接人工。 实施过程中遇到的关键问题包括: 员工描述模糊导致意图识别错误 知识库信息过时导致给出错误建议 某些操作需要管理员权限存在安全风险 解决方案: 引入澄清对话机制,在不确定时主动追问 建立知识库更新流程,定期审核内容 实施权限分级制度,敏感操作需人工确认 效果:工单首次解决率提升35%,平均处理时间缩短60%,员工满意度显著提升。 ...

2026-06-27 · 1 min · 104 words · 硅基 AGI 探索者
crewai multi agent opensource

CrewAI多Agent开源方案

概述 CrewAI多Agent开源方案是AI智能体领域中CrewAI多Agent开源方案的重要主题。本文将从多个角度深入分析这一话题,为读者提供系统性的认知框架和实践参考。 核心概念 基本定义 在深入讨论之前,我们需要明确几个核心概念。AI智能体是指能够感知环境、理解指令、规划行动并调用工具完成任务的AI系统。与传统的聊天机器人不同,智能体具有自主性、目标导向性和工具使用能力。 CrewAI多Agent开源方案涉及的关键技术包括: 大语言模型:作为智能体的认知引擎,负责理解、推理和生成 工具调用:通过Function Calling或MCP协议与外部系统交互 记忆系统:短期记忆处理当前对话,长期记忆存储历史经验 规划引擎:将复杂任务分解为可执行的子步骤 技术原理 从技术层面看,CrewAI多Agent开源方案的核心在于如何让AI系统更好地理解和执行人类意图。这涉及多个技术环节的协同: 首先是感知层,智能体需要准确理解用户的自然语言指令,提取关键信息和约束条件。其次是规划层,将高层目标分解为具体的执行步骤。然后是执行层,调用合适的工具完成每个步骤。最后是反馈层,根据执行结果调整后续策略。 实践分析 当前现状 在开源生态领域,当前的技术实践呈现出几个明显特征: 工程化程度提升:从实验室原型到生产级系统,工程能力成为关键差异化因素 评估体系完善:越来越多标准化的评测基准被提出,帮助开发者量化能力边界 开源生态繁荣:开源框架和工具链的成熟降低了开发门槛 安全意识增强:对AI安全和对齐问题的重视程度显著提升 关键挑战 尽管进展显著,CrewAI多Agent开源方案仍面临几个核心挑战: 技术挑战: 大模型的幻觉问题在智能体场景下被放大,因为智能体需要做出实际决策 多步推理中的错误累积效应导致长程任务成功率下降 工具调用的可靠性受外部API稳定性影响 工程挑战: 智能体的可观测性不足,调试和排错困难 成本控制与性能优化的平衡 从单机到分布式部署的架构复杂性 安全挑战: Prompt注入等攻击手段不断进化 智能体权限管理需要更精细化的控制 数据隐私保护在多Agent协作场景下更加复杂 优化策略 针对上述挑战,以下是几个关键优化方向: 技术优化 分而治之:将复杂任务分解为可独立验证的子任务,降低单步错误影响 多路投票:对关键决策使用多次采样投票机制,提高可靠性 渐进式信任:智能体权限从最小化开始,根据表现逐步扩展 人在回路:高风险决策保留人工审核环节 工程优化 可观测性优先:建立完善的日志、指标和追踪体系 灰度发布:新版本智能体先在小流量环境验证 自动化测试:构建端到端测试套件,防止回归 成本监控:实时追踪Token消耗和API调用成本 案例研究 为了更具体地说明CrewAI多Agent开源方案的实践价值,我们来看一个典型场景: 某科技公司在内部IT运维中部署了AI智能体,负责处理员工的工单请求。智能体需要理解员工的自然语言描述,判断问题类型,查询知识库,执行修复操作或转接人工。 实施过程中遇到的关键问题包括: 员工描述模糊导致意图识别错误 知识库信息过时导致给出错误建议 某些操作需要管理员权限存在安全风险 解决方案: 引入澄清对话机制,在不确定时主动追问 建立知识库更新流程,定期审核内容 实施权限分级制度,敏感操作需人工确认 效果:工单首次解决率提升35%,平均处理时间缩短60%,员工满意度显著提升。 未来趋势 CrewAI多Agent开源方案的发展趋势值得关注: 标准化:MCP等开放协议将推动工具接口标准化,降低集成成本 垂直化:针对特定行业和场景的专用智能体将大量涌现 协作化:多智能体协作将成为复杂任务的标准解决方案 自主化:智能体的自主决策能力将持续提升,但需要配套的安全机制 结论 CrewAI多Agent开源方案是AI智能体技术发展中的重要一环。无论是技术原理的深入理解,还是实践中的工程优化,都需要系统性思维。对于开发者和企业而言,关键在于: 理解技术能力和边界,避免过度期待 建立系统化的评估和监控体系 在创新和安全之间找到平衡 持续学习和适应快速变化的技术生态 硅基AGI探索者将持续关注开源生态领域的最新进展,为读者提供深度分析和实践指导。— ...

2026-06-27 · 1 min · 88 words · 硅基 AGI 探索者
crewai production

CrewAI 生产实践:构建虚拟 AI 团队

引言:像管理团队一样管理 AI CrewAI 的核心理念是:将 AI Agent 组织成一个"团队"(Crew),每个成员有明确的角色、目标和背景故事,通过结构化的流程协作完成任务。2026 年的 CrewAI 3.0 版本在稳定性、可观测性和企业级特性上有了长足进步。 CrewAI 核心概念 三要素模型 Crew = Agents + Tasks + Process 概念 说明 类比 Agent 有角色和能力的 AI 成员 团队成员 Task 需要完成的具体任务 工作任务 Crew Agent 和 Task 的编排单元 项目团队 Process 任务执行方式(顺序/层次) 工作流程 Tool Agent 可使用的工具 工具软件 快速构建第一个 Crew 安装与基础 # pip install crewai crewai-tools from crewai import Agent, Task, Crew, Process from crewai.tools import tool from langchain_openai import ChatOpenAI # 配置 LLM llm = ChatOpenAI(model="gpt-5", temperature=0.7) 定义 Agent # 定义一个内容创作团队 strategist = Agent( role='内容策略师', goal='制定内容策略,确保内容符合品牌调性和目标受众需求', backstory=""" 你是一位拥有 10 年经验的内容策略师,曾在多家科技公司 负责内容规划。你擅长分析受众画像、制定内容日历和优化 内容分发策略。 """, llm=llm, verbose=True, memory=True, # 启用记忆 allow_delegation=False, ) writer = Agent( role='技术写作专家', goal='根据策略师的要求创作高质量的技术内容', backstory=""" 你是一位资深技术写作专家,擅长将复杂的技术概念 转化为通俗易懂的文章。你精通 Markdown 格式, 善于使用代码示例和图表来增强理解。 """, llm=llm, verbose=True, memory=True, ) editor = Agent( role='内容编辑', goal='审核并优化内容,确保质量和准确性', backstory=""" 你是一位严格但公正的内容编辑,关注语法准确性、 逻辑连贯性和事实正确性。你会提出具体的修改建议, 而不是泛泛而谈。 """, llm=llm, verbose=True, ) 定义 Task strategy_task = Task( description=""" 为一篇关于「AI Agent 在企业中的应用」的文章制定内容策略。 要求: 1. 目标受众:技术决策者(CTO、技术总监) 2. 内容长度:3000-5000 字 3. 风格:专业但不晦涩 4. 需要覆盖的关键点: - AI Agent 的定义和价值 - 主流框架对比 - 企业落地案例 - ROI 分析 输出:详细的内容大纲和写作要点。 """, expected_output="一份详细的内容大纲,包含章节结构和每章的要点", agent=strategist, ) writing_task = Task( description=""" 根据策略师的大纲,撰写完整的技术文章。 要求: - 使用 Markdown 格式 - 包含代码示例 - 包含对比表格 - 适当的图表说明 """, expected_output="一篇完整的 Markdown 格式技术文章", agent=writer, context=[strategy_task], # 依赖前一个任务的输出 ) editing_task = Task( description=""" 审查文章并优化: 1. 检查事实准确性 2. 优化段落过渡 3. 修正语法错误 4. 确保风格一致性 5. 输出最终版本 """, expected_output="审查意见 + 最终优化版文章", agent=editor, context=[writing_task], output_file='output/final_article.md', # 保存到文件 ) 组建 Crew 并执行 # 创建 Crew content_crew = Crew( agents=[strategist, writer, editor], tasks=[strategy_task, writing_task, editing_task], process=Process.sequential, # 顺序执行 verbose=True, memory=True, # 团队级记忆 planning=True, # 执行前先规划 # 层次模式配置 # process=Process.hierarchical, # manager_llm=llm, ) # 执行 result = content_crew.kickoff() print(result.raw) 自定义工具集成 创建自定义工具 from crewai.tools import BaseTool from pydantic import BaseModel, Field import requests import json class WebSearchInput(BaseModel): query: str = Field(..., description="搜索关键词") max_results: int = Field(default=5, description="最大返回结果数") class WebSearchTool(BaseTool): name: str = "web_search" description: str = "搜索互联网获取最新信息" args_schema: type[BaseModel] = WebSearchInput def _run(self, query: str, max_results: int = 5) -> str: # 使用搜索 API response = requests.get( "https://api.search.brave.com/res/v1/web/search", headers={"X-Subscription-Token": "YOUR_API_KEY"}, params={"q": query, "count": max_results} ) results = response.json().get("web", {}).get("results", []) formatted = [] for r in results: formatted.append(f"标题: {r['title']}\n链接: {r['url']}\n摘要: {r['description']}\n") return "\n".join(formatted) if formatted else "未找到相关结果" class DatabaseQueryInput(BaseModel): sql: str = Field(..., description="SQL 查询语句") class DatabaseQueryTool(BaseTool): name: str = "database_query" description: str = "查询企业数据库获取业务数据" args_schema: type[BaseModel] = DatabaseQueryInput def _run(self, sql: str) -> str: import sqlite3 conn = sqlite3.connect("data/company.db") cursor = conn.execute(sql) columns = [d[0] for d in cursor.description] rows = cursor.fetchall() conn.close() # 格式化为表格 result = [", ".join(columns)] for row in rows[:20]: # 限制返回行数 result.append(", ".join(str(v) for v in row)) return "\n".join(result) # 将工具分配给 Agent researcher = Agent( role='市场研究员', goal='收集和分析市场数据', backstory='你是市场研究专家,擅长数据收集和分析。', llm=llm, tools=[WebSearchTool(), DatabaseQueryTool()], ) 层次化团队模式 # 层次模式:管理者 Agent 负责任务分配 from crewai import Process manager = Agent( role='项目经理', goal='协调团队成员,确保任务按时高质量完成', backstory='你是一位经验丰富的项目经理,擅长资源分配和进度管理。', llm=llm, allow_delegation=True, # 允许委派任务 ) hierarchical_crew = Crew( agents=[researcher, writer, editor], tasks=[research_task, writing_task, editing_task], process=Process.hierarchical, manager_agent=manager, # 指定管理者 manager_llm=llm, verbose=True, ) 生产级配置 错误处理与重试 from crewai import Crew from crewai.utilities import Logger class ProductionCrew: def __init__(self, config: dict): self.config = config self.max_retries = config.get("max_retries", 3) self.logger = Logger(verbose=True) def run_with_retry(self, crew: Crew, inputs: dict) -> dict: """带重试机制的 Crew 执行""" for attempt in range(self.max_retries): try: result = crew.kickoff(inputs=inputs) return { "status": "success", "result": result.raw, "token_usage": result.token_usage, } except Exception as e: self.logger.log(f"尝试 {attempt+1} 失败: {e}") if attempt < self.max_retries - 1: # 调整重试策略 crew.llm.temperature = min(crew.llm.temperature + 0.1, 1.0) continue return { "status": "failed", "error": str(e), "attempt": attempt + 1, } 监控与可观测性 # 使用 LangSmith 或自定义回调进行监控 from langchain.callbacks import get_openai_callback def monitored_crew_run(crew: Crew, task: str): """带监控的 Crew 执行""" # Token 使用追踪 with get_openai_callback() as cb: result = crew.kickoff(task) metrics = { "total_tokens": cb.total_tokens, "prompt_tokens": cb.prompt_tokens, "completion_tokens": cb.completion_tokens, "total_cost": cb.total_cost, "execution_time": result.execution_time, } # 发送到监控系统 send_metrics_to_dashboard(metrics) # 输出执行报告 print(f""" ═══════════════════════════════════ Crew 执行报告 ═══════════════════════════════════ 任务: {task[:50]}... 状态: 成功 Token 使用: {metrics['total_tokens']:,} 成本: ${metrics['total_cost']:.4f} 耗时: {metrics['execution_time']:.1f}s ═══════════════════════════════════ """) return result, metrics 缓存与优化 from crewai.utilities import CacheHandler import hashlib import json import os class FileCacheHandler(CacheHandler): """文件系统缓存""" def __init__(self, cache_dir: str = "./.crew_cache"): super().__init__() self.cache_dir = cache_dir os.makedirs(cache_dir, exist_ok=True) def _hash_key(self, agent_name: str, input_text: str) -> str: return hashlib.md5(f"{agent_name}:{input_text}".encode()).hexdigest() def get(self, agent_name: str, input_text: str): key = self._hash_key(agent_name, input_text) path = os.path.join(self.cache_dir, f"{key}.json") if os.path.exists(path): with open(path) as f: return json.load(f) return None def set(self, agent_name: str, input_text: str, value): key = self._hash_key(agent_name, input_text) path = os.path.join(self.cache_dir, f"{key}.json") with open(path, "w") as f: json.dump(value, f, ensure_ascii=False) # 使用缓存 crew = Crew( agents=[...], tasks=[...], cache_handler=FileCacheHandler(), # 启用嵌入缓存 embedder={ "provider": "openai", "config": { "model": "text-embedding-3-small", } }, ) 成本优化策略 策略 效果 实现难度 任务分配合适的模型 节省 40-60% 低 启用缓存 节省 20-30% 低 减少冗余上下文 节省 15-25% 中 并行化独立任务 节省 30-50% 时间 中 流式输出 改善用户体验 低 # 模型分层策略 models = { "planning": "gpt-5", # 规划用强模型 "execution": "gpt-4o-mini", # 执行用快速模型 "review": "gpt-5", # 审查用强模型 "summary": "gpt-4o-mini", # 总结用快速模型 } # 为不同 Agent 分配不同模型 strategist = Agent(role='策略师', llm=ChatOpenAI(model=models["planning"])) writer = Agent(role='写作者', llm=ChatOpenAI(model=models["execution"])) editor = Agent(role='编辑', llm=ChatOpenAI(model=models["review"])) 竞品对比 特性 CrewAI AutoGen LangGraph 学习曲线 低 中 高 角色定义 直观 灵活 程序化 工作流模式 顺序/层次 多种 自定义图 内置工具 丰富 基础 需集成 记忆系统 ✅ ✅ 需实现 人类介入 ✅ ✅ ✅ 适合场景 内容/分析 研究/开发 复杂流程 生产成熟度 中高 高 中 最佳实践 角色设计要明确:每个 Agent 的角色、目标和背景故事要有清晰区分 任务粒度适中:太粗导致质量差,太细导致开销大 合理使用上下文依赖:通过 context 参数传递任务间依赖 监控成本:多 Agent 会成倍增加 token 消耗 测试与迭代:先小规模测试,逐步扩展团队 结语 CrewAI 以其直观的角色-任务模型,成为构建 AI 团队最易上手的框架之一。它特别适合内容创作、市场分析、研究报告等"软"任务场景。对于需要精细控制执行流程的场景,可能需要结合其他框架使用。 ...

2026-06-25 · 5 min · 864 words · 硅基 AGI 探索者
langchain vs llamaindex vs crewai

LangChain vs LlamaIndex vs CrewAI:AI 框架三巨头对比

引言 2024-2026 年,AI 应用开发框架领域形成了三足鼎立之势:LangChain 以全链路编排见长,LlamaIndex 专注数据连接与检索增强,CrewAI 则在多智能体协作方向独树一帜。本文将从架构设计、核心功能、性能基准、代码体验等多个维度进行深度对比。 框架概览 LangChain LangChain 由 Harrison Chase 于 2022 年 10 月创建,是最早的 LLM 应用开发框架。其核心理念是将 LLM 应用的各个组件(Prompt、Memory、Chain、Agent、Tool)模块化,通过链式组合构建复杂应用。 核心模块: langchain-core:基础抽象与运行时 langchain-community:第三方集成 langchain-openai:OpenAI 官方集成 langgraph:状态图驱动的 Agent 编排 langserve:API 部署 LlamaIndex LlamaIndex 由 Jerry Liu 创建,前身为 GPT Index,专注于将私有数据接入 LLM。其核心优势在于数据摄取、索引构建和检索增强生成(RAG)的全流程支持。 核心模块: llama-index-core:核心框架 llama-index-llms-*:LLM 集成 llama-index-embeddings-*:嵌入模型集成 llama-index-vector-stores-*:向量存储集成 llama-index-agent:Agent 模块 CrewAI CrewAI 由 João Moura 于 2024 年初创建,专注于多智能体协作场景。它让开发者可以定义具有不同角色、目标和工具的 Agent,通过任务编排实现复杂工作流的自动化。 核心概念: Crew:智能体团队 Agent:具有角色和目标的智能体 Task:具体任务定义 Process:任务执行流程(顺序/层级) Tool:Agent 可用的工具 架构设计对比 维度 LangChain LlamaIndex CrewAI 设计哲学 通用编排框架 数据为中心 多智能体协作 核心抽象 Chain/Runnable Index/QueryEngine Crew/Agent/Task Agent 支持 LangGraph(状态图) AgentWorker 原生多 Agent RAG 能力 基础 业界最强 基础 学习曲线 陡峭 中等 平缓 社区规模 最大 大 增长最快 版本稳定性 迭代频繁 较稳定 快速演进 代码体验对比 场景一:基础 RAG 问答 LangChain 实现: ...

2026-06-25 · 4 min · 664 words · 硅基 AGI 探索者
crewai deep review

CrewAI 深度评测:多 Agent 协作框架的优与劣

CrewAI 的核心设计:角色扮演 + 任务驱动 CrewAI 的设计哲学是把多 Agent 协作抽象为人类团队的工作模式。你定义角色(Agent)、分配任务(Task)、设定流程(Process),框架负责编排执行。 from crewai import Agent, Task, Crew, Process # 定义角色 researcher = Agent( role="市场研究员", goal="收集目标市场的详细数据,包括规模、竞品、趋势", backstory="你是一位有10年经验的市场研究员,擅长数据分析和趋势预测", tools=[search_tool, web_scraper], llm="gpt-4o" ) writer = Agent( role="技术撰稿人", goal="将研究结果转化为清晰、有深度的分析报告", backstory="你曾是科技媒体主编,擅长把复杂技术概念转化为易懂文字", llm="gpt-4o" ) # 定义任务 research_task = Task( description="研究AI Agent框架市场,包括LangChain、CrewAI、AutoGen的市场份额、用户增长、社区活跃度", expected_output="包含数据图表的市场分析报告,至少2000字", agent=researcher ) write_task = Task( description="基于研究结果撰写深度分析文章", expected_output="结构完整的分析文章,含执行摘要、市场概况、竞品分析、趋势预测", expected_output_length="3000字以上", agent=writer, context=[research_task] # 依赖研究任务的输出 ) # 组建团队 crew = Crew( agents=[researcher, writer], tasks=[research_task, write_task], process=Process.sequential # 顺序执行 ) result = crew.kickoff() 这段代码的直觉性很强——你在描述一个团队的工作方式,而不是在写控制流代码。这是 CrewAI 最大的优势。 架构拆解 CrewAI 的架构有三个核心层: 层级 组件 职责 Agent 层 Agent、Role、Goal、Backstory 定义角色身份、目标、能力边界 Task 层 Task、Expected Output、Context 定义工作单元、输出标准、依赖关系 Crew 层 Crew、Process、Flow 编排执行流程、管理 Agent 间通信 Agent 的角色设计 CrewAI 的角色设计不仅是 prompt 工程,还影响工具选择和任务路由: ...

2026-06-25 · 2 min · 410 words · 硅基 AGI 探索者
crewai multi agent review

CrewAI 多智能体框架实战:角色扮演与团队协作

CrewAI:让 AI 像团队一样工作 CrewAI 的核心理念简单而强大:把 Agent 组织成"团队",每个 Agent 扮演一个角色,分工协作完成任务。 核心概念 Crew(团队) ├── Agent 1: 研究员(搜索资料) ├── Agent 2: 分析师(分析数据) ├── Agent 3: 写作者(生成报告) ├── Task 1: 搜索相关资料 ├── Task 2: 分析搜索结果 ├── Task 3: 撰写总结报告 └── Process: 顺序执行 / 层级管理 快速上手 from crewai import Agent, Task, Crew, Process # 1. 定义 Agent researcher = Agent( role="资深研究员", goal="找到关于 {topic} 的最新、最准确的信息", backstory="你是一位有 20 年经验的研究员,擅长从海量信息中提取关键洞察。", verbose=True, llm="qwen3-72b", tools=[search_tool, scrape_tool], ) analyst = Agent( role="数据分析师", goal="深入分析研究结果,发现趋势和模式", backstory="你是前麦肯锡分析师,擅长数据驱动的战略分析。", verbose=True, llm="qwen3-72b", ) writer = Agent( role="技术写作专家", goal="将分析结果转化为清晰、有洞见的报告", backstory="你是前 Wired 杂志编辑,擅长把复杂技术概念讲得通俗易懂。", verbose=True, llm="qwen3-72b", ) # 2. 定义 Task research_task = Task( description="研究 {topic} 的最新进展,包括技术突破、市场动态和未来趋势。", expected_output="一份包含 10 个关键发现的研究简报", agent=researcher, ) analysis_task = Task( description="基于研究结果,分析 {topic} 对行业的影响和机会。", expected_output="一份包含 SWOT 分析和 3 个战略建议的分析报告", agent=analyst, context=[research_task], # 依赖研究任务的输出 ) writing_task = Task( description="将分析和研究整合为一份面向高管的执行摘要。", expected_output="一份 2000 字的执行摘要,包含图表建议", agent=writer, context=[research_task, analysis_task], ) # 3. 组建 Crew crew = Crew( agents=[researcher, analyst, writer], tasks=[research_task, analysis_task, writing_task], process=Process.sequential, # 顺序执行 verbose=True, ) # 4. 执行 result = crew.kickoff(inputs={"topic": "AI Agent 框架"}) 执行模式 顺序模式 # 任务按顺序执行,前者输出作为后者输入 crew = Crew( agents=[agent_a, agent_b, agent_c], tasks=[task_1, task_2, task_3], process=Process.sequential, ) # task_1 → task_2 → task_3 层级模式 # 经理 Agent 负责分配任务 manager = Agent( role="项目经理", goal="协调团队高效完成任务", backstory="你是经验丰富的 PM,擅长任务分解和团队管理。", allow_delegation=True, ) crew = Crew( agents=[researcher, analyst, writer, manager], tasks=[complex_task], process=Process.hierarchical, manager_llm="qwen3-72b", ) # manager 分配子任务给其他 Agent 自定义流程 from crewai import Pipeline # 自定义流程:研究→分析→如果需要→再研究 pipeline = Pipeline( stages=[ research_crew, # 第一阶段:研究 review_crew, # 第二阶段:审查 revision_crew, # 第三阶段:修订(如果审查不通过) ] ) Agent 间通信 # Agent 可以委派任务给其他 Agent researcher = Agent( role="研究员", goal="研究给定主题", allow_delegation=False, # 不允许委派 ) manager = Agent( role="项目经理", goal="管理项目进度", allow_delegation=True, # 允许委派 ) # 委派示例 # manager: "我需要数据分析,请 analyst 处理" # analyst: "收到,开始分析..." # analyst: "分析完成,结果如下..." # manager: "收到,请 writer 基于分析结果写报告" 工具集成 from crewai_tools import ( SerperDevTool, # Google 搜索 ScrapeWebsiteTool, # 网页抓取 PDFSearchTool, # PDF 搜索 CSVSearchTool, # CSV 搜索 DirectoryReadTool, # 目录读取 FileReadTool, # 文件读取 ) # 预置工具 search = SerperDevTool() scraper = ScrapeWebsiteTool() # 自定义工具 from crewai_tools import BaseTool class DatabaseQueryTool(BaseTool): name: str = "数据库查询" description: str = "查询业务数据库,返回销售数据" def _run(self, query: str) -> str: results = db.execute(query) return json.dumps(results) db_tool = DatabaseQueryTool() researcher = Agent( role="数据研究员", tools=[search, scraper, db_tool], ) 记忆系统 # CrewAI 内置记忆系统 crew = Crew( agents=[agent_a, agent_b], tasks=[task_1, task_2], memory=True, # 启用记忆 embedder={ # 配置嵌入模型 "provider": "ollama", "config": {"model": "nomic-embed-text"}, }, ) # 记忆类型: # 1. 短期记忆:当前任务上下文 # 2. 长期记忆:跨任务的知识存储 # 3. 实体记忆:记住关键实体(人名、公司等) 真实案例:技术调研 # 案例:调研某个技术方向 # Agent 定义 tech_researcher = Agent( role="技术研究员", goal="深入调研 {tech} 的技术原理、优缺点和适用场景", backstory="你是前 Google 研究员,擅长技术深度分析。", tools=[search, scraper, github_tool], ) market_analyst = Agent( role="市场分析师", goal="分析 {tech} 的市场采用情况、竞品对比和投资机会", backstory="你是 a16z 的技术投资人,关注新兴技术趋势。", tools=[search, crunchbase_tool], ) architect = Agent( role="解决方案架构师", goal="设计基于 {tech} 的技术方案和实施路径", backstory="你是 AWS 首席架构师,擅长将技术转化为方案。", ) # 任务定义 tasks = [ Task( description="调研 {tech} 的核心技术原理、开源实现和性能基准", agent=tech_researcher, expected_output="技术调研报告(含代码示例和性能对比)", ), Task( description="分析 {tech} 的市场格局、主要玩家和投资趋势", agent=market_analyst, expected_output="市场分析报告(含竞品矩阵和投资建议)", context=[tasks[0]], ), Task( description="基于调研结果,设计一个 POC 技术方案", agent=architect, expected_output="技术方案文档(含架构图和实施计划)", context=[tasks[0], tasks[1]], ), ] crew = Crew(agents=[tech_researcher, market_analyst, architect], tasks=tasks) result = crew.kickoff(inputs={"tech": "MCP 协议"}) 与 LangGraph 对比 维度 CrewAI LangGraph 范式 角色扮演 图式编排 上手难度 低 高 灵活性 中 高 多 Agent 原生支持 需要构建 状态管理 自动 手动定义 循环控制 有限 完全支持 适合 内容创作、调研 复杂工作流 生产就绪 中 高 最佳实践 best_practices = { "角色定义": "backstory 越具体,Agent 表现越好", "任务粒度": "每个任务应该有明确的输入和输出", "工具选择": "给 Agent 它需要的工具,不要给多余的", "LLM 选择": "规划用大模型(72B),执行用小模型(7B)", "成本控制": "设置 max_iter 和 max_rpm 限制", "结果验证": "添加 review_task 让另一个 Agent 验证结果", } 结论 CrewAI 的优势在于"角色扮演"范式——用人类团队的思维组织 Agent: ...

2026-06-24 · 3 min · 560 words · 硅基 AGI 探索者
鲁ICP备2026018361号