Agent 与传统 LLM 的区别
AI Agent 是 LLM 的"升级版",从被动响应进化为主动执行。理解两者的区别是掌握 Agent 技术的关键。
一、核心概念对比
1.1 LLM(大语言模型)是什么
LLM(Large Language Model) 是基于 Transformer 架构的大规模语言模型,核心能力是文本理解和生成。
┌─────────────────────────────────────────────────────────┐
│ LLM 工作模式 │
├─────────────────────────────────────────────────────────┤
│ │
│ 输入文本 ──→ ┌─────────────────┐ ──→ 输出文本 │
│ │ │ │
│ │ LLM 模型 │ │
│ │ (GPT/Claude等) │ │
│ │ │ │
│ └─────────────────┘ │
│ │
│ 特点:输入 → 处理 → 输出(一次性,无状态) │
│ │
└─────────────────────────────────────────────────────────┘LLM 核心能力:
- 文本理解与生成
- 知识问答
- 代码生成
- 翻译与摘要
LLM 核心局限:
- 无法执行实际操作
- 知识有时效性限制
- 上下文窗口有限
- 无法访问外部系统
1.2 AI Agent 是什么
AI Agent 是以 LLM 为核心,增加了规划、记忆、工具、执行能力的智能系统。
┌─────────────────────────────────────────────────────────────┐
│ Agent 工作模式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 用户目标 ──→ ┌─────────────────────────────────┐ │
│ │ Agent │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ LLM │ │ │
│ │ │ ┌───┬───┬───┬───┐ │ │ │
│ │ │ │规划│记忆│工具│执行│ │ │ │
│ │ │ └───┴───┴───┴───┘ │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────┬─────────────────┘ │
│ ↓ │
│ 执行行动/返回结果 │
│ ↓ │
│ 环境反馈 │
│ ↓ │
│ ┌─────────────────┐ │
│ │ 迭代优化循环 │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘1.3 一句话区分
| 系统 | 一句话定义 |
|---|---|
| LLM | 能说会道的"大脑",但只能输出文本 |
| Agent | 有手有脚的"智能体",能规划、能执行、能反思 |
二、核心能力对比
2.1 能力维度对比表
| 能力维度 | LLM | Agent | 差异说明 |
|---|---|---|---|
| 文本生成 | ✅ 核心 | ✅ 基础 | Agent 继承 LLM 的文本能力 |
| 知识问答 | ✅ 有限 | ✅ 增强 | Agent 可联网获取最新信息 |
| 代码生成 | ✅ 生成 | ✅ 执行 | Agent 能运行代码并验证结果 |
| 任务规划 | ❌ 无 | ✅ 核心 | Agent 能分解复杂任务 |
| 工具调用 | ❌ 无 | ✅ 核心 | Agent 能调用外部 API 和工具 |
| 长期记忆 | ❌ 无 | ✅ 核心 | Agent 能持久化存储记忆 |
| 自主执行 | ❌ 无 | ✅ 核心 | Agent 能自动完成任务 |
| 反思纠错 | ❌ 无 | ✅ 核心 | Agent 能自我检查和改进 |
2.2 架构对比
┌────────────────────────────────────────────────────────────────┐
│ 架构对比 │
├────────────────────────┬───────────────────────────────────────┤
│ LLM │ Agent │
├────────────────────────┼───────────────────────────────────────┤
│ │ │
│ ┌──────────────┐ │ ┌──────────────────┐ │
│ │ │ │ │ │ │
│ │ Input Text │ │ │ User Goal │ │
│ │ │ │ │ │ │
│ └──────┬───────┘ │ └────────┬─────────┘ │
│ │ │ │ │
│ ↓ │ ↓ │
│ ┌──────────────┐ │ ┌──────────────────┐ │
│ │ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ │ Planner │ │ │
│ │ LLM │ │ │ └──────┬───────┘ │ │
│ │ │ │ │ ↓ │ │
│ │ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ │ Memory │ │ │
│ │ │ │ │ └──────┬───────┘ │ │
│ │ │ │ │ ↓ │ │
│ │ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ │ LLM │ │ │
│ │ │ │ │ └──────┬───────┘ │ │
│ │ │ │ │ ↓ │ │
│ │ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ │ Tools │ │ │
│ │ │ │ │ └──────┬───────┘ │ │
│ │ │ │ │ ↓ │ │
│ │ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ │ Executor │ │ │
│ └──────┬───────┘ │ │ └──────┬───────┘ │ │
│ │ │ │ ↓ │ │
│ ↓ │ │ ┌──────────────┐ │ │
│ ┌──────────────┐ │ │ │ Reflection │ │ │
│ │ │ │ │ └──────────────┘ │ │
│ │ Output Text │ │ └────────┬─────────┘ │
│ │ │ │ │ │
│ └──────────────┘ │ ↓ │
│ │ ┌──────────────────┐ │
│ 单次响应 │ │ Final Result │ │
│ 无状态 │ └──────────────────┘ │
│ 无执行能力 │ │
│ │ 迭代执行 │
│ │ 有状态记忆 │
│ │ 自主行动 │
│ │ │
└────────────────────────┴───────────────────────────────────────┘三、关键技术差异
3.1 记忆系统差异
LLM 的"记忆":
- 仅限于上下文窗口(Context Window)
- 会话结束后记忆消失
- 上下文长度有限(4K-200K tokens)
# LLM 记忆示例
response = llm.chat([
{"role": "user", "content": "我叫张三"},
{"role": "assistant", "content": "你好张三!"},
{"role": "user", "content": "我叫什么?"},
# 只能在当前会话中记住,会话结束后丢失
])
# response: "你叫张三"Agent 的记忆系统:
- 短期记忆:当前会话上下文
- 长期记忆:向量数据库持久化
- 工作记忆:任务执行状态
# Agent 三层记忆架构
class AgentMemory:
def __init__(self):
# 短期记忆:会话上下文
self.short_term = ConversationBuffer()
# 长期记忆:向量数据库
self.long_term = VectorDatabase(
embedding_model="text-embedding-3-small",
persist_directory="./memory_db"
)
# 工作记忆:任务状态
self.working = TaskStateManager()
def remember(self, info: str, importance: str = "normal"):
"""存储记忆"""
if importance == "critical":
# 重要信息存入长期记忆
self.long_term.add(info)
else:
# 普通信息存入短期记忆
self.short_term.add(info)
def recall(self, query: str):
"""检索记忆"""
# 先查工作记忆
if self.working.has(query):
return self.working.get(query)
# 再查短期记忆
if self.short_term.has(query):
return self.short_term.get(query)
# 最后查长期记忆(向量检索)
return self.long_term.search(query)3.2 工具调用能力
LLM:
- 只能生成调用代码,无法实际执行
- 无法访问实时数据
- 无法操作外部系统
# LLM 只能生成代码,无法执行
user: "帮我查一下北京现在的天气"
llm: "我可以帮你写一个查询天气的代码:
import requests
response = requests.get('https://api.weather.com/beijing')
print(response.json())
你需要自己运行这段代码。"Agent:
- 能实际调用工具执行操作
- 能获取实时数据
- 能操作数据库、文件系统、API
# Agent 可以实际执行工具调用
user: "帮我查一下北京现在的天气"
agent:
Thought: 需要调用天气 API 获取北京实时天气
Action: weather_api(city="北京")
Observation: {"temp": 25, "weather": "晴", "humidity": 60}
Answer: 北京现在天气晴朗,气温 25°C,湿度 60%3.3 任务规划能力
LLM:
- 单次响应,无规划能力
- 无法处理多步骤任务
- 无法自我纠错
# LLM 无法处理复杂多步骤任务
user: "帮我分析这个 CSV 文件,生成销售报告,并发送给团队"
llm: "我可以给你一个处理流程:
1. 使用 pandas 读取 CSV 文件
2. 进行数据分析
3. 生成报告文档
4. 发送邮件
但我无法实际执行这些步骤..."Agent:
- 自动规划任务步骤
- 顺序执行多步骤任务
- 执行过程中自我纠错
# Agent 自动规划和执行多步骤任务
user: "帮我分析这个 CSV 文件,生成销售报告,并发送给团队"
agent:
Task Plan:
1. [执行] 读取 sales.csv 文件
2. [执行] 数据清洗和分析
3. [执行] 生成销售报告 PDF
4. [执行] 发送邮件给团队
执行过程:
Step 1: 读取文件... ✓ (找到 1000 条记录)
Step 2: 分析数据... ✓ (发现销售额增长 15%)
Step 3: 生成报告... ✓ (report.pdf 已生成)
Step 4: 发送邮件... ✓ (已发送至 team@company.com)
最终结果: 任务完成!销售报告已发送给团队。3.4 自主性与反思能力
LLM:
- 被动响应
- 无法判断输出正确性
- 无法自我改进
Agent:
- 主动执行
- 能验证执行结果
- 能反思和纠错
# Agent 反思机制
class ReflectiveAgent:
def execute_with_reflection(self, task):
max_retries = 3
for attempt in range(max_retries):
# 执行任务
result = self.execute(task)
# 反思验证
reflection = self.reflect(
f"任务: {task}\n结果: {result}\n是否正确?"
)
if reflection.is_correct:
return result
else:
# 根据反思结果调整策略
self.adjust_strategy(reflection.suggestion)
return "多次尝试后仍无法完成任务"四、典型场景对比
4.1 信息查询场景
| 场景 | LLM 表现 | Agent 表现 |
|---|---|---|
| 静态知识问答 | ✅ 直接回答 | ✅ 直接回答 |
| 实时信息查询 | ❌ 无法获取 | ✅ 联网搜索获取 |
| 多源信息整合 | ❌ 无法访问 | ✅ 多工具协作整合 |
用户: "今天微软的股价是多少?"
LLM: "抱歉,我无法获取实时股价信息。我的知识截止到训练时间..."
Agent:
Thought: 需要查询实时股价
Action: stock_api(symbol="MSFT")
Observation: {"price": 378.91, "change": +2.35}
Answer: 微软(MSFT)今日股价为 $378.91,上涨 $2.354.2 代码开发场景
| 场景 | LLM 表现 | Agent 表现 |
|---|---|---|
| 代码生成 | ✅ 生成代码片段 | ✅ 生成完整代码 |
| 代码执行 | ❌ 无法执行 | ✅ 沙箱执行验证 |
| 错误调试 | ❌ 无法调试 | ✅ 自动运行、分析错误、修复 |
| 项目构建 | ❌ 无法操作 | ✅ 完整项目创建和构建 |
用户: "帮我写一个计算斐波那契数列的程序,并验证正确性"
# LLM 只能生成代码
llm: "这是一个 Python 程序:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
# 你需要自己运行测试..."
# Agent 可以生成并验证
agent:
Thought: 先生成代码,然后运行测试验证
Action: write_file("fib.py", code)
Action: run_code("python fib.py")
Observation: 测试通过,fibonacci(10) = 55 ✓
Answer: 程序已生成并验证正确。fibonacci(10) = 554.3 数据分析场景
| 场景 | LLM 表现 | Agent 表现 |
|---|---|---|
| 分析建议 | ✅ 提供思路 | ✅ 提供思路 |
| 数据读取 | ❌ 无法操作 | ✅ 读取文件/数据库 |
| 分析执行 | ❌ 无法执行 | ✅ 运行分析代码 |
| 报告生成 | ❌ 无法操作 | ✅ 生成文件/图表 |
4.4 自动化场景
| 场景 | LLM 表现 | Agent 表现 |
|---|---|---|
| 发送邮件 | ❌ 无法执行 | ✅ 调用邮件 API |
| 文件操作 | ❌ 无法操作 | ✅ 读写文件系统 |
| API 调用 | ❌ 无法调用 | ✅ 实际调用 API |
| 定时任务 | ❌ 无法调度 | ✅ 集成调度系统 |
五、成本与性能对比
5.1 资源消耗对比
| 维度 | LLM | Agent | 说明 |
|---|---|---|---|
| 单次调用成本 | 较低 | 较高 | Agent 需多次 LLM 调用 |
| 执行时间 | 快(秒级) | 慢(分钟级) | Agent 需多步骤执行 |
| 存储需求 | 无 | 向量数据库 | Agent 需持久化记忆 |
| 外部依赖 | 无 | 工具/API | Agent 依赖外部服务 |
5.2 适用场景建议
┌─────────────────────────────────────────────────────────────┐
│ 选择 LLM 还是 Agent? │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 选择 LLM │ │
│ │ • 简单问答、文本生成 │ │
│ │ • 知识查询(静态知识) │ │
│ │ • 代码片段生成(无需执行) │ │
│ │ • 快速响应需求(秒级) │ │
│ │ • 成本敏感场景 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 选择 Agent │ │
│ │ • 复杂多步骤任务 │ │
│ │ • 需要执行实际操作 │ │
│ │ • 需要访问外部系统/数据 │ │
│ │ • 需要长期记忆和上下文 │ │
│ │ • 需要自我纠错和迭代 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘六、技术演进路径
6.1 从 LLM 到 Agent 的演进
┌─────────────────────────────────────────────────────────────┐
│ 技术演进路径 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Stage 1: 纯 LLM │
│ ┌─────────────────┐ │
│ │ Input → Output │ 单次响应,无状态 │
│ └─────────────────┘ │
│ │ │
│ ↓ │
│ Stage 2: LLM + Prompt Engineering │
│ ┌─────────────────────┐ │
│ │ Prompt → LLM → Out │ 提示工程优化 │
│ └─────────────────────┘ │
│ │ │
│ ↓ │
│ Stage 3: LLM + RAG │
│ ┌─────────────────────────┐ │
│ │ Query → RAG → LLM → Out │ 检索增强生成 │
│ └─────────────────────────┘ │
│ │ │
│ ↓ │
│ Stage 4: Agent(LLM + Planning + Tools + Memory) │
│ ┌─────────────────────────────────────┐ │
│ │ Goal → Plan → Execute → Reflect │ 自主智能体 │
│ └─────────────────────────────────────┘ │
│ │ │
│ ↓ │
│ Stage 5: Multi-Agent System │
│ ┌─────────────────────────────────────┐ │
│ │ Agent1 ↔ Agent2 ↔ Agent3 → Result │ 多智能体协作 │
│ └─────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘6.2 Agent 是 LLM 的"能力扩展"
| 扩展维度 | LLM 基础能力 | Agent 扩展能力 |
|---|---|---|
| 时间 | 单次响应 | 多轮迭代执行 |
| 空间 | 文本空间 | 物理世界操作 |
| 记忆 | 上下文窗口 | 持久化存储 |
| 工具 | 无 | 无限扩展 |
| 自主性 | 被动 | 主动 |
七、常见面试题
Q1: LLM 和 Agent 的本质区别是什么?
A:
| 维度 | LLM | Agent |
|---|---|---|
| 本质 | 语言模型,处理文本 | 智能体,执行任务 |
| 输出 | 文本 | 文本 + 行动结果 |
| 记忆 | 无持久化 | 三层记忆系统 |
| 工具 | 无法调用 | 可调用任意工具 |
| 自主性 | 被动响应 | 主动规划执行 |
一句话总结:LLM 是 Agent 的"大脑",Agent = LLM + 规划 + 记忆 + 工具 + 执行。
Q2: 为什么 LLM 不能直接作为 Agent 使用?
A:
- 无执行能力:LLM 只能输出文本,无法实际执行操作
- 无持久记忆:会话结束后上下文丢失
- 无工具调用:无法访问外部系统和数据
- 无规划能力:无法自动分解复杂任务
- 无反思机制:无法验证输出正确性并纠错
Q3: Agent 如何解决 LLM 的上下文窗口限制?
A:
Agent 通过三层记忆架构解决上下文限制:
# 记忆压缩策略
class MemoryManager:
def compress_and_store(self, conversation):
# 1. 提取关键信息
key_info = self.extract_key_points(conversation)
# 2. 生成摘要
summary = self.llm.summarize(conversation)
# 3. 向量化存储
embedding = self.embedding_model.encode(summary)
self.vector_db.store(embedding, metadata={"summary": summary})
# 4. 需要时检索
relevant = self.vector_db.search(query_embedding, top_k=5)
return relevantQ4: Agent 的工具调用是如何实现的?
A:
Agent 工具调用基于 Function Calling 机制:
1. 定义工具:描述工具的功能和参数
2. LLM 决策:根据用户意图选择工具
3. 参数填充:LLM 生成调用参数
4. 执行工具:在安全环境中执行
5. 结果处理:将结果返回给 LLM 继续推理Q5: 什么时候用 LLM,什么时候用 Agent?
A:
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 简单问答 | LLM | 无需工具,直接回答 |
| 文本生成 | LLM | 单次输出即可 |
| 知识查询(静态) | LLM | 训练数据已包含 |
| 实时数据查询 | Agent | 需要联网获取 |
| 复杂任务执行 | Agent | 需要多步骤规划和执行 |
| 文件/系统操作 | Agent | 需要实际执行能力 |
| 长期记忆场景 | Agent | 需要持久化存储 |
Q6: Agent 相比 LLM 有哪些额外成本?
A:
| 成本类型 | 说明 |
|---|---|
| 计算成本 | 多次 LLM 调用,成本翻倍 |
| 时间成本 | 多步骤执行,响应更慢 |
| 存储成本 | 向量数据库持久化存储 |
| 运维成本 | 工具集成、错误处理更复杂 |
| 安全成本 | 执行操作需要权限管理和沙箱 |
Q7: 如何评估 Agent 相比 LLM 的性能提升?
A:
| 指标 | LLM | Agent | 评估方式 |
|---|---|---|---|
| 任务完成率 | 低(只能生成文本) | 高(能执行操作) | 成功完成任务的比例 |
| 实时信息获取 | 0% | 高 | 联网任务成功率 |
| 多步骤任务 | 0% | 高 | 复杂任务完成率 |
| 错误自纠正 | 无 | 有 | 重试成功次数 |
| 长期记忆 | 无 | 有 | 跨会话任务完成率 |
Q8: Agent 是否会完全取代 LLM?
A:
不会完全取代,而是互补关系:
- LLM 适用场景:快速响应、简单问答、文本生成、成本敏感
- Agent 适用场景:复杂任务、实际操作、多步骤执行、长期记忆
Agent 的底层仍然是 LLM,Agent = LLM + 扩展能力。选择哪种方案取决于具体需求。
八、总结
| 对比维度 | LLM | Agent |
|---|---|---|
| 定义 | 语言模型 | 智能体 |
| 核心能力 | 文本生成 | 任务执行 |
| 输出 | 文本 | 文本 + 行动结果 |
| 记忆 | 无持久化 | 三层记忆 |
| 工具 | 无法调用 | 无限扩展 |
| 自主性 | 被动响应 | 主动执行 |
| 适用场景 | 简单问答、文本生成 | 复杂任务、实际操作 |
| 成本 | 低 | 高 |
一句话总结:Agent 是 LLM 的"升级版",从"能说会道"进化为"能说会做"。
最后更新:2026年3月18日