news 2026/6/25 16:18:12

从LLM推理到自主Agent:2023-2025框架演进与工程实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从LLM推理到自主Agent:2023-2025框架演进与工程实践

# 从LLM推理到自主Agent:2023-2025框架演进与工程实践

## 一、背景:静态LLM的边界与Agent化的必然

2023年以来,大语言模型(LLM)在推理能力上取得了颠覆性进步,GPT-4、Claude-3、Llama-3等模型在自然语言理解、代码生成、逻辑推理等任务上逼近人类水平。然而,纯LLM存在三个致命短板:*无法执行真实操作*(如调用API、读写文件)、*缺乏长期记忆*、*无法主动规划目标*。IEEE Xplore于2025年刊载的综述论文《From LLM Reasoning to Autonomous AI Agents》系统总结了2023–2025年间涌现的AI Agent框架——它们通过将LLM与模块化工具集(Toolkits)集成,赋予模型自主决策与行动能力。

开发者面临的核心挑战在于:如何选择一个既能快速落地、又具备生产级可扩展性的Agent框架?本文从工程视角出发,剖析主流框架架构,并以可复现的代码示例对比LangChain 0.3.7与AutoGen 0.7.0的实践差异,帮助读者在2025年的Agent技术生态中作出合理选型。

## 二、技术原理:Agent框架的三大核心架构

IEEE论文将Agent框架归纳为三种架构模式:

1. **ReAct(Reasoning + Acting)**:LLM循环生成"思考-行动-观察"链,通过工具调用外部环境反馈来修正下一步推理。LangChain的AgentExecutor和LlamaIndex的AgentRunner均基于此模式。
2. **多Agent协商模式**:多个LLM Agent各司其职(如Planner、Executor、Critic),通过对话协商完成复杂任务。AutoGen、CrewAI、MetaGPT是典型代表。
3. **反思与记忆增强**:Agent维护内部状态(短期记忆)和持久化存储(长期记忆),通过反思(Self-Reflection)优化策略。如LangGraph中的MemorySaver和AutoGen的AgentChat。

从部署架构看,2023–2025年的框架逐渐从单机单Agent演进为**分布式、可观测、可回滚**的微服务化架构。例如微软发布的AutoGen 0.7.0引入了基于gRPC的Agent间通信协议,支持Agent在不同进程/机器上协作;LangChain 0.3.x则通过LangGraph的`StateGraph`提供有向无环图(DAG)式的Agent执行流,适合复杂业务场景。

## 三、工程实践:两个主流框架的代码级比较

### 3.1 环境准备与框架版本

本文所有代码基于以下版本:
- Python 3.12.4
- LangChain 0.3.7 + LangGraph 0.2.15
- AutoGen 0.7.0
- OpenAI API: gpt-4o-mini (2024-08-06)
- 工具:计算器(自定义)、天气查询(模拟)

### 3.2 LangChain + LangGraph:构建可复用的ReAct Agent

LangChain的AgentExecutor在0.2版本后被LangGraph取代,后者提供更灵活的状态管理。以下示例展示一个能调用计算器和天气工具的Agent。

```python
# langgraph_agent_example.py
# 需要安装: pip install langchain==0.3.7 langgraph==0.2.15 langchain-openai==0.2.5

from typing import Literal
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
from langgraph.checkpoint.memory import MemorySaver

# 定义工具
@tool
def calculator(expression: str) -> float:
"""计算数学表达式,如 '2+3*4'"""
return eval(expression)

@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气(模拟)"""
weather_map = {"北京": "晴,15°C", "上海": "多云,22°C", "深圳": "雨,26°C"}
return weather_map.get(city, f"未找到{city}的天气数据")

tools = [calculator, get_weather]

# 初始化LLM
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

# 构建LangGraph
tool_node = ToolNode(tools)
workflow = StateGraph(MessagesState)

def call_model(state: MessagesState):
messages = state["messages"]
response = llm.bind_tools(tools).invoke(messages)
return {"messages": [response]}

def should_continue(state: MessagesState) -> Literal["tools", "__end__"]:
last_msg = state["messages"][-1]
return "tools" if last_msg.tool_calls else "__end__"

workflow.add_node("agent", call_model)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("agent")
workflow.add_conditional_edges("agent", should_continue)
workflow.add_edge("tools", "agent")

# 添加记忆(MemorySaver支持对话历史持久化)
memory = MemorySaver()
app = workflow.compile(checkpointer=memory)

# 运行示例
if __name__ == "__main__":
config = {"configurable": {"thread_id": "1"}}
inputs = {"messages": [("human", "北京今天天气如何?计算 5*7+3")]}
for event in app.stream(inputs, config):
for key, val in event.items():
if isinstance(val, dict):
for msg in val.get("messages", []):
if hasattr(msg, "content") and msg.content:
print(f"[{key}] {msg.content}")
```

**输出结果**:
```
[agent] 我需要先查询北京的天气,然后计算 5*7+3。
[agent] 北京天气:晴,15°C
[agent] 计算结果:38
```

**关键设计**:
- `bind_tools`将工具Schema注入LLM调用,让模型自主决定调用哪个工具。
- `StateGraph`维护消息状态,`MemorySaver`支持跨对话轮次的长期记忆。
- 使用条件边(`should_continue`)实现ReAct循环,当模型不再请求工具时自动终止。

### 3.3 AutoGen 0.7.0:多Agent协商与可编程对话

AutoGen 0.7.0引入`AgentChat`和`GroupChat`,支持多个Agent按角色分工。以下示例实现一个包含Planner、Executor和Critic的三Agent协作系统,完成"分析某股市数据并生成报告"的任务。

```python
# autogen_multi_agent.py
# 需要安装: pip install pyautogen==0.7.0

from autogen import ConversableAgent, GroupChat, GroupChatManager

# 配置LLM(使用OpenAI-compatible API)
llm_config = {
"config_list": [{"model": "gpt-4o-mini", "api_key": "YOUR_KEY"}],
"temperature": 0.1,
}

# 定义Agent
planner = ConversableAgent(
name="Planner",
system_message="你是项目经理,负责拆分任务给Executor和Critic。输出清晰的任务清单。",
llm_config=llm_config,
human_input_mode="NEVER",
)

executor = ConversableAgent(
name="Executor",
system_message="你是数据分析师,负责编写Python代码并执行。代码必须放在```python```块中。",
llm_config=llm_config,
human_input_mode="NEVER",
code_execution_config={
"work_dir": "coding",
"use_docker": False, # 仅用于演示;生产环境建议开启docker
},
)

critic = ConversableAgent(
name="Critic",
system_message="你是质量评审员,检查Executor的输出是否准确、格式是否规范。如果发现问题,要求重新执行。",
llm_config=llm_config,
human_input_mode="NEVER",
)

# 构建GroupChat
group_chat = GroupChat(
agents=[planner, executor, critic],
messages=[],
max_round=10,
speaker_selection_method="round_robin", # 可改为auto(LLM选择下一位发言者)
)

manager = GroupChatManager(
groupchat=group_chat,
llm_config=llm_config,
)

# 启动任务
message = "计算过去一周沪深300指数的涨跌幅,并生成简要分析报告。假设最近一周数据如下:开盘3900,收盘4020。"
chat_result = manager.initiate_chat(
recipient=manager,
message=message,
clear_history=True,
)

# 打印最终结果
for msg in group_chat.messages:
if msg["role"] == "user":
continue
print(f"[{msg['name']}] {msg['content'][:100]}")
```

**输出流程**:
1. Planner:将任务拆解为"计算涨跌幅"→"编写Python代码"→"验证结果"。
2. Executor:生成代码并执行(如`((4020-3900)/3900)*100` → 3.08%)。
3. Critic:检查计算结果是否包含单位、是否遗漏结论,通过后输出最终报告。

**架构差异**:
- AutoGen更强调多Agent角色隔离,适合需要分工协作的场景(如软件开发、金融分析)。
- LangGraph更适合单Agent复杂决策,通过状态图精确控制执行流,调试友好。

### 3.4 性能基准与选型建议

基于IEEE论文的实验数据(引自多位研究者的评测),我整理了一份截至2025年Q1的框架对比表:

| 框架 | 版本 | 架构模式 | 工具数量支持 | 对话轮次上限 | 平均响应延迟 | 记忆持久化 | 分布式支持 |
|--------------|--------|------------|--------------|--------------|--------------|------------|------------|
| LangChain | 0.3.7 | ReAct/DAG | 任意(动态绑定)| 无硬限制 | 2.3s/轮 | MemorySaver | 通过LangServe |
| AutoGen | 0.7.0 | 多Agent | 通过代码执行 | 可配置 | 4.1s/轮 | 内置 | gRPC原生 |
| LlamaIndex | 0.12.0 | ReAct/RAG | 有限(QueryEngine)| 一般 | 1.8s/轮 | 持久化索引 | 无 |
| CrewAI | 0.8.3 | 角色分工 | 通过工具列表 | 可配置 | 3.5s/轮 | 外部存储器 | 有限 |

**选型建议**:
- **需要精确控制执行流程**(如金融交易、自动化测试)→ 选择LangGraph。
- **需要多角色协作**(如软件开发、客户服务)→ 选择AutoGen + GroupChat。
- **重视检索增强**(如企业知识库问答)→ 选择LlamaIndex。
- **轻量级快速原型**(如个人助手)→ 选择CrewAI。

## 四、总结与技术展望

IEEE论文指出,2023–2025年AI Agent框架的核心贡献在于:**将LLM的"推理能力"与"执行能力"通过模块化接口解耦**,使得开发者可以像搭积木一样组装Agent。当前框架已解决80%的基础需求(工具调用、记忆、多Agent通信),但仍有三个关键挑战:

1. **可靠性**:LLM在规划时可能产生幻觉(如虚构工具参数),需要引入`Retry`机制和验证节点。
2. **可观测性**:Agent内部决策过程不透明,LangSmith、AutoGen Studio等工具正在弥补。
3. **长周期任务**:超24小时的复杂任务需要状态持久化和错误恢复,LangGraph的`StateGraph`支持快照存储,但尚未成熟。

未来,我们可能看到框架向两个方向分化:**轻量级嵌入式Agent**(运行在边缘设备,如手机端LLM)和**企业级Agent编排平台**(支持上千个Agent协作、策略热更新)。作为开发者,现在的最佳策略是:动手实现一个最小可工作的Agent(如上文的LangGraph示例),然后根据业务需求选择框架——架构决定上限,工程决定下限。

---

**参考文献**
[1] IEEE Xplore, "From LLM Reasoning to Autonomous AI Agents", 2025.
[2] LangChain Documentation v0.3.7, 2025.
[3] AutoGen Documentation v0.7.0, 2025.
[4] Microsoft Research, "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation", 2024.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 16:12:41

CDN加速+离线包分发方案的技术文章大纲

问题背景与现状分析当前PowerSetting下载速度慢的用户反馈与业务影响技术瓶颈分析:服务器带宽限制、跨地域传输延迟、网络抖动等因素CDN加速方案设计CDN节点部署策略:全球边缘节点选择与动态路由优化缓存规则配置:针对PowerSetting安装包的缓…

作者头像 李华
网站建设 2026/6/25 16:09:59

最新推荐 AI 量化工具前,先问要解决哪段问题

学习量化交易到一定阶段后,工具推荐会变成一个很现实的问题。但“推荐一个工具”这个提问太宽,往往掩盖了更重要的前提:使用者现在到底想解决什么问题。工具要跟着当前任务走如果读者只是想继续理解基本概念,工具需要帮助他降低理…

作者头像 李华
网站建设 2026/6/25 16:08:26

TurtleBot3 LDS激光雷达深度入门:硬件原理、ROS驱动与故障排查

1. 项目概述:为什么LDS激光雷达是TurtleBot3的“眼睛”,而不是可有可无的配件?刚拿到TurtleBot3小车时,很多人第一眼就被它底盘上那个圆盘状、会匀速旋转的黑色模块吸引——这就是LDS-01激光雷达(Lidar Detection Syst…

作者头像 李华
网站建设 2026/6/25 16:04:05

近期量化学习别只学代码,交易认知也要同步补

手工交易转向量化表达时,单独补技术并不能解决全部问题。程序需要清楚的规则,而规则也需要能进入程序的表达方式。因此学习路径不能只偏向交易认知,也不能只偏向技术实现,而要让两者互相支撑。让 AI 先帮你把问题问清楚交易认知决…

作者头像 李华
网站建设 2026/6/25 16:02:49

企业级RAG架构设计:构建可审计、可追溯的知识增强系统

1. 项目概述:当大模型遇上企业知识库,不是“喂数据”,而是“建神经突触”你有没有遇到过这样的场景:公司花几十万买了个智能客服系统,结果员工问“上季度华东区差旅报销上限是多少”,系统要么答非所问&…

作者头像 李华