前言
前面我们在学习 Langchain 框架的时候,见过如下的代码。这里的create_agent 就是创建了一个Agent智能体。那么到底什么是 Agent 呢?他和原有的 LLM 有什么区别?
agent = create_agent(
model=model, # 聊天模型
tools=tools, # 工具列表
system_prompt=system_prompt,
checkpointer=memory # 传入记忆组件 )
定义
AI Agent 是一个理解人类的自然语言,能够感知环境、做出决策并采取行动的系统。
- 核心:“感知-思考-执行”的自主循环系统。
- 历程:
-
规划与拆解:将复杂目标分解为可执行的子任务序列。
-
工具调用:通过函数调用(Function Calling)等接口,连接外部API、数据库、执行环境(如浏览器、代码解释器)。
-
记忆与反思:拥有短期(对话上下文)和长期(向量数据库)记忆,并能从历史行动结果中学习调整策略。
-
和 LLM 关系
LLM 可以接受输入,可以分析&推理、输出文字、代码、媒体。但是如果我们希望能做到更多呢?比如根据当前环境,自主运用各种工具与物理世界互动,甚至完成一些只有人类能 完成的任务呢?
AI Agents便是基于LLM的能够自主理解、感知、自主规划决策、执行复杂任务的智能体。 其设计目的是为了处理那些简单的语言模型可能无法直接解决的问题,尤其是当这 些任务涉及到多个步骤或者需要使用外部工具或者外部数据源的情况。
AI Agent = LLM(接受输入、思考、输出) + 记忆 + 工具 + 规划
简单说,LLM让Agent“能想会说”,而Agent框架让LLM“能动手做事” 。
架构
以下就是一个智能体(Agent)工作架构:
- 核心 Agent:作为整个系统的中枢,连接调度所有模块。
- 记忆模块:分为短期记忆和长期记忆,负责存储临时会话信息与长久的知识经验,为 Agent 提供数据支撑。
- 工具模块:为 Agent 提供外部能力支持,包含日历、计算、代码解释、搜索等功能。
- 规划模块:帮助拆解任务,通过反思、思维梳理来优化执行路径。
- 执行模块:接收 Agent 指令,落地具体操作,同时可以调用工具完成任务。
第一个 Agent 程序
工具
@tool
def magic_function(input: int) -> int:
"""模拟工具函数."""
return input + 2
search = TavilySearchResults(max_results=3)
tools = [magic_function, search]
Agent
# 旧范式下的 Agent 调用方式
from langchain_classic.agents import create_tool_calling_agent, AgentExecutor
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True)
我们发现,这里无论是create_tool_calling_agent还是AgentExecutor都依赖langchain_classic。我们又知道 Langchain1.0 新范式下不再鼓励使用兼容包 langchain_classic。此处应当直接使用:
# 推荐使用的新范式!!!
agent = create_agent(
model=llm,
tools=tools,
# debug=True
)
示例代码
result = agent.invoke(
{"messages":[{
"role":"user",
"content":"magic_function(3)的值是多少?"}]
}
)
print(result)
# LLM 的知识边界导致不知道现在的事,会尝试规划找”人“帮忙
# result = agent_executor.invoke({"input": "请问现任的美国总统的年龄的平方是多少? 请用中文告诉我答案"})
result = agent.invoke(
{"messages":[{
"role":"user",
"content":"请问现任的美国总统的年龄的平方是多少? 请用中文告诉我答案"}]
}
)
开发框架
像我们前面接触的 LAngchain,有很多现成的框架供我们开发 AI Agent。
| 框架 | 代理模式 | 特性 | 架构设计 | 核心功能 | 技术生态 | 企业级支持 |
|---|---|---|---|---|---|---|
| LangChain | 单智能体 | 可通过组合链模拟多智能体 | 模块化设计(链、代理、记忆、工具) | 链(Chains)、智能体(Agents)、工具集成(Tools)、记忆(Memory)、文档加载器 | 广泛集成、向量数据库兼容、社区插件丰富 | 社区驱动(开源)、商业支持有限 |
| LangGraph | 单智能体+复杂状态流、多智能体 | 支持多步骤决策 | 有向图结构(节点=任务步骤,边=流程逻辑) | 循环/分支控制、状态管理、并行节点执行 | 与LangChain互补、需自行扩展业务逻辑 | 开源 |
| Semantic Kernel | 单智能体 | 通过插件扩展功能 | 插件化架构(Skills=功能模块,Planner=任务规划) | 任务自动分解(Planner)、语义函数、微软生态插件(Teams, Office等) | 紧密绑定Azure、.NET/C#生态优先 | 微软官方支持、企业级SLA |
| AutoGen | 多智能体 | 多角色协作设计 | 多智能体协同(Agent=独立角色,GroupChat=协作环境) | 多角色Agent定义、自主对话协商、任务自动分配 | 多Agent模式独特、依赖OpenAI模型 | 微软研究院维护、学术导向 |
| CrewAI | 多智能体 | 角色分工协作 | 角色分工(Agent=团队成员,Task=目标,Process=流程) | 角色与目标定义、流程可视化、工具集成 | 新兴框架,生态逐步扩展、兼容常见工具(如搜索引擎、API) | 开源 |
低代码平台
当然,针对非开发人员,目前市面上也已经有很多低代码平台让我们仅仅可以通过人类自然语言来构建 AI Agent 程序。
| 维度 | Coze(平台版) | Dify | FastGPT | n8n | RagFlow |
|---|---|---|---|---|---|
| 易用性 | ✔零代码模板,非技术友好 | ✔非技术较友好 | 和技术门槛较高 | ✔需代码基础 | ✔部署复杂,需技术团队 |
| 功能深度 | ✔对话优化、插件生态 | ✔多模型调度、Agent工具链 | !聚焦对话交互,工具调用能力弱 | !通用流程编排之王,无内置Agent框架 | ✔RAG深度、缺乏通用内置Agent框架 |
| 集成能力 | ✔字节生态优先,跨平台弱 | ✔多云架构、OpenAI兼容 | ✔本地API集成 | ✔400+通用API,代码扩展 | !文档解析和文档问答为主,动态集成弱 |
| 扩展性 | ✔插件丰富,但依赖官方市场 | ✔插件较丰富,支持二次开发和自定义开发 | !开源可定制,需修改源码,缺乏插件市场 | !自定义代码调用LLM,可构建简单Agent流程 | !垂直领域,扩展受限 |
| AI/ML支持 | !模型封闭,国内优先 | ✔多模型中立 | ✔多模型中立 | ✔多模型中立 | ✔多模型中立 |
| 部署方式 | !仅公有云(火山引擎) | ✔支持私有化部署 | ✔支持私有化部署 | ✔支持私有化部署(需高配硬件) | |
| 定价模式 | !订阅制,专业版付费 | ✔开源核心+企业版收费 | ✔完全开源,无费用 | ✔开源免费+企业服务 | ✔开源免费+定制服务 |
展望
-
纵向:能力深化——从单智能体到多智能体系统(MAS)
单个Agent的能力存在上限。多智能体系统通过专业化分工(如研究员、工程师、协调员)和协同机制(如集中调度、平等协商),能处理药物研发、全球供应链优化等极端复杂的任务。这类似于从“全能手艺人”升级为“专业化数字军团”。
-
横向:平台化——从开发框架到智能体操作系统(Agent OS)
当智能体数量爆炸、任务复杂度飙升时,简单的开发框架(如LangChain)无法解决系统级的调度、安全、资源管理问题。
Agent OS应运而生,它的核心职责从管理CPU/内存变为管理认知资源(Token、上下文、工具调用),从运行“进程”变为运行“有目标的智能会话”。这标志着从“资源驱动”的计算范式向“意图驱动”的认知范式的根本转变