LLM Agent 技术全景

“大模型是脑子,Agent 是手脚。” — 吴恩达

一、从”说话”到”做事”

传统的大语言模型只能回答问题——你问它,它答。但一个真正有用的 AI 系统需要能够执行动作:查天气、订机票、写代码并运行、操控机器人……

LLM Agent 就是让大语言模型具备行动能力的核心技术。它让 AI 从被动的”应答者”变成主动的”执行者”。

1
2
3
4
5
6
7
8
传统 LLM:
用户: "帮我查一下北京的天气"
LLM: "北京今天晴,温度 15-22 度,适合出行。"

LLM Agent:
用户: "帮我查一下北京的天气"
Agent: [Step 1] 调用天气 API → [Step 2] 解析结果 → [Step 3] 告知用户
(实际执行了网络请求,不是瞎编)

二、Agent 的核心组件

一个完整的 LLM Agent 由四大组件构成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌─────────────────────────────────────────────────┐
│ LLM Agent │
├─────────────────────────────────────────────────┤
│ 🔧 工具(Tools) │
│ - 搜索、API、代码执行、文件读写 │
│ │
│ 🧠 记忆(Memory) │
│ - 短期记忆:当前对话上下文 │
│ - 长期记忆:历史经验、用户偏好 │
│ │
│ 📋 规划(Planning) │
│ - 任务分解(Task Decomposition) │
│ - 自我反思(Self-Reflection) │
│ │
│ 🔄 状态(State) │
│ - 当前进度、已完成步骤、下一步计划 │
└─────────────────────────────────────────────────┘

2.1 工具(Tools)

工具是 Agent 与外部世界交互的桥梁。没有工具,Agent 只能”空谈”;有了工具,Agent 才能”实干”。

常见工具类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 1. 搜索工具
search = {
"type": "search",
"description": "搜索互联网获取最新信息",
"query": "2024年北京人口"
}

# 2. API 调用工具
get_weather = {
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名"}
}
}
}
}

# 3. 代码执行工具
code_executor = {
"type": "code_interpreter",
"language": "python",
"code": "import pandas as pd; ..."
}

# 4. 文件操作工具
file_tools = {
"read": {"path": "/data/report.txt"},
"write": {"path": "/output/result.txt", "content": "..."},
}

关于工具调用的更多细节,可以参考我之前的文章《Function Calling 实战》。

2.2 记忆(Memory)

短期记忆是当前对话的上下文窗口,受限于 LLM 的 token 上限。

长期记忆让 Agent 记住跨对话的重要信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 长期记忆的实现方式

# 方式 1:向量数据库(RAG-style)
user_profile_vector = embed("用户喜欢简洁的回答风格")

# 方式 2:结构化知识图谱
user_knowledge_graph = {
"name": "张三",
"preferences": ["简洁回答", "技术细节"],
"recent_tasks": ["写代码", "数据分析"]
}

# 方式 3:动态记忆总结
memory_summary = summarize_past_conversations(conversation_history)

一个实用的记忆策略:

1
2
3
4
当任务完成时:
1. 提取关键信息(用户偏好、任务结果、错误教训)
2. 更新长期记忆库
3. 下次类似任务时,检索相关记忆作为上下文

2.3 规划(Planning)

规划让 Agent 能够处理复杂多步骤任务,而不只是回答简单问题。

两种核心规划方法:

方法 1:任务分解(Task Decomposition)

将大任务拆解成小步骤,逐步完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 输入:"帮我分析一下 A 股票是否值得投资"

# LLM 分解:
plan = [
{"step": 1, "task": "获取 A 股票的历史价格数据"},
{"step": 2, "task": "获取 A 股票的基本面数据(市盈率、ROE 等)"},
{"step": 3, "task": "获取近期新闻和分析师评级"},
{"step": 4, "task": "综合分析,给出投资建议"}
]

# 逐个执行每个步骤
for step in plan:
execute(step)

方法 2:自我反思(Self-Reflection)

执行过程中遇到错误或失败时,让 Agent 反思并调整策略。

1
2
3
4
Agent 执行任务 → 发现结果不理想 → 自我反思哪里出了问题
→ 调整策略 → 重新执行 → 再次评估

类似于人类的"试错学习"过程。

三、ReAct:推理与行动的结合

3.1 什么是 ReAct?

ReAct(Reason + Act) 是 Princeton 和 Google 提出的 Agent 框架,核心思想是:在每个行动前先进行推理,用推理指导行动

3.2 ReAct 的循环

1
2
Thought → Action → Observation → Thought → Action → Observation → ...
思考 行动 观察结果 思考 行动 观察结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ReAct 示例:回答"北京市人口比深圳市多多少?"

# Step 1: Thought
"我需要分别查出北京和深圳的人口,然后相减。"

# Step 2: Action
search(city="北京人口")

# Step 3: Observation
"北京市常住人口约 2189 万(2023年)"

# Step 4: Thought
"好的,北京人口已知。现在查深圳人口。"

# Step 5: Action
search(city="深圳人口")

# Step 6: Observation
"深圳市常住人口约 1766 万(2023年)"

# Step 7: Final Answer
"2189 - 1766 = 423 万,北京市人口比深圳市多约 423 万。"

3.3 ReAct vs 其他范式

范式 特点 适用场景
ReAct 推理与行动交替 需要外部知识的复杂问答
Chain-of-Thought 先推理后行动 数学、逻辑问题
Action-Oriented 直接行动,少推理 简单工具调用
Plan-then-Execute 先计划后执行 复杂多步骤任务

四、主流 Agent 框架

4.1 LangChain Agents

LangChain 是最流行的 Agent 开发框架,提供标准化的 Agent 抽象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from langchain.agents import AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain import tool

@tool
def get_weather(city: str) -> str:
"""获取城市天气"""
return f"{city}今天晴,15-22度"

@tool
def search_wiki(query: str) -> str:
"""搜索维基百科"""
return f"{query}的维基百科内容..."

# 创建 ReAct Agent
llm = ChatOpenAI(model="gpt-4")
agent = create_react_agent(llm, [get_weather, search_wiki])

# 运行
result = agent.run("北京的天气和维基百科介绍")

4.2 AutoGPT / GPT-Engineer

AutoGPT 是最早引起公众关注的 Agent 项目——给它一个目标,它会自动拆解任务、调用工具、直到完成目标。

1
2
3
4
# AutoGPT 使用示例
python -m autogpt --ai-name "研究助手" \
--ai-role "帮你完成市场调研" \
--goal "分析新能源汽车市场趋势"

局限性:AutoGPT 容易陷入无限循环,每次行动后可能忘记原始目标。

4.3 MetaGPT / ChatDev

多 Agent 协作框架,多个 Agent 扮演不同角色(产品经理、工程师、测试)协作完成软件开发。

1
2
3
4
5
6
7
8
用户:帮我做一个博客网站

MetaGPT 协作流程:
产品经理 Agent → 写 SPEC.md
架构师 Agent → 设计系统架构
工程师 Agent → 写代码
测试 Agent → 写测试用例
运维 Agent → 部署上线

4.4 CrewAI

专注于”多 Agent 团队协作”的框架,Agent 可以扮演不同角色,在”团队”中分工合作。

1
2
3
4
5
6
7
8
9
10
11
12
13
from crewai import Agent, Task, Crew

# 定义 Agent
researcher = Agent(role="研究员", goal="找到最新AI进展", backstory="...")
writer = Agent(role="作家", goal="写出吸引人的文章", backstory="...")

# 定义任务
task1 = Task(description="调研2024年AI进展", agent=researcher)
task2 = Task(description="写一篇博客", agent=writer)

# 组建团队
crew = Crew(agents=[researcher, writer], tasks=[task1, task2])
result = crew.kickoff()

五、Agent 的关键技术挑战

5.1 规划失效(Planning Failure)

问题:Agent 可能制定了错误的计划,导致任务失败。

解决思路

  • 自我反思机制:执行前检查计划合理性
  • 错误恢复:失败后重新规划
  • 人类反馈:关键节点需要人类确认

5.2 循环陷阱(Looping)

问题:Agent 可能重复相同的行动,形成死循环。

1
2
搜索 → 搜索 → 搜索 → 搜索 → 搜索 → ...
(永远在搜索,不产出结果)

解决思路

  • 限制最大行动次数
  • 记录已尝试的行动,避免重复
  • 设置明确的停止条件

5.3 幻觉(Hallucination)

问题:Agent 可能在没有足够信息时瞎编行动理由。

1
2
3
Thought: "根据我的知识,北京市人口约 3000 万"
Action: ...
(实际上北京约 2200 万——Agent 瞎编了一个数字)

解决思路

  • 强制 Agent”查证”而非”回忆”
  • 对不确定的信息,主动调用工具搜索
  • 设置置信度阈值,低置信度时主动说”我不知道”

5.4 工具调用可靠性

问题:工具可能返回错误结果,或者超时、格式错误。

1
2
3
4
5
6
7
# 常见错误处理模式
try:
result = call_tool(tool_name, args)
except TimeoutError:
return "工具调用超时,重试一次"
except JSONDecodeError:
return "工具返回格式错误,跳过此工具"

六、Agent 的应用场景

6.1 个人助手(Personal Agent)

1
2
3
4
5
6
7
任务:帮我安排下周的出差
Agent 行为:
1. 查日历,确认可用时间
2. 查航班,预订机票
3. 查酒店,预订酒店
4. 发邮件给同事,告知行程
5. 将行程加入日历

6.2 自动化工作流(Automation)

1
2
3
4
5
6
7
场景:自动化代码审查
Agent 行为:
1. 拉取 PR 代码
2. 运行 lint/测试
3. 分析代码质量和安全性
4. 生成审查意见
5. 在 PR 下留言

6.3 研究助手(Research Agent)

1
2
3
4
5
6
7
8
任务:帮我写一篇关于 Transformer 的调研报告
Agent 行为:
1. 搜索相关论文
2. 下载并阅读论文摘要
3. 精读关键论文全文
4. 整理技术要点
5. 生成报告草稿
6. 检查事实准确性

6.4 代码生成与调试(Coding Agent)

1
2
3
4
5
6
7
8
9
任务:帮我写一个 Web 服务器
Agent 行为:
1. 分析需求
2. 选择技术栈
3. 编写代码
4. 运行测试
5. 发现 bug
6. 调试修复
7. 迭代直到通过所有测试

代表工具:GitHub Copilot Workspace、Devin(首个 AI 软件工程师)

七、Agent 的未来展望

7.1 长期视角

“未来每个人都会有一个 AI Agent,它像今天的智能手机一样普及。” — Sam Altman

7.2 当前局限性

  1. 可靠性:复杂任务成功率仍不高
  2. 成本:多步骤任务消耗大量 token
  3. 安全:Agent 有能力执行危险操作
  4. 可控性:Agent 的决策过程难以解释

7.3 发展方向

  • 更好的规划能力:更可靠的长期任务执行
  • 多模态 Agent:不仅处理文本,还处理图像、音频、视频
  • 具身智能(Embodied AI):Agent 控制机器人或虚拟化身
  • Agent 间协作:多个 Agent 分工协作完成更大任务

八、总结

LLM Agent 是大模型从”能说”到”能干”的关键:

  1. 核心组件:工具(Tools)+ 记忆(Memory)+ 规划(Planning)+ 状态(State)
  2. ReAct 范式:推理指导行动,行动验证推理
  3. 框架选择:LangChain(生态全)、CrewAI(多 Agent 协作)、AutoGPT(原型探索)
  4. 挑战:规划失效、循环陷阱、幻觉、工具可靠性
  5. 未来:Agent 将成为 AI 落地的主要形态

相关文章: