LangChain与AutoGen对比:深度解析Agent框架选择标准,助你做出明智决策!
随着 2024–2025 年 AI Agent 的兴起,业界涌现出多款 Agent 框架。本文对比当前流行的框架。包括 LangChain、LangGraph、AutoGen、CrewAI、smolagents、OpenAI Swarm 和 OpenManus,分析它们的核心能力、功能特性、学习成本,并给出适用场景和推荐使用者类型。希望为想上手 AI Agent 开发的读者提供一份全面的指南。
随着 2024–2025 年 AI Agent 的兴起,业界涌现出多款 Agent 框架。本文对比当前流行的框架。
包括 LangChain、LangGraph、AutoGen、CrewAI、smolagents、OpenAI Swarm 和 OpenManus,分析它们的核心能力、功能特性、学习成本,并给出适用场景和推荐使用者类型。
希望为想上手 AI Agent 开发的读者提供一份全面的指南。
一、LangChain:模块化 LLM 应用开发框架
1.1 核心定位与技术栈
LangChain 是 2022 年发布的开源框架,最初用于简化 LLM 应用开发。
它提供 Python 和 JavaScript 库,模块化封装了与 LLM 集成、提示词管理、对话记忆以及工具使用等功能,方便开发者将大语言模型与外部数据源或软件流程相集成。
LangChain 作为通用接口支持几乎所有主流 LLM,通过组合 Prompt、Memory、Tool 等模块,可以快速构建聊天机器人、智能问答等复杂应用。
它内置了丰富的工具库(如搜索、计算器、数据库查询等),并支持将多个模型连接起来完成不同子任务。
总之,LangChain 提供了一个现成且可扩展的 Agent 开发框架,开发者无需从零实现工具选择、推理循环或提示格式等底层逻辑。

图 1. LangChain:模块化 LLM 应用开发框架
1.2 功能特性
传统的 LangChain Agent 多采用 ReAct 模式,即 LLM 按照「观察-思考-行动」循环调用工具,直到完成任务。
多 Agent 支持方面,早期 LangChain 主要是一对一 Agent 执行,但通过将一个 Agent 的输出作为另一个 Agent 的输入,或借助子链,也可以实现多智能体协作。
为更好地支持多 Agent 协同、复杂流程和人类审批等高级功能,LangChain 之后推出了独立子框架 LangGraph。
工具调用是 LangChain 的强项:官方提供了大量现成工具插件,并允许开发者自定义 Tool 接口,使 Agent 能调用外部 API、数据库、代码执行等操作。
记忆机制上,LangChain 有短期对话记忆和长期向量库检索等模块,可让 Agent 保持上下文。
流程控制则通常通过 Chains 或自行编写控制逻辑实现(如顺序链、条件判断等),在复杂流程上略显局限。
LangChain 本身不包含可视化界面,但支持和第三方前端(如 LangFlow)集成;其官方提供的 LangSmith 平台则侧重于 Agent 执行的日志追踪和评估。
1.3 代码示例
下面代码创建了一个 LangChain Agent,并配置一个简单的天气查询工具。
Agent 使用指定的 LLM 模型,接受用户输入并自动决定是否调用工具来生成答案。
from langchain.agents import create_agent
# 定义一个简单工具函数:返回给定城市的天气(这里固定返回晴天字符串)
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
# 初始化 Agent,指定语言模型、工具列表和系统提示
agent = create_agent(
model="gpt-4o-mini", # 指定模型(需预先设置好API密钥)
tools=[get_weather], # 将我们定义的get_weather函数作为工具提供给Agent
system_prompt="You are a helpful assistant", # 系统提示:定义Agent的角色和行为
)
# 运行Agent:传入用户消息,Agent将自动选择是否调用工具并返回答案
response = agent.invoke({
"messages": [{"role": "user", "content": "What is the weather in SF?"}]
})
print(response)
上述代码中,Agent 会读取系统提示,接收用户提问 “What is the weather in SF?”,并通过推理决定调用我们提供的 get_weather(“SF”) 函数工具。
由于该函数简单返回晴天结果,最终 Agent 会回答类似 “It’s always sunny in SF!” 的句子。
这个示例演示了 LangChain Agent 基本的工具使用流程:定义工具 -> 初始化 Agent -> 调用 Agent 处理消息。
1.4 使用成本与学习曲线
作为最快增长的开源项目之一,LangChain 拥有活跃的社区与详尽的文档教程。这降低了入门门槛,新手可以通过丰富的示例快速上手常见用例。
然而,LangChain 功能广泛、模块众多,要真正掌握其最佳实践仍需一定学习成本。
对于简单需求,调用几个现有组件即可,但要构建复杂 Agent 系统,开发者需要理解 Prompt 设计、Agent 决策过程以及调优。
这使得 LangChain 的学习曲线呈现出一种 “前平后陡” 的特点——入门容易,但精通和排错需要经验积累。幸运的是,社区分享的经验和官方指南有助于缓解这一问题。
1.5 典型应用与适用者
凭借丰富的工具生态和稳定的框架,LangChain 适合快速搭建原型和常规的 LLM 应用。
例如,利用 LangChain,开发者可以轻松构建一个集成网络搜索和计算器工具的问答 Agent,解决开放领域的问题。
对于希望快速实现 LLM 调用工具、不涉及复杂多 Agent 交互的场景,LangChain 是理想选择。
它适用于对代码能力要求不高的开发者、数据科学家以及希望探索 LLM 应用的入门者。
总的来说,如果你的任务是单智能体为主、关注工具集成且需要成熟社区支持,LangChain 会是首选方案。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

二、LangGraph:基于图的高级 Agent 工作流
2.1 核心定位与技术栈
LangGraph 是 LangChain 官方推出的开源 Agent 编排框架,旨在以有向图结构实现复杂智能体工作流。它建立在 Python 生态之上,可与 LangChain 无缝结合,也可单独使用。
LangGraph 引入了 “节点” 和 “边” 的概念:
- 每个节点代表一个操作(可以是函数调用、子 Agent 等)
- 边则定义节点之间的执行顺序或条件跳转
通过这种可循环的图形结构,LangGraph 可以表示复杂的逻辑,包括分支判断和循环回路,突破了传统 LangChain 链式调用线性、无环的限制。
其设计理念是在 Agent 工作流中维护一个全局状态对象,让所有节点共享上下文,从而实现持久化和错误恢复。
LangGraph 内置了对话记忆(短期 + 长期)的支持,并能够与第三方长时记忆库(如 Zep 向量存储)集成。
总体而言,LangGraph 为构建复杂、多步骤、多角色的 Agent 流程提供了强大的基础。

图 2. LangGraph:基于图的高级 Agent 工作流
2.2 功能特性
相较于 LangChain 原有 Agents,LangGraph 提供了多项增强:
- 结构升级:由线性链变为通用图,支持循环和条件分支。
- 状态管理:状态管理和持久化由框架自动处理,不再需要人工维护中间结果。
- 人机协同:在图的特定节点插入人工审核步骤,暂停 Agent 执行等待人为确认或编辑,然后再继续流程。
- 多 Agent 协作:开发者可以在图中定义多个 Agent 节点,让它们共享状态、互相传递信息。
借助这些特性,LangGraph 能优雅地实现诸如:
- 多轮工具调用(Agent 反复调用工具完善答案)
- 分布式子任务(不同 Agent 负责不同任务链路)
- 人机协同(关键步骤由真人确认)
等高级场景。这些都是传统 LangChain 实现起来非常繁琐的。
2.3 代码示例
下面通过一个最小示例演示 LangGraph 的使用方式。该示例构建了一个简单的有向状态图,包含两个节点,节点之间按固定顺序执行,并通过共享状态在节点间传递数据。
from langgraph.graph import START, StateGraph
from typing_extensions import TypedDict
# 定义全局状态结构。LangGraph 使用 State 来描述节点之间流转的数据。
class State(TypedDict):
text: str
# 定义两个节点函数。每个节点接收当前状态,并返回对状态的增量更新。
def node_a(state: State) -> dict:
return {"text": state["text"] + "a"}
def node_b(state: State) -> dict:
return {"text": state["text"] + "b"}
# 构建状态图并注册节点与边关系。执行顺序:先 node_a,后 node_b。
graph = StateGraph(State)
graph.add_node("node_a", node_a)
graph.add_node("node_b", node_b)
graph.add_edge(START, "node_a")
graph.add_edge("node_a", "node_b")
# 最后对图进行编译并执行。LangGraph 会按照图结构依次调用节点,并自动合并每一步返回的状态更新。
result = graph.compile().invoke({"text": ""})
print(result)
# {'text': 'ab'}
这个示例展示了 LangGraph 的核心思想:将执行流程从代码控制流中抽离,显式表示为一个有向图结构,并通过共享状态驱动节点执行。
在更复杂的场景中,这种方式可以自然扩展到条件分支、循环、多 Agent 协作等复杂工作流。
2.4 使用成本与学习曲线
由于引入了状态机和图模型,LangGraph 的学习门槛相对高于 LangChain 基础用法。
开发者需要熟悉节点 / 边 / 状态等新概念,并掌握 LangGraph 提供的 API(如定义 StateGraph、添加节点和边、编译执行等)。
不过,LangGraph 的抽象设计清晰,一旦理解图编排思想,对于复杂流程的实现反而简化了代码逻辑。框架提供了一些预构建 Agent(如 ReAct 图模板)来帮助上手。
目前 LangGraph 的社区规模不及 LangChain 主框架,但官方文档和教程(如 LangChain Academy 专题课程)对关键概念有详细解释。
总的来说,掌握曲线略陡,需要一定时间摸索图式工作流的范式,但对于需要应对复杂业务逻辑的开发者来说,这一投入是值得的。
2.5 典型应用与适用者
LangGraph 适用于长流程自动化和复杂决策树类的 Agent 场景。
例如,在企业流程自动化中,一个任务可能需要多个步骤、多种判断——使用 LangGraph 可以将每个步骤封装为节点,定义条件分支,甚至在关键节点加入人工确认,实现人机协同的流程机器人。
在技术实践上,LangGraph 常被用于打造多工具交互的智能体,如:先搜索资料 → 再分析总结 → 复核结果
这类需要循环调用工具的任务。
对于高级开发者、对 Agent 稳定性和可控性要求很高的项目,以及需要多 Agent 并行协作的场景,LangGraph 是理想选择。
它更适合追求精细流程控制的团队(如希望引入 QA 审核、人为验收环节),以及在 LangChain 基础上遇到瓶颈、需要更强大编排能力的用户。
三、AutoGen:微软多智能体对话编排框架

图 3. AutoGen:微软多智能体对话编排框架
3.1 核心定位与技术栈
AutoGen 是由微软研究院开源的多智能体对话框架,旨在通过让多个 AI Agent 互相对话合作来解决任务。
它支持 Python 和 .NET 平台,采用异步事件驱动架构,擅长构建长期运行的复杂 Agent 工作流。
AutoGen 提供了高级抽象来定义不同类型的 Agent(如用户 Agent、助手 Agent、工具 agent 等),以及它们之间的交互模式。
例如开发者可以设定一个“经理” Agent 和多个“专家” Agent,让经理分配任务,专家各自处理后再由经理汇总。
在设计理念上,AutoGen 强调灵活性和可扩展性,鼓励使用自然语言对话来驱动 Agent 协作。
值得注意的是,AutoGen v0.4 进行了架构重构,引入了更健壮的异步消息通信、插件式组件和跨语言协同等特性。
总的来说,AutoGen 是一个偏研究和开发用的平台,方便快速尝试 Agentic AI 新想法,同时具有一定工程能力。
3.2 功能特性
AutoGen 最核心的能力在于多 Agent 协同对话。开发者可以轻松创建任意数量的 Agent,让它们在一个对话频道中互发消息、询问与解答,从而共同推进任务。
框架内置了几种典型 Agent 角色,例如:
- AssistantAgent:AI 助手,用于解决问题
- UserProxyAgent:模拟人类用户
- CriticAgent:评论员 / 审查者
这些可以组合出各种对话模式。
AutoGen 还支持人类 Agent——可以把真人作为一个特殊 Agent 插入对话,实现实时的人机协同。
相比其它框架,AutoGen 的一个特色是 对话驱动的工具调用:Agent 可以在对话中请求使用某个工具,由框架捕获并执行,再将结果反馈进对话。通过这种方式,工具使用被自然地融入了多 Agent 对话流程。
AutoGen v0.4 加强了观察与调试能力,引入 OpenTelemetry 集成 用于监控日志,便于开发者跟踪每个 Agent 的行为。
此外,AutoGen 支持分布式部署,可以在多个进程或机器上运行不同 Agent,适应大规模场景。
总体而言,AutoGen 提供了高度自由的对话式编排能力,适合复杂交互场景。
3.3 代码示例
以下示例使用 AutoGen 定义了两个对话智能体(ConversableAgent),分别扮演名为 Cathy 和 Joe 的喜剧演员角色,然后通过 initiate_chat 方法让其中一个智能体开始与另一个对话。
import os
from autogen import ConversableAgent
# 创建第一个Agent,名为 Cathy,扮演喜剧演员角色
cathy = ConversableAgent(
"cathy",
system_message="Your name is Cathy and you are a part of a duo of comedians.",
llm_config={"config_list": [
{"model": "gpt-4o-mini", "temperature": 0.9, "api_key": os.environ.get("OPENAI_API_KEY")}
]},
human_input_mode="NEVER" # 不需要人类输入,完全自主
)
# 创建第二个Agent,名为 Joe,扮演另一位喜剧演员
joe = ConversableAgent(
"joe",
system_message="Your name is Joe and you are a part of a duo of comedians.",
llm_config={"config_list": [
{"model": "gpt-4o-mini", "temperature": 0.7, "api_key": os.environ.get("OPENAI_API_KEY")}
]},
human_input_mode="NEVER"
)
# 让 Joe 主动向 Cathy 发起对话,请求讲一个笑话,限制对话来回 2 个回合
result = joe.initiate_chat(
cathy, message="Cathy, tell me a joke.", max_turns=2
)
print(result)
运行上述代码,joe 会向 cathy 发送消息:“Cathy, tell me a joke.”,两位智能体将自动交流两个回合,各自根据角色产生笑话对话。
例如,Cathy 可能回复一个科学笑话,Joe 接着回应自己的笑话,两人来回各讲一个段子。整个对话保存在 result 中。
这个例子直观演示了 AutoGen 的多Agent聊天流程:我们定义好每个 Agent 的角色和个性(通过 system message 和参数配置),然后它们就能在无需人类介入的情况下连续对话。
AutoGen 能让开发者方便地创建类似“多个GPT在同一房间讨论/合作”的场景,对于复杂任务可以扩展出经理-员工、多专家协作等模式。
3.4 使用成本与学习曲线
作为微软出品的框架,AutoGen 文档相对专业全面,但学习曲线偏陡。特别是在 0.4 版本更新后,框架接口和理念有所调整,开发者需要花时间理解其事件驱动模型和异步编程风格(Agent 通过 async 消息通信)。
相比 LangChain,AutoGen 抽象层次更高,封装了很多交互细节,这虽然减少了样板代码,但也让问题排查变得不直观。
另外,多 Agent 对话的调试本身就有挑战,需要关注不同智能体间的消息传递。
好在 AutoGen 有活跃的官方交流群,也有微软工程师参与支持。但目前来看,AutoGen 更适合有一定并发编程和 AI 对话系统经验的开发者。
3.5 典型应用与适用者
AutoGen 的典型用例之一是在代码生成与协作场景:
- 一个“编程助手” Agent 撰写代码
- 另一个“审查员” Agent 审校
- 必要时再由人类开发者介入调整
最终三方协作完成任务。这种人类 + AI 多智能体协同编程正是 AutoGen 所擅长的。
又如构建一个研究型 Agent 系统:让数个 Agent 分别担任检索、摘要、撰稿等角色,协同撰写一篇论文综述。
AutoGen 非常适合需要反复讨论、逐步细化方案的任务场景,因为多个 Agent 之间可以通过对话充分交换信息。
推荐使用者方面,AutoGen 更适合:
- 科研人员或对新技术敏感的开发者
- 用于探索前沿的 Agent 协作模式(如自我反思、互相监督等复杂对话)
此外,对于有 .NET 平台需求的企业用户,AutoGen 也提供了跨语言支持。
需要强调的是,AutoGen 目前版本仍是开源社区主导,遇到问题可能需要自行解决或等待社区修复,不太适合对稳定性要求极高的纯商业项目。
四、CrewAI:类团队协作的多 Agent 编排
4.1 核心定位与技术栈
CrewAI 是一个开源的多智能体编排框架,基于 Python 创建,强调通过角色分工的自主智能体小组(crew)来协作完成任务。
与很多框架依赖 LangChain 不同,CrewAI 宣称自己是“独立且轻量”的方案,无需大型依赖即可高效运行。
它通过 YAML 配置 + Python 装饰器 相结合的方式来定义 Agent 团队:
- 在 YAML 配置文件中声明多个 Agent 的角色、目标和背景,以及任务列表
- 在代码中通过装饰器生成这些 Agent 和任务
- 最后编排成一个 Crew 流程执行
CrewAI 既支持顺序执行的流程,也支持层次化流程:后者会自动生成一个“经理” Agent 来协调多个子任务 Agent,进行任务分配和结果验证。
值得一提的是,CrewAI 内置了丰富的工具库,包括对 RAG(检索增强生成) 的支持、自定义搜索工具(如 JSON、GitHub、YouTube 等)以及与 LangChain 工具的集成。
总体而言,CrewAI 倾向于提供一个开箱即用的多 Agent 协作框架,以最小的样板代码实现强大的任务自动化。

图 4. CrewAI:类团队协作的多 Agent 编排
4.2 功能特性
CrewAI 的核心在于多 Agent 团队的定义与协调。它鼓励用户将每个 Agent 看作团队中的一个成员,赋予明确的角色和目标。
这些 Agent 可以各自使用不同的 LLM 模型和工具,相互之间通过框架内置的通信机制进行任务委派和提问。
CrewAI 为 Agent 提供三大属性:
- 角色(role)
- 目标(goal)
- 背景(backstory)
确保每个 Agent 都有清晰的 persona。
在协作模式上,CrewAI 灵活支持:
- 线性流水线(预定义任务顺序)
- 分层控制(自动加经理 Agent 统筹)
- 自定义流程组合
框架注重自治行为,允许 Agents 根据需要自主发起与其他 Agent 的交互或任务请求。同时也兼顾可控性,用户可以选择用精确的 Flow 来定义固定的执行顺序。
记忆管理方面,CrewAI 与 LangChain 集成,提供了内置的记忆对象,可同时处理短期和长期记忆,并对关键信息自动生成嵌入向量,方便 Agent 检索。
在工具使用上,CrewAI 既有自己的 Toolkit,也能无缝调用 LangChain 上百种现有工具。
值得一提的是,CrewAI 还支持引入人类输入作为流程的一环(官方示例中展示了如何等待人类在执行过程中提供额外信息),体现了一定程度的 human-in-the-loop 能力。
综合来看,CrewAI 以“多人合作”范式重新诠释了 Agentic AI,可看作是在高层抽象上实现了一个模拟人类团队工作的 AI 系统。
4.3 代码示例
下面代码演示如何使用 CrewAI 定义一个“研究员”智能体,并赋予它一个简单的网络搜索工具,然后通过 kickoff() 方法直接与该 Agent 互动,让它回答一个问题。
from crewai import Agent
from crewai_tools import SerperDevTool
# 创建一个Researcher智能体,具备搜索工具
research_agent = Agent(
role="Research Analyst",
goal="Find and summarize information about specific topics",
backstory="You are an experienced researcher with attention to detail.",
tools=[SerperDevTool()], # 集成谷歌搜索工具(需配置 SERPER_API_KEY 环境变量)
verbose=True # 输出详细日志,便于观察执行过程
)
# 直接与智能体交互,提问一个问题(让智能体自行利用工具找到答案并总结)
result = research_agent.kickoff("What are the latest developments in AI for 2025?")
print(result)
在这个示例中,我们定义了一个角色为“研究分析员”的 Agent,设定了其目标和背景,并给它配备了一个第三方搜索工具。
当使用 kickoff() 方法向智能体提出询问时,CrewAI 框架会让该 Agent 自动调用 Serper 搜索API获取最新资料,并整理出结果回答。
通过 kickoff 直接交互,我们无需设置完整的任务流程即可测试单个 Agent 的功能。
实际应用中,CrewAI 可以将多个此类 Agent 组成一个协作团队(Crew),由一个 Manager 协调多个角色顺序执行。
例如,我们可以有一个 Researcher 负责检索数据,交给 Writer 撰写报告,再由 Reviewer 校对——这些都能通过 CrewAI 的流程编排来实现。
总之,CrewAI 为多智能体的分工协作提供了灵活的架构,初学者可以先从单Agent工具调用开始,逐步拓展到多Agent协同。
4.4 使用成本与学习曲线
CrewAI 强调简洁与开发者体验。借助命令行工具,用户可以通过 crewai create 快速生成项目模板,包含示例 Agents 和任务配置。
这种配置驱动的开发方式让初学者易于上手,只需修改 YAML 即可定义自己的 Agent 团队。
然而,要充分发挥 CrewAI 威力,仍需理解其装饰器模式和流程机制。例如顺序流程和分层流程在定义和运行上有所区别,需要根据场景选择 Process.sequential 或 Process.hierarchical 等模式。
总体来看,CrewAI 文档完善,学习曲线中等:有一定 Python 基础的开发者可以较快上手简单应用,但若要设计复杂的自定义流程,仍需仔细研读文档和源码。
一个可能的挑战是,CrewAI 虽标榜独立于 LangChain,但在高级功能(如工具集成)上涉及 LangChain 生态,开发者可能需要同时熟悉部分 LangChain 用法。
不过,相比直接使用 LangChain 实现多 Agent,CrewAI 已大幅降低了心智负担——正如其开发者所描述,CrewAI 致力于提供简单、灵活且精确可控的多 Agent 编排。
4.5 典型应用与适用者
CrewAI 适合流程明确的任务协作场景。例如,在客户支持领域,可以构建一个 CrewAI 智能体团队:
- “客服 Agent” 与用户对话收集问题
- “专家 Agent” 处理技术问题
- 由 CrewAI 协调整个流程并最终回复用户
又如文档分析领域,可以有:
- “检索 Agent” 负责查找资料
- “总结 Agent” 负责整理要点
- 经理 Agent 将结果交由人类审核
- “撰稿 Agent” 生成报告
这样的多专家协作流程,用 CrewAI 实现会比普通框架简单得多。
推荐使用者方面,如果你是一名对多 Agent 自治系统感兴趣的开发者,希望快速构建一个 Agent 团队来自动化复杂任务,CrewAI 会是很好选择。
它也适合企业中对流程合规要求高的场景,因为可以在流程中插入审批节点。
有用户反映 CrewAI 早期版本存在一些不成熟之处(例如可能遇到 Bug 或局限),因此对于关键业务,需充分测试验证。
整体而言,CrewAI 更偏向追求高定制、多 Agent 协同的应用,适合有一定编程功底,愿意尝试新兴框架的开发者。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

五、smolagents:工具即代码的极简 Agent
5.1 核心定位与技术栈
smolagents(Hugging Face Agents) 是 Hugging Face 在 2023 年推出的 Agent 框架。
smolagents 最大的特点是轻量简洁——整个库据称只有约一千行代码,却提供了构建智能体的基本积木。它使用 Python 实现,与 Hugging Face Hub 深度集成。
smolagents 的设计理念是:让 LLM 直接编写可执行代码来调用工具,从而解决问题。
换言之,在 smolagents 框架中,Agent 的行动不再通过生成 JSON 或特定格式再由框架解析执行,而是直接让模型产出 Python 代码片段,框架立即运行该代码完成工具调用。
这种 “Code as Actions” 的模式,使得 Agent 的行为更直观高效,也更贴近当下大模型擅长的编程能力。
smolagents 对底层 LLM 没有限制,支持 Hugging Face Hub 上的任意模型以及 OpenAI API 等,通过一个统一接口来驱动 Agent。
总的来说,smolagents 是一个面向开发者的极简 Agent 框架,适合快速原型和实验。

图 5. smolagents:工具即代码的极简 Agent
5.2 功能特性
smolagents 聚焦于单 Agent 工具使用场景,同时也支持简单的多 Agent 层次结构(例如让一个 Agent 调用另一个 Agent 作为工具)。
它提供了多模态工具的便利集成,例如:
- 调用 Hugging Face 上的图像生成模型
- 文本摘要模型
- 其他推理模型
这些都已有现成 Tool 封装,可一行代码加载。
Agent 本质上是一种特殊的 代码智能体(CodeAgent),其执行流程是:
- LLM 根据提示生成包含对工具函数调用的代码字符串;
- 框架执行该代码并将结果返回模型;
模型再继续生成下一步代码,直至得到最终答案。
由于以代码为媒介,Agent 可以灵活地进行逻辑控制,如在生成的代码里使用循环、条件判断、定义子函数等——这些传统 JSON 工具调用模式难以实现的复杂操作,在 smolagents 中水到渠成。
安全性方面,smolagents 考虑到执行任意代码的风险,提供了沙箱机制来运行模型产出的代码,防止恶意或错误代码危害系统。
需要说明的是,smolagents 天生偏向短对话单任务,并未内置像长对话记忆、交互式多轮对话管理等功能,不过开发者可以借助外部存储或让 Agent 将上下文作为变量写入代码来实现记忆。
一句话总结:smolagents 提供了简洁但强大的工具调用能力,充分利用了大模型的编程特长,使得 Agent 像一个“小程序”那样完成任务。
5.3 代码示例
下面的示例创建了一个 smolagents 的 CodeAgent,加载 DuckDuckGo 搜索工具和一个 Hugging Face Hub API 模型,然后 Agent 被要求回答一个需要外部知识和推理的问题。
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
# 初始化 Agent,配置一个DuckDuckGo搜索工具和HuggingFace模型
agent = CodeAgent(
tools=[DuckDuckGoSearchTool()], # 工具:DuckDuckGo 搜索引擎(无需Google API)
model=HfApiModel() # 使用HuggingFace提供的开放模型API
)
# 提出问题:智能体需要先搜索Pont des Arts的长度和猎豹速度,再计算时间
query = "How many seconds would it take for a leopard at full speed to run through Pont des Arts?"
response = agent.run(query)
print(response)
在此示例中,我们的问题是:“一只猎豹全速跑过巴黎艺术桥需要多少秒?”。
这需要先获取Pont des Arts(艺术桥)的长度和猎豹的奔跑速度,再进行计算。
smolagents 的 CodeAgent 会将这个任务分解为代码形式的行动,例如调用 DuckDuckGoSearchTool 查询艺术桥长度,然后根据搜索结果计算时间。
整个过程中,Agent 的行为逻辑(搜索→计算)是通过让 LLM 生成代码并执行来完成的。
因此,我们只需一行 agent.run(query) 调用,就能让 Agent 自主地决定步骤并给出答案。
smolagents 框架使这一切变得非常简洁:开发者无需手动编排复杂的 prompt 或循环,Agent 自己会在内部迭代,直至得出最终结果。
5.4 使用成本与学习曲线
smolagents 以极简 API著称,初学者只需了解几个核心类(如 CodeAgent、Tool)即可开始编写 Agent。
例如要创建一个能上网搜索并生成图片的智能体,只需准备对应的搜索和图像生成工具,然后用几行代码实例化 Agent 并运行提示即可。
相较于其他框架需要配置复杂的 Prompt 模板或 Agent 逻辑,smolagents 更接近直接操作 LLM,因此学习曲线非常平缓。
大多数使用过 HuggingFace Transformers 的开发者可以零门槛上手,因为其范式与调用模型、执行推理相似。
同时,smolagents 社区也在快速增长,官方推出了 Agents 课程和 Cookbook,涵盖从基础到高级的教程。
不过,简洁也意味着功能有限:当需求超出单 Agent 调用工具的范畴时(比如复杂决策、多 Agent 长程交互),开发者可能需要自行扩展 smolagents 或换用更重型的框架。
因此:对于追求极致简单的场景,smolagents 几乎没有学习负担;对于复杂场景,则需要有将问题拆解为“LLM + 代码工具”组合的能力。
5.5 典型应用与适用者
smolagents 适合轻量级的 AI 助手开发。例如,可以快速实现一个能够上网搜索问题答案、并自动生成相应图片的多模态助手。
又或者,一个财经助手可以调用金融 API 获取股票数据然后进行计算,这些都可以通过 LLM 产出代码来完成。
由于其对本地模型支持良好,smolagents 也适合离线环境或对数据隐私有要求的应用,开发者可以使用自己的本地模型作为智能体的大脑。
推荐使用者包括:
- 希望在最短时间内打造 Agent 原型的黑客和研究人员;
- 注重定制工具调用逻辑的开发者(因为直接写 Python 代码最灵活);
- 偏好 Hugging Face 生态(模型和数据集)的从业者。
如果你的需求是构建一个特定功能助手而非通用 AI,smolagents 提供了恰到好处的简洁和能力。
然而对于需要全面对话管理或多 Agent 长期协作的项目,smolagents 并非一站式解决方案,可能需要配合其他工具一起使用。
六、OpenAI Swarm:轻量级多智能体编排实验框架
6.1 核心定位与技术栈
Swarm 是 OpenAI 在 2024 年发布的实验性多 Agent 框架,其目标是提供一种轻量、透明的方式来协调多个智能体协作。
Swarm 基于 Python,实现了一个无状态(stateless)的多 Agent 调度架构:每次运行时,不保留上一次的内部状态,需要由开发者通过“上下文变量”来维护跨步骤的信息。
这种设计初衷是追求简单可控,避免复杂的隐式状态导致的不可预测行为。
Swarm 将每个 Agent 定义为包含三个要素:
- 指令(该 Agent 的行为说明)
- 工具函数列表(Agent 可调用的函数集合)
- 交接函数(其中一部分工具可用于移交控制权给另一 Agent)
在执行过程中,Swarm 通过 LLM 的函数调用机制,让 Agent 在需要时返回下一个应被激活的 Agent,从而在智能体之间实现动态切换。
由于高度依赖函数调用功能,Swarm 对 LLM 接口的依赖较小,更多逻辑由框架自身管理。
需要强调的是,OpenAI 官方明确将 Swarm 定位为教育用途的实验框架,目前并不建议在生产环境中直接使用。
它更像是探索多 Agent 接口设计的试验田,因此在功能完备性上可能不及其他成熟框架。

图 6. OpenAI Swarm:轻量级多智能体编排实验框架
6.2 功能特性
Swarm 最大的特点是极简的多 Agent 调用模式。
开发者无需设计复杂的调度策略,只需在每个 Agent 的某些函数里通过返回一个特殊值来指明“切换到其他 Agent 处理”,Swarm 就会按照约定完成 Agent 切换。这种显式交接机制保证了协作流程的透明可控。
Swarm 还支持直接调用 Python 函数作为工具,因此 Agent 可以利用现有代码功能完成任务,而无需额外包装。
在内存管理方面,Swarm 使用了显式的 context_variables 参数来在多 Agent 对话中传递共享信息,相当于一种手动维护的全局状态。
通过上下文变量,开发者可以在 Agent 之间共享如用户请求、部分中间结果等数据,从而弥补框架本身无状态的限制。
Swarm 也支持流式响应,可以在 Agent 执行过程中逐步将输出返回给调用方,提升交互的实时性。
不过总体来说,Swarm 并未提供现成的复杂功能模块,例如:
- 没有自带工具库
- 没有内置的长短期记忆模块
- 不涉及人类参与等高阶特性
它追求的是一个最小可行的多 Agent 架构,将复杂度下放给开发者来自行实现。这使其更像一个“框架的框架”,为研究多 Agent 交互提供了一个简单底座。
6.3 代码示例
下面示例演示了两个 Agent 的协作:Agent A 接受用户消息,如有需要会调用交接函数把对话控制权交给 Agent B。
Agent B 被设定为只能用俳句形式回答。当用户表示想和 B 对话时,A 会将会话转交给 B,最终由 B 给出俳句风格的回复。
from swarm import Swarm, Agent
client = Swarm() # 初始化Swarm客户端
# 定义一个函数,作用是将对话控制权转移给 agent_b
def transfer_to_agent_b():
return agent_b
# 创建 Agent A:具备一个函数工具用于交接,职责是帮助用户并在适当时交给 Agent B
agent_a = Agent(
name="Agent A",
instructions="You are a helpful agent.", # 行为指令:作为一个乐于助人的助手
functions=[transfer_to_agent_b] # 注册可调用函数:用于交接会话
)
# 创建 Agent B:不包含工具,只负责以俳句形式回应
agent_b = Agent(
name="Agent B",
instructions="Only speak in haikus." # 行为指令:回答时只能说俳句
)
# 用户向 Agent A 发送消息,请求与 Agent B 对话
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "I want to talk to agent B."}]
)
# 输出最终回复内容(预期为 Agent B 的俳句回复)
print(response.messages[-1]["content"])
在上述代码中,agent_a 起初接收到用户消息:“I want to talk to agent B.”。
根据它的设定,它可以调用 transfer_to_agent_b() 函数,将控制权切换给 agent_b。
agent_b 接管后,根据自己的指令(只说俳句)生成回复,例如返回一首俳句风格的回答作为对用户的答复。最终 response.messages[-1] 就是用户收到的来自 Agent B 的消息。
6.4 使用成本与学习曲线
由于功能极简,Swarm 本身非常易于理解——浏览其文档和示例代码可以发现,只需要定义好 Agent 列表和函数,然后调用 client.run() 即可开始多 Agent 对话。
学习成本主要来自对多 Agent 协作模式的设计,而非框架本身的 API。
也就是说,Swarm 降低了实现门槛但提高了设计要求:开发者必须深入思考如何拆分任务到不同 Agent、如何设计交接的时机和条件。如果设计不当,可能出现死循环或智能体间通信不畅等问题。
Swarm 官方文档相对简洁,这对新手来说是个挑战。此外,由于是无状态架构,开发者需要自己保障在长流程中的上下文传递,例如要通过函数参数反复传入并返回 context,对于习惯了有状态对话管理的人而言稍嫌繁琐。
总的来说,Swarm 的入门非常容易,但要用好需要较强的规划和调试能力。
对于经验丰富的开发者,Swarm 提供了很高的自由度;而对初学者,可能反而不如用 LangChain 这类高抽象库来得省心。
6.5 典型应用与适用者
Swarm 目前更多被用于演示和教学。例如,构造一个简单的客服系统:
- 起始由一个“问候 Agent”处理用户寒暄
- 一旦用户询问技术问题则交接给“技术 Agent”
- 若用户咨询销售则交给“销售 Agent”
这种基于规则的多 Agent 对话可以用 Swarm 非常直观地实现。
再比如,在游戏场景中,不同 NPC 由不同 Agent 驱动,当需要时通过 Swarm 切换对话控制权,从而实现多角色互动。
由于 Swarm 强调显式控制权交接,适合那些流程相对固定且可预先设定切换条件的场景。
推荐使用者主要是:
- 对框架底层感兴趣的开发者
- 研究多 Agent 交互机制的学者
- 希望打造高度定制化 Agent 系统的团队
如果你的应用需要严格可控的 Agent 行为,且愿意自行实现大部分附加功能,那么 Swarm 提供了一个干净的起点。
不过,对于一般开发者来说,Swarm 当前的成熟度不高,更现实的做法可能是观摩其理念,然后选用更成熟的框架实践。
因此,我们预期 Swarm 更大的价值在于为未来多 Agent 系统提供设计参考,而不是立即用于生产。
七、OpenManus
7.1 核心定位与技术栈
Manus 是由中国初创团队蝶变科技推出的通用型 LLM Agent。其核心定位并非提供更聪明的对话模型,而是让 AI 能够在大模型能力之上,自主规划并执行复杂任务,将 AI 从“会回答问题”推进到“能够完成事情”。
Manus 本体为闭源产品,但社区很快推出了高度复现的开源实现 OpenManus。
在技术路线选择上,OpenManus 并未采用端到端的模型微调方案,而是强调 上下文驱动(In-Context Learning) 的 Agent 架构设计。
其核心思想是充分利用先进大模型已有的推理与泛化能力,通过提示词工程、上下文组织和多轮交互,让 Agent 快速适配新任务。
这种持续试验、反复重构 Agent 框架的过程,被团队内部戏称为“Stochastic Graduate Descend”。
OpenManus 使用 Python 3.12 开发,支持对接 OpenAI、Claude、Qwen、Llama 等多种大模型后端,并采用模块化设计,将系统拆分为 Agent、LLM、Memory、Tool、Flow、Prompt 等组件。
各模块职责清晰,整体设计强调与底层模型解耦,使 Agent 框架能够随模型能力进步持续受益。

图 7. OpenManus
7.2 功能特性
在功能设计上,OpenManus 体现了典型的通用 Agent 架构特征。
首先是多 Agent 协同能力。在整体架构中,不同 Agent 可以承担不同角色,例如任务规划、信息检索、代码生成或结果汇总等,通过统一的流程调度机制协作完成复杂任务。
OpenManus 虽然实现上更轻量,但仍支持通过 Flow 机制扩展和组合专用 Agent。
其次是工具调用能力。OpenManus 内置丰富的工具接口,涵盖代码执行、网络搜索、网页浏览、文件读写、数据库查询等操作。
Agent 采用类似 ReAct 的“思考—行动—观察”循环,根据当前上下文决定是否调用工具以及如何调用,并将执行结果反馈到后续决策中,从而实现与外部环境的持续交互。
在状态管理与记忆机制方面,OpenManus 通过 Memory 模块维护长链条任务的上下文信息,并结合上下文缓存策略减少重复推理开销。
通过尽量保持提示前缀不变、仅追加新状态的方式,提高了大模型调用时的缓存命中率,从而显著降低成本和延迟。
在流程控制与规划上,OpenManus 支持先规划、再执行的工作模式。
Agent 可以先生成多步骤任务计划,并在执行过程中动态检查进度、调整策略。
同时通过最大迭代步数限制和专用终止工具,避免任务陷入死循环,确保执行过程可控。
此外,OpenManus 还提供了较为完善的 调试与可视化支持。Agent 的思考过程、工具调用和执行结果都会被记录并展示,方便开发者理解和调优,这在一定程度上缓解了 Agent 系统“黑箱化”的问题。
7.3 代码示例
下面通过一个简单示例演示如何使用 OpenManus 框架构建一个问答 Agent,并让其通过工具检索信息后给出答案。
例如,我们希望 Agent 回答一个需要查资料的问题:
from app.agent.manus import Manus
from app.llm import LLM
# 初始化LLM(将使用默认配置中的模型,例如OpenAI的GPT-4接口)
llm = LLM()
# 创建Manus通用智能体实例,自动集成预定义的工具(如网络搜索、浏览器、代码执行等)
agent = Manus(llm=llm)
# 定义用户问题:例如询问2020年以来有哪些女性科学家获得诺贝尔奖及其成就
user_query = "2020年以来有哪些女性科学家获得了诺贝尔奖?请简要说明她们的主要成就。"
# 调用智能体执行任务(Agent将自主规划步骤,调用工具搜索信息并生成答案)
result = agent.run(user_query)
print(result)
在上述代码中,OpenManus 会先分析问题,使用内置工具检索诺贝尔奖获奖名单,然后浏览相关网页,从中提取女性科学家的信息,最后整合出结果并通过 Terminate 工具结束迭代。
整个过程中无需人工干预——开发者只需提供问题,Manus Agent 就能 “思考→行动→观察” 循环执行,最终给出答案。
这展示了 Manus 框架如何让 AI Agent 从被动回答,走向主动检索与执行,完成从语言到行动的跨越。
7.4 使用成本与学习曲线
从上手难度看,OpenManus 的部署流程较为简单,只需准备 Python 环境并配置大模型 API Key 即可启动。
社区还提供了基于 Web 的交互界面,使不习惯命令行的用户也能较为直观地体验 Agent 行为。在学习曲线方面,OpenManus 代码结构清晰、模块职责单一。
相较于功能繁多、抽象层级较深的框架,OpenManus 更容易通过阅读源码理解 Agent 的核心执行逻辑。这使其成为学习 LLM Agent 原理和进行二次开发的良好起点。
运行成本主要取决于所使用的底层模型和任务复杂度。对于使用云端 API 的场景,复杂任务可能消耗较多 token;而通过接入本地开源模型,则可以在硬件允许的前提下将推理成本降至最低。
7.5 典型应用与适用者
OpenManus 适合处理需要 多步骤推理与多工具协作 的复杂任务,例如信息调研与报告生成、数据分析与策略建议、合同审阅、流程自动化以及代码生成与调试等。
这类任务的共同特征是:Agent 需要主动获取信息、操作外部工具,并最终产出结构化结果。
在适用人群上,OpenManus 对多个群体均具有吸引力。对于个人开发者和初学者而言,它提供了一个完整且可读性较高的 Agent 示例,有助于理解规划、记忆和工具调用等核心机制。
对于 AI 研究人员,OpenManus 可作为验证多 Agent 协作、提示词设计和决策策略的实验平台。
而对于企业用户,OpenManus 展示了作为“数字员工”自动化执行流程的潜力,但在关键业务场景中仍需关注可靠性、安全性与合规问题。
总体来看,OpenManus 的价值在于将现有 Agent 技术工程化整合到可实际使用的程度,清晰展示了通用 AI Agent 从概念走向落地的一种可行路径。
八、关键维度对比表
下面通过一个表格,将上述六个框架在主要功能维度上进行对比:



九、总结
AI Agent 框架百花齐放,从单 Agent 调用工具到多 Agent 团队协作,再到人机共创,每种范式都在不同场景下展示威力。
对于开发者而言,最重要的不是“追新”,而是:根据自身项目需求和团队能力选择合适的工具。
- 想要快:可以从 LangChain、smolagents 入手;
- 想要强流程控制:可以考虑 LangGraph、CrewAI、OpenManus;
- 想要玩多 Agent 对话和协作:可以试试 AutoGen、CrewAI;
- 想要研究多 Agent 机制:可以把 Swarm 当成一个概念和代码层面的“参考实现”。
希望本文的对比能帮助你在浩如烟海的 Agent 框架中找到方向,打造出令用户满意的智能体应用。
最后唠两句
为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选
很简单,这些岗位缺人且高薪
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
那0基础普通人如何学习大模型 ?
深耕科技一线十二载,亲历技术浪潮变迁。我见证那些率先拥抱AI的同行,如何建立起效率与薪资的代际优势。如今,我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理,分享于此,为你扫清学习困惑,共赴AI时代新程。
我整理出这套 AI 大模型突围资料包【允许白嫖】:
-
✅从入门到精通的全套视频教程
-
✅AI大模型学习路线图(0基础到项目实战仅需90天)
-
✅大模型书籍与技术文档PDF
-
✅各大厂大模型面试题目详解
-
✅640套AI大模型报告合集
-
✅大模型入门实战训练
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

①从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点

② AI大模型学习路线图(0基础到项目实战仅需90天)
全过程AI大模型学习路线

③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的

④各大厂大模型面试题目详解

⑤640套AI大模型报告合集

⑥大模型入门实战训练

这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!


如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

更多推荐


所有评论(0)