智能体面试准备十五多智能体协作框架实战——AutoGen / CrewAI / LangGraph 对比与生产选型这一篇把多智能体Multi-Agent从会用 ChatGPT 写连环问答拉到工程化从为什么需要多智能体 → 三类主流协作模式 → 三套主流框架AutoGen、CrewAI、LangGraph的最小可运行代码 → 通信、状态、调试 → 生产选型清单。配合上一篇《ReAct Agent》和后续的《MCP》一起看刚好串成单 Agent → 多 Agent → 跨进程工具协议的完整链路。一、为什么单 Agent 不够用先讲动机。前面几篇都在讲单 Agent一个 ReAct loop 一组 tool。但工程上单 Agent 在三类场景会撞墙任务太复杂一个 Agent 同时管研究 → 检索 → 写作 → 校对 → 排版prompt 会塞得很满决策噪声变大。专业分工研究/工程/审阅天然就是不同角色单 Agent 没有角色边界就容易人格混乱。可观测性差单 Agent 一次跑完错在哪步、调谁的 prompt 没有抓手。多 Agent 的答案把任务拆成角色让每个 Agent 专注一件事。┌─────────┐ ┌─────────┐ ┌─────────┐ │ Planner │───▶│Researcher│───▶│ Writer │ └─────────┘ └────┬────┘ └────┬────┘ ▲ │ │ │ ▼ ▼ │ ┌─────────┐ ┌─────────┐ └────────│ Reviewer│◀───│ Coder │ └─────────┘ └─────────┘每个节点是一个 Agent连接表示消息/任务流向。问题被结构性分解可调试性显著提升。二、三类协作模式流水线 / 群聊 / 图状态机把市面上的多 Agent 框架掰开揉碎本质上只有三种协作模式2.1 层级Hierarchical / Orchestrator-Worker┌──────────┐ │Manager │ ← 总控决定派给谁 └────┬─────┘ ┌──────────┼──────────┐ ▼ ▼ ▼ ┌─────┐ ┌─────┐ ┌─────┐ │Worker│ │Worker│ │Worker│ ← 并行执行 └─────┘ └─────┘ └─────┘代表框架LangGraph、AutoGen 的 GroupChat Manager。Manager 看任务进度决定下一步交给谁。2.2 流水线Sequential / Crew 流程Step1 Step2 Step3 Step ──▶ Agent A ──▶ Agent B ──▶ Agent C ──▶ Done代表框架CrewAI默认 Sequential。每步有明确输入输出代码最直观。2.3 图状态机Graph / Cycles┌──▶ generate ──┐ │ │ │ │ ▼ ▼ │ retrieve reflect ── retry if bad │ │ ▲ │ ▼ │ └──── done ◀─────┘代表框架LangGraph默认图。允许有循环self-critique、re-try有条件分支。记忆口诀等级Manager 调度、流水线线性 step、图带循环的条件流。三者不是替代关系而是不同抽象层模式适合场景控制粒度调试性层级任务复杂度高、需要动态派发中Manager 决策粗中流水线流程固定、ETL 式粗按 step好图状态机需要 self-loop / 条件分支细节点级极好三、AutoGen对话驱动的多 Agent 老炮3.1 框架核心思想AutoGen微软2023 起是首个把多 Agent 对话做成工程范式的框架。每个 Agent 是一个可对话的角色通过群聊GroupChat和消息传递协作。最新版v0.4已经重构成 Actor Model但核心抽象没变Agent Chat Termination。3.2 最小可运行示例v0.2 经典 GroupChat# pip install pyautogenimportautogenllm_config{config_list:[{model:Qwen/Qwen2-7B-Instruct,base_url:http://localhost:1234/v1,# 本地 LM Studioapi_key:lm-studio,}],cache_seed:42,}# 三个角色产品经理、工程师、测试product_managerautogen.AssistantAgent(namePM,llm_configllm_config,system_message你是产品经理专注需求拆解给出清晰的 PR。,)engineerautogen.AssistantAgent(nameEngineer,llm_configllm_config,system_message你是资深后端工程师给出可运行的 Python 代码。,)testerautogen.AssistantAgent(nameTester,llm_configllm_config,system_message你是测试专家针对代码找边界 case 和潜在 bug。,)user_proxyautogen.UserProxyAgent(nameUserProxy,human_input_modeTERMINATE,code_execution_config{work_dir:coding},)groupchatautogen.GroupChat(agents[user_proxy,product_manager,engineer,tester],messages[],max_round12,)managerautogen.GroupChatManager(groupchatgroupchat,llm_configllm_config)user_proxy.initiate_chat(manager,message写一个 Python 函数输入是两个 list找出共同元素并按出现频率排序返回。,)跑起来会有 PM 拆需求 → Engineer 给代码 → Tester 挑刺 → 来回几轮UserProxy 触发 TERMINATE 终止。3.3 AutoGen 的杀手锏人类在循环里UserProxyAgent(human_input_modeTERMINATE)让人类在关键卡点介入。Tool use 天然支持register_for_llmregister_for_execution两行接入 function call。群聊的speaker selection可以替换成 rule-based / model-based做集中调度。3.4 AutoGen 的坑坑表现处理群聊 token 滚雪球几轮后 message history 巨大开cache_seed 提示精简角色退化PM 开始写代码加强 system prompt 加约束死循环Test 永远说不通过强制max_round_is_termination_msgv0.2 ↔ v0.4 API 不兼容老代码跑不起来升级到 v0.4 的 ActorModel四、CrewAI角色 任务 流程最易上手4.1 三个核心概念CrewAI 把多 Agent 建模得最直观概念含义类比Agent一个角色有 role、goal、backstory员工Task一次具体任务带 description、expected_output工单Crew一组 Agent 一组 Task 流程项目组4.2 最小可运行示例研究报告流水线# pip install crewaifromcrewaiimportAgent,Task,Crew,ProcessresearcherAgent(role高级研究员,goal调研大模型 Agent 评估方法学,backstory你是从事 Agent 评估 5 年的研究员熟悉 TRAIL、AgentBench 等基准。,verboseTrue,allow_delegationFalse,llmopenai/Qwen2-7B-Instruct,# 通过 litellm 转发)writerAgent(role技术写作者,goal把研究材料组织成结构化博客,backstory你是 CSDN 头部作者文风简洁、可执行示例多。,verboseTrue,allow_delegationFalse,)t1Task(description搜集 2023-2025 年关于 LLM Agent 评估的 5 篇核心论文总结各家的指标定义。,expected_output一段 300 字的总结 5 篇参考论文的引用。,agentresearcher,)t2Task(description基于上面研究员的总结按问题/方法/指标/数据结构写一篇博客 outline。,expected_outputMarkdown outline含 4-5 个 H2 标题。,agentwriter,context[t1],# 上一任务的输出作为输入)crewCrew(agents[researcher,writer],tasks[t1,t2],processProcess.sequential,# ← 流水线verboseTrue,)resultcrew.kickoff()print(result.raw)跑完会得到一段 Markdown outline。4.3 CrewAI 的杀手锏与坑杀手锏API 极简30 行就能搭一个 multi-agent demoProcess.sequential / hierarchical 任选context 自动串接。坑自定义 tool 依赖 LangChain tool 格式门槛偏高。allow_delegation打开后 Agent 会互相派活容易死循环。hierarchical 模式的 Manager 在生产里 token 烧得很快。五、LangGraph图状态机的专业选手5.1 核心抽象State Node EdgeLangGraph 把多 Agent 抽象成有状态的图state:TypedDict# 在节点之间传递的状态node:Callable(state)# 一个节点就是一个 Agent 或 函数edge:A→B# 普通迁移conditional_edge:A→(cond)→BorC# 条件分支允许循环self-loop、人参与interrupt、分布式持久化checkpoint。5.2 最小可运行示例Self-Critique RAG# pip install langgraph langchain-openaifromtypingimportTypedDict,Annotatedfromlanggraph.graphimportStateGraph,ENDfromlanggraph.checkpoint.memoryimportMemorySaverimportoperatorclassState(TypedDict):question:strdraft:strcritique:strn_revisions:intdefgenerate(state:State)-State:# 第一次/修订后的生成state[draft]f[draft v{state[n_revisions]}for:{state[question]}] ...returnstatedefcritique(state:State)-State:# 简单规则只要没到第3版就继续修改ifstate[n_revisions]2:state[critique]继续打磨else:state[critique]okstate[n_revisions]1returnstatedefshould_continue(state:State)-str:returngenerateifstate[critique]!okelseENDgStateGraph(State)g.add_node(generate,generate)g.add_node(critique,critique)g.add_edge(generate,critique)g.add_conditional_edges(critique,should_continue,{generate:generate,END:END})g.set_entry_point(generate)memoryMemorySaver()appg.compile(checkpointermemory)print(app.invoke({question:介绍 Flash Attention,n_revisions:0},config{configurable:{thread_id:1}}))5.3 LangGraph 的杀手锏可恢复配合checkpointer每步存盘进程崩了能 resume生产刚需。可视化app.get_graph().draw_mermaid_png()直接出架构图。可视化调试LangSmith一站式追踪每步状态。Human-in-the-loopinterrupt_before[review]直接挂起等人工。5.4 LangGraph 的坑坑处理上手曲线比 CrewAI 陡把 State 写好是关键推荐写 Pydantic Schema节点多 token 累计用 summarize reducer 压缩checkpoint 选型本地 MemorySaver 仅测试生产上 Postgres / Redis 持久化六、横向对比AutoGen vs CrewAI vs LangGraph这是面试最常问的这三个有什么区别怎么选维度AutoGenCrewAILangGraph核心抽象Agent Chat GroupChatAgent Task CrewState Node Edge协作模式主要群聊/对话主要 Sequential/Hierarchical图状态机上手成本中低最直观中高可恢复/持久化手动 save_state内置 memory原生 checkpointer人类介入内置 UserProxy需自己实现interruptAPI可观测性tracing 内置简易 loggingLangSmith 一流适合规模中型5–15 个 Agent小型2–5 个 Agent大型条件分支、循环多生态微软 backing迭代快创业公司爆发增长LangChain 嫡系势能最大生产稳定性中API 仍在演进中新高v0.2 相对稳定一句话选型口诀想 30 行搭个 demo → CrewAI群聊多 要人去批准 → AutoGen复杂工作流 / 条件分支 / 自循环 → LangGraph七、通信与状态的工程化设计真正在生产里跑多 Agent 时决定能不能扛住的是通信和状态层下面是几个绕不开的工程点。7.1 三种通信模式模式描述实现共享 Memory Bus所有 Agent 读同一个状态LangGraph State、AutoGen GroupChat点对点 RPCA 调用 B 的 tool直接函数调用消息队列Kafka / Redis Stream 异步解耦跨进程/跨机多 Agent7.2 状态序列化State 必须可序列化pickle / JSON ↓ 否则进程崩了恢复不了 checkpoint 选 Postgres / Redis ↓ 才能跨实例 HA7.3 调试与可观测性结构化日志每个 Agent 每个 turn 打一条{role, input_tokens, output_tokens, latency, tool_calls}。Trace View把整轮对话可视化LangSmith、AutoGen Studio、CrewAI Studio。Replay同一段历史能 Rerun 而不污染结果必须把随机 seed 抽出来。7.4 一个常见反模式用 CrewAI 跑了 10 个 Agent 全程顺序执行结果发现一个 bug 需要返工整条流水线最后等 5 分钟才出结果。反模式的本质把多 Agent 当黑盒流水线失败没有 partial rollback。LangGraph 的状态化设计才是答案每个节点独立可重试状态可落盘。八、生产选型清单10 条下面这 10 条直接当 checklist 用Agent 数 ≤ 3 时单 Agent 强 prompt 通常胜过多 Agent——别为了看起来高级上多 Agent。多 Agent 上线的第一原则每个 Agent 必须有清晰的输入契约 输出契约。token 成本管理用蒸馏过的小模型当Worker大模型留作Manager。必须有 termination 条件max_round、token budget、超时、人类审批任选其一。必须有结构化日志否则排障靠运气。prompt 独立可热更新每个 Agent 的 system_prompt 配置化。Agent 之间传消息要用结构化 schemaPydantic / TypedDict别传自由文本。失败重试 状态补偿每个节点都要可独立重试。批 / 流二选一长任务用 Kafka / 状态机短任务用 in-memory 群聊。评估闭环把上一讲《Agent 评估体系》的指标直接接进来没指标的多 Agent 不可维护。九、面试一句话串讲 高频追问9.1 一句话串讲多 Agent 是把复杂任务按角色拆开三种协作模式——层级Manager 调度、流水线Step-by-Step、图状态机带循环分支。AutoGen 走对话群聊、CrewAI 走 RoleTask流程、LangGraph 走 StateNodeEdge。生产选型时 LangGraph 最稳定、CrewAI 最快上手、AutoGen 群聊最易做人在环。9.2 高频追问清单Q多 Agent 和单 Agent 哪个效果好A看任务。Google DeepMind 2024 的研究显示多 Agent 在复杂决策、推理类任务上有提升但 token 成本成倍增加。QAutoGen 的 GroupChat Manager 怎么指定下一步发言A默认auto用 LLM 选可自定义speaker_selection_method。QCrewAI 的 context 字段是干嘛的A把前置 task 的输出塞给当前 task 的 prompt免去显式变量传递。QLangGraph 怎么暂停等人工Agraph compile(interrupt_before[review])跑到 review 节点挂起。Q三个框架底层都用什么A都基于 LiteLLM / OpenAI 兼容协议做模型调用tool use 走 function calling。Q如何避免多 Agent 死循环Amax_round token budget 终止信号_is_termination_msg。Q怎么评估多 Agent 系统A上一讲Agent 评估的三件套轨迹质量、工具调对率、端到端成功率。Q多 Agent 适合并行吗A可以但需要 Manager 提前规划、并保证节点无共享状态竞态。Q状态崩了怎么恢复ALangGraph 用 checkpointerAutoGen 用save_state/load_stateCrewAI 自带 memory。Q多 Agent 怎么上 RAGA把retriever做成一个 Agent 节点其他 Agent 通过 tool call 调用。十、配套代码仓库与下一步我已经把三套最小可运行示例放到了项目模板里目录结构如下multi-agent-lab/ ├── autogen_groupchat.py # AutoGen 三人组群聊 ├── crewai_research_crew.py # CrewAI 研究员作者 ├── langgraph_self_critique.py # LangGraph 带循环的状态机 └── requirements.txt # openai, pyautogen, crewai, langgraph下一讲十六会进入Agent 安全 / 越狱防护——把工具不能瞎调和prompt 注入防御一次讲透并配合一篇独立的安全评估报告。如果你已经在做企业 Agent欢迎在评论区告诉我你们的部署栈下一篇可以更贴近你的真实场景写。十一、给面试官的项目话术模板我做过一个内容生产 pipeline三 AgentResearcher / Writer / Reviewer跑在 LangGraph 上每个节点用 7B 模型跑Manager 用 32B。打分式 Reviewer 不达标就回炉最多 3 次。跑了两个月 P99 latency 1.4 秒端到端可重放因为每个节点都接在 Postgres checkpointer 上。——把上面这句话背熟足够应付 80% 的多 Agent 面试追问。写在最后多 Agent 不是银弹它是把 prompt 工程决策权结构化的工具。一旦你能在白板上画清楚 State / Node / Edge 三件套CrewAI、AutoGen、LangGraph 哪个都能 30 分钟入手。下一篇收尾Agent 安全专题后会开《智能体应用落地》系列从 RAG、工具调用、监控讲完整链路。明天继续。