什么是 AI Agent
AI Agent(人工智能智能体)是基于大语言模型(LLM)的自主计算实体,能够感知环境、规划任务、调用工具、执行行动,是传统 AI 从"被动响应"到"主动执行"的重大飞跃。
一、Agent 定义与本质
1.1 Agent 是什么
Agent(智能体) 是一种能够自主感知环境、做出决策并执行行动的系统。在 AI 领域,AI Agent 特指以大语言模型(LLM)为"大脑",具备自主规划、工具调用、记忆存储能力的智能系统。
┌─────────────────────────────────────────────────────────┐
│ AI Agent 架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ 用户输入 ──→ ┌─────────────────────────┐ │
│ │ LLM(大脑/决策层) │ │
│ │ ┌─────┬─────┬─────┬─────┐│ │
│ │ │规划器│记忆库│工具集│执行器││ │
│ │ └─────┴─────┴─────┴─────┘│ │
│ └───────────┬─────────────┘ │
│ ↓ │
│ 执行行动/返回结果 │
│ ↓ │
│ 环境反馈 │
└─────────────────────────────────────────────────────────┘1.2 Agent 的四大核心特性
| 特性 | 说明 | 示例 |
|---|---|---|
| 自主性(Autonomy) | 无需人工干预,自主决策和执行 | 自动拆解复杂任务、选择合适工具 |
| 反应性(Reactivity) | 感知环境变化并实时响应 | 根据执行结果调整策略 |
| 主动性(Proactivity) | 主动采取行动实现目标 | 发现问题主动修复、主动学习 |
| 社会性(Social Ability) | 与其他 Agent 或人类协作 | 多 Agent 协作、人机对话 |
1.3 Agent 与传统软件的本质区别
┌────────────────────────────────────────────────────────────┐
│ 传统软件 vs AI Agent │
├──────────────────────┬─────────────────────────────────────┤
│ 传统软件 │ AI Agent │
├──────────────────────┼─────────────────────────────────────┤
│ 预定义流程(If-Else)│ 自主决策(LLM 推理) │
│ 功能导向 │ 目标导向 │
│ 被动响应 │ 主动执行 │
│ 固定规则 │ 适应环境变化 │
│ 需要详细指令 │ 理解意图自动执行 │
│ 无法处理未知场景 │ 可处理未见过的情况 │
└──────────────────────┴─────────────────────────────────────┘二、Agent 核心组件
2.1 四大核心组件概览
一个完整的 AI Agent 系统包含四个核心组件:
| 组件 | 英文 | 职责 | 关键技术 |
|---|---|---|---|
| 规划器 | Planning | 任务分解、路径规划、决策制定 | CoT、ToT、ReAct |
| 记忆库 | Memory | 存储历史信息、上下文管理 | 向量数据库、RAG |
| 工具集 | Tools | 扩展能力边界、连接外部系统 | Function Calling、API |
| 执行器 | Action | 执行具体操作、获取反馈 | 沙箱环境、安全执行 |
┌─────────────┐
│ 用户目标 │
└──────┬──────┘
↓
┌──────────────────────────────────────────────┐
│ 规划器(Planning) │
│ ┌────────────────────────────────────────┐ │
│ │ 1. 理解目标 │ │
│ │ 2. 分解任务(Task Decomposition) │ │
│ │ 3. 生成执行计划 │ │
│ └────────────────────────────────────────┘ │
└──────────────────────┬───────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ 记忆库(Memory) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 短期记忆 │ │ 长期记忆 │ │ 工作记忆 │ │
│ │(上下文) │ │(向量DB) │ │(任务状态) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────┬───────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ 工具集(Tools) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐│
│ │搜索工具│ │代码执行│ │数据库 │ │文件操作││
│ └────────┘ └────────┘ └────────┘ └────────┘│
└──────────────────────┬───────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ 执行器(Action) │
│ ┌────────────────────────────────────────┐ │
│ │ 1. 调用工具执行任务 │ │
│ │ 2. 获取执行结果 │ │
│ │ 3. 反馈给规划器进行迭代 │ │
│ └────────────────────────────────────────┘ │
└──────────────────────┬───────────────────────┘
↓
┌─────────────┐
│ 最终结果 │
└─────────────┘2.2 规划器(Planning)
规划器是 Agent 的"大脑",负责理解目标、分解任务、制定执行计划。
# Agent 规划流程示例
class AgentPlanner:
def plan(self, user_goal: str) -> list[Task]:
"""
规划流程:
1. 理解用户意图
2. 分解为子任务
3. 确定任务依赖关系
4. 生成执行计划
"""
# Step 1: 理解意图
intent = self.llm.understand(user_goal)
# Step 2: 分解任务
subtasks = self.llm.decompose(intent)
# Step 3: 规划顺序(考虑依赖)
execution_plan = self.create_plan(subtasks)
return execution_plan
# 示例:用户目标 "帮我分析上季度销售数据并生成报告"
# 分解结果:
# Task 1: 连接数据库,获取销售数据
# Task 2: 数据清洗和预处理
# Task 3: 统计分析和可视化
# Task 4: 生成报告文档常用规划技术:
| 技术 | 全称 | 说明 |
|---|---|---|
| CoT | Chain-of-Thought | 思维链,逐步推理 |
| ToT | Tree-of-Thought | 思维树,多路径探索 |
| ReAct | Reasoning + Acting | 推理与行动交替 |
2.3 记忆库(Memory)
记忆库负责存储和管理 Agent 的"知识"和"经验",解决 LLM 上下文窗口有限的问题。
# 三层记忆架构
class AgentMemory:
def __init__(self):
self.short_term = ShortTermMemory() # 当前会话上下文
self.long_term = LongTermMemory() # 向量数据库持久化
self.working = WorkingMemory() # 任务执行状态
def remember(self, info: str, memory_type: str):
"""存储记忆"""
if memory_type == "short":
self.short_term.add(info)
elif memory_type == "long":
self.long_term.store(info)
else:
self.working.update(info)
def recall(self, query: str) -> str:
"""检索记忆"""
# 优先从工作记忆获取
if self.working.has(query):
return self.working.get(query)
# 向量检索长期记忆
return self.long_term.search(query)2.4 工具集(Tools)
工具集是 Agent 的"手脚",扩展 LLM 的能力边界,使其能够执行实际操作。
# 工具定义示例
from typing import Literal
from pydantic import BaseModel
class SearchTool(BaseModel):
"""搜索工具"""
name: str = "web_search"
description: str = "搜索互联网获取实时信息"
def execute(self, query: str) -> str:
# 调用搜索 API
return search_engine.search(query)
class CodeExecutor(BaseModel):
"""代码执行工具"""
name: str = "code_execute"
description: str = "执行 Python 代码"
def execute(self, code: str) -> str:
# 在沙箱环境中执行
return sandbox.run(code)
# 工具注册
tools = [SearchTool(), CodeExecutor(), DatabaseTool(), ...]2.5 执行器(Action)
执行器负责实际调用工具、执行操作、获取反馈,并与规划器形成闭环。
class AgentExecutor:
def execute(self, task: Task, tools: list) -> Result:
"""
执行流程:
1. 选择合适的工具
2. 构造调用参数
3. 执行并获取结果
4. 错误处理和重试
"""
# Step 1: 选择工具
tool = self.select_tool(task, tools)
# Step 2: 构造参数
params = self.llm.generate_params(task, tool)
# Step 3: 执行
try:
result = tool.execute(**params)
except Exception as e:
# Step 4: 错误处理
result = self.handle_error(e, task)
return result三、Agent 工作流程
3.1 基本工作流程
┌─────────────────────────────────────────────────────────────┐
│ Agent 工作流程(ReAct 模式) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 用户输入 │───→│ 理解目标 │───→│ 规划任务 │───→│ 执行行动 │ │
│ └─────────┘ └─────────┘ └─────────┘ └────┬────┘ │
│ │ │
│ ┌────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 观察与反思 │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ 执行成功? │ │ 需要调整? │ │ 任务完成? │ │ │
│ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │
│ │ │ │ │ │ │
│ │ ↓ ↓ ↓ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 继续执行 │ │ 调整策略 │ │ 返回结果 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘3.2 ReAct 循环详解
ReAct(Reasoning + Acting) 是最经典的 Agent 架构模式,将推理和行动交替进行:
# ReAct 循环示例
def react_loop(agent, user_goal):
"""
ReAct 循环:
Thought → Action → Observation → Thought → ...
"""
context = user_goal
while not agent.is_finished():
# Thought: 思考下一步
thought = agent.think(context)
print(f"Thought: {thought}")
# Action: 决定执行什么动作
action, action_input = agent.decide_action(thought)
print(f"Action: {action}({action_input})")
# Observation: 执行并观察结果
observation = agent.execute(action, action_input)
print(f"Observation: {observation}")
# 更新上下文
context += f"\nThought: {thought}\nAction: {action}\nObservation: {observation}"
return agent.get_final_answer()实际执行示例:
用户: 帮我查一下北京明天的天气,并给出穿衣建议
Thought: 我需要先搜索北京明天的天气信息
Action: web_search("北京明天天气")
Observation: 北京明天晴,气温 15-25°C,风力 3 级
Thought: 已获取天气信息,现在需要给出穿衣建议
Action: generate_advice("晴天,15-25°C,3级风")
Observation: 建议穿着轻薄外套,早晚温差较大,注意保暖
Thought: 我已经完成了用户的请求
Final Answer: 北京明天天气晴朗,气温 15-25°C,风力 3 级。
建议穿着轻薄外套,早晚温差较大,注意保暖。四、Agent 类型分类
4.1 按架构复杂度分类
| 类型 | 特点 | 典型代表 | 适用场景 |
|---|---|---|---|
| 简单 Agent | 单任务、单工具 | 搜索助手 | 信息查询 |
| 复杂 Agent | 多任务、多工具 | AutoGPT | 项目开发 |
| 多 Agent 系统 | 多角色协作 | MetaGPT | 企业级应用 |
4.2 按决策模式分类
| 类型 | 特点 | 优势 | 劣势 |
|---|---|---|---|
| 反应式 Agent | 感知-行动,无内部状态 | 响应快速 | 无法处理复杂任务 |
| 慎思式 Agent | 规划-推理-执行 | 处理复杂任务 | 响应较慢 |
| 混合式 Agent | 结合两种模式 | 兼顾效率和智能 | 架构复杂 |
4.3 按应用领域分类
┌─────────────────────────────────────────────────────────────┐
│ Agent 应用领域分类 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 代码助手 │ │ 研究助手 │ │ 智能客服 │ │
│ │ (Devin等) │ │ (Perplexity) │ │ (智能对话) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 数据分析 │ │ 自动化运维 │ │ 个人助理 │ │
│ │ (报表生成) │ │ (监控告警) │ │ (日程管理) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘五、Agent 发展里程碑
5.1 发展时间线
| 时间 | 里程碑 | 意义 |
|---|---|---|
| 2022.10 | AutoGPT | 首个自主任务执行 Agent |
| 2023.04 | BabyAGI | 任务驱动自主 Agent |
| 2023.06 | MetaGPT | 多 Agent 协作框架 |
| 2023.10 | LangChain Agent | 工业级 Agent 框架 |
| 2024.01 | OpenAI Assistants API | 官方 Agent API |
| 2024.03 | Devin | 首个 AI 软件工程师 |
| 2024.06 | Claude Computer Use | 桌面操作 Agent |
5.2 代表性框架对比
┌──────────────────────────────────────────────────────────────┐
│ Agent 发展演进 │
├──────────────────────────────────────────────────────────────┤
│ │
│ AutoGPT BabyAGI MetaGPT LangChain │
│ (自主执行) (任务驱动) (多Agent协作) (框架化) │
│ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐│
│ │ 单Agent │ ──→ │ 任务队列 │ ──→ │ 多Agent │ ──→ │ 工业级 ││
│ │ 自主执行 │ │ 循环执行 │ │ 角色协作 │ │ 框架生态 ││
│ └────────┘ └────────┘ └────────┘ └────────┘│
│ │
│ 2022.10 2023.04 2023.06 2023.10 │
│ │
└──────────────────────────────────────────────────────────────┘六、常见面试题
Q1: 什么是 AI Agent?它和传统软件有什么区别?
A:
Agent 定义:AI Agent 是基于大语言模型的自主计算实体,能够感知环境、规划任务、调用工具、执行行动。
与传统软件区别:
| 对比项 | 传统软件 | AI Agent |
|---|---|---|
| 控制流 | 预定义(If-Else) | 自主决策(LLM 推理) |
| 目标导向 | 功能导向 | 目标导向 |
| 灵活性 | 固定规则 | 适应环境变化 |
| 能力边界 | 有限、固定 | 可扩展(工具调用) |
Q2: Agent 的四大核心组件是什么?各自的作用?
A:
| 组件 | 作用 | 关键技术 |
|---|---|---|
| 规划器 | 理解目标、分解任务、制定计划 | CoT、ToT、ReAct |
| 记忆库 | 存储历史、上下文管理 | 向量数据库、RAG |
| 工具集 | 扩展能力、连接外部系统 | Function Calling、API |
| 执行器 | 执行操作、获取反馈 | 沙箱环境、安全执行 |
Q3: 什么是 ReAct 架构?它的工作原理是什么?
A:
ReAct = Reasoning + Acting,是一种将推理和行动交替进行的 Agent 架构。
工作流程:
- Thought(思考):分析当前状态,决定下一步
- Action(行动):选择并执行工具
- Observation(观察):获取执行结果
- 循环:重复上述过程直到任务完成
优势:
- 推理过程可解释
- 执行过程可追溯
- 错误可及时发现和纠正
Q4: Agent 如何实现长期记忆?
A:
Agent 通过向量数据库实现长期记忆:
# 记忆存储流程
def store_memory(text: str):
# 1. 文本向量化
embedding = embedding_model.encode(text)
# 2. 存入向量数据库
vector_db.insert(
id=generate_id(),
vector=embedding,
metadata={"text": text, "timestamp": now()}
)
# 记忆检索流程
def recall_memory(query: str, top_k=5):
# 1. 查询向量化
query_embedding = embedding_model.encode(query)
# 2. 向量相似度搜索
results = vector_db.search(query_embedding, top_k=top_k)
return resultsQ5: Agent 工具调用的原理是什么?
A:
Agent 工具调用基于 Function Calling 机制:
# 1. 工具定义
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}
}
]
# 2. LLM 决定调用哪个工具
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "北京天气怎么样"}],
tools=tools
)
# 3. LLM 返回工具调用请求
# response.tool_calls[0].function.name = "get_weather"
# response.tool_calls[0].function.arguments = {"city": "北京"}
# 4. 执行工具并返回结果
result = get_weather("北京")Q6: Agent 如何处理执行失败的情况?
A:
Agent 通过反思机制处理失败:
def handle_failure(agent, task, error):
# 1. 分析失败原因
reflection = agent.reflect(f"任务执行失败: {error}")
# 2. 生成替代方案
alternative = agent.plan_alternative(reflection)
# 3. 重试或调整目标
if alternative.feasible:
return agent.execute(alternative)
else:
return "无法完成任务,原因:..."Q7: 单 Agent 和多 Agent 系统有什么区别?
A:
| 对比项 | 单 Agent | 多 Agent 系统 |
|---|---|---|
| 架构 | 一个 Agent 完成所有任务 | 多个专业 Agent 协作 |
| 优势 | 简单、易部署 | 专业分工、复杂任务 |
| 劣势 | 能力有限、易出错 | 架构复杂、协调成本 |
| 适用场景 | 简单任务 | 复杂企业级应用 |
Q8: 如何评估 Agent 的性能?
A:
常用评估指标:
| 指标 | 说明 | 计算方式 |
|---|---|---|
| 任务成功率 | 正确完成任务的比例 | 成功数 / 总任务数 |
| 工具准确率 | 正确选择工具的比例 | 正确调用数 / 总调用数 |
| 平均步数 | 完成任务的平均步骤 | 总步数 / 任务数 |
| 响应时间 | 从输入到输出的时间 | 平均响应延迟 |
七、总结
| 概念 | 一句话总结 | 面试关键词 |
|---|---|---|
| Agent 定义 | 基于 LLM 的自主计算实体 | 自主性、反应性、主动性、社会性 |
| 四大组件 | 规划+记忆+工具+执行 | Planning、Memory、Tools、Action |
| ReAct | 推理与行动交替进行 | Thought-Action-Observation 循环 |
| 工具调用 | 扩展 LLM 能力边界 | Function Calling、API |
| 长期记忆 | 向量数据库持久化 | RAG、Embedding、相似度检索 |
最后更新:2026年3月18日