Agent 构建详解:让 LLM 自己干活
从"问一句答一句的对话"到"能连续工作 4 小时的同事"——Agent 是 LLM 应用工程的下一步。
L4-01 你学了 LLM 怎么训。L4-02/03 学了 Prompt 和 RAG。 这一篇讲 LLM 应用工程的”最高形态”——Agent。
Cursor 4.0 用 Agent 模式自主连续工作 4 小时;Claude 4.6 + Devin 已经能完整完成 PR;这些都基于 Agent 架构。
什么是 Agent
定义:一个能自主规划、调用工具、连续行动以完成多步任务的 AI 系统。
不同于:
- 普通 Chat:一问一答
- RAG:检索 + 生成(一轮)
- Agent:循环执行 + 决策 + 工具调用 + 反思
用户: "帮我把这个 Python 项目从 Vue 2 迁移到 Vue 3"
普通 LLM: "好的,要这么做..." (列出步骤但不执行)
Agent:
→ 读取项目结构
→ 识别所有 Vue 2 文件
→ 逐个文件修改
→ 运行测试
→ 修复错误
→ 重复...
→ 最后给出报告
Agent 真的在做事,不只是说话。
Agent 的核心组件
一个完整 Agent 通常有 4 个组件:
1. LLM “大脑”
最强的 LLM(GPT-4o / Claude / Gemini Pro)—— 负责”思考”和”决策”。
2. Tools(工具)
Agent 能调用的外部能力:
- 网页搜索
- 代码执行
- 文件读写
- API 调用
- 数据库查询
- 任何你包装好的函数
3. Memory(记忆)
- 短期:当前对话上下文
- 长期:跨对话的状态(向量数据库、文件)
4. Planning(规划)
让 Agent 把大任务拆成小步骤—— 然后逐步执行 + 检查结果。
ReAct:最经典的 Agent 范式
2022 年提出的 ReAct(Reasoning + Acting)—— 几乎所有 Agent 都基于这个:
任务: "今年苹果公司的市值是多少?"
Thought: 我需要查询最新数据。
Action: web_search("Apple market cap 2026")
Observation: 搜索结果:"Apple 市值约 3.8 万亿美元..."
Thought: 我有了答案。
Action: respond("Apple 当前市值约 3.8 万亿美元")
Thought → Action → Observation → Thought … 的循环。
用 prompt 实现
PROMPT = """你是一个 ReAct Agent。可用工具:
- web_search(query): 搜网页
- calculator(expression): 算数学
- respond(text): 回答用户
按下面格式工作:
Thought: ...(思考)
Action: tool_name(args)
Observation: (工具返回)
Thought: ...
...
最后用 respond() 结束。
用户问题: {user_question}
"""
让 LLM 按这个格式输出——解析它的 Action,调用工具,把结果作为 Observation 喂回——循环。
Tool Calling(工具调用)
主流 LLM API 都内置了 Tool Calling 支持:
OpenAI Function Calling
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取某地的天气",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市名"}
}
}
}
}]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "北京今天天气怎样?"}],
tools=tools
)
# 模型会输出 tool_call 信号
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(args["location"])
# 把结果送回 LLM 让它生成最终回复
MCP(Model Context Protocol)
2024 年 Anthropic 提出的标准——让任何工具都能接入任何 LLM。
LLM (Claude / GPT / Llama)
↓ MCP 协议
工具服务器(任何人写)
- Google Drive 工具
- GitHub 工具
- 数据库工具
- 自己写的业务工具
MCP 类比:USB——任何外设都能插任何电脑。 MCP 让 Agent 生态可组合。
主流 Agent 框架
| 框架 | 特点 |
|---|---|
| LangChain Agents | 最早、最大、生态广 |
| LlamaIndex Agents | 聚焦 RAG + Agent |
| AutoGen(微软) | 多 Agent 协作 |
| CrewAI | ”团队”式 Agent |
| Anthropic Computer Use | Claude 操作电脑 |
| OpenAI Swarm | 简洁的 Agent 编排 |
| Cursor / Devin | 编程专用 |
用 LangChain 5 行写个 Agent
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from langchain.tools import DuckDuckGoSearchRun, PythonREPLTool
llm = OpenAI(temperature=0)
tools = [DuckDuckGoSearchRun(), PythonREPLTool()]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
agent.run("Find Tesla's stock price today and tell me the % change vs last year.")
5 行启动一个能搜网 + 算账的 Agent——但要把它做到生产级还有很多工程细节。
Agent 工程的关键挑战
1. 错误传播
Agent 多步执行——一步错,可能影响整个流程。
解决:
- 每步做”sanity check”
- 关键决策让用户确认
- 设置成本/时间上限
2. 死循环
LLM 可能陷入”思考-行动”死循环—— 比如反复尝试同一个失败的操作。
解决:
- 设置 max_steps(如 30 步)
- 检测重复行为
- 内置”我放弃了”机制
3. 工具选择困难
工具多了,LLM 选错也常见—— 特别是 30+ 工具的环境。
解决:
- 工具描述写得极清晰
- 用 RAG 选最相关的 N 个工具喂给 LLM
- 工具分层(先选”工具类别”再选”具体工具”)
4. 上下文爆炸
Agent 跑久了,上下文越来越长——
- 显存压力
- 推理慢
- 注意力涣散
解决:
- 总结历史步骤(“中间状态摘要”)
- 关键事实写入长期记忆
- 关键时刻”重新开始”
5. 验证
每步操作的结果怎么知道对错?
解决:
- 单元测试(如果是写代码)
- 人工检查(关键步骤)
- 用另一个 LLM 当 critic(Reflexion 风格)
一个 Agent 的真实架构
实战中的”生产级 Agent”:
┌─ Memory(向量 DB)
│
用户输入 ──────→ Agent Controller
│ ↓
│ Planner (LLM)
│ ↓
│ Tool Selector (RAG)
│ ↓
│ Executor (LLM + Tools)
│ ↓
│ Validator (另一个 LLM 或规则)
│ ↓
│ Memory 更新
│
输出 + 解释
多组件 + 多次 LLM 调用 + 完整日志。 不是 1 行 prompt 能做出来的。
经典 Agent 应用
1. 编程 Agent
- Cursor 4.0 Agent Mode: 跨多文件 refactor
- Devin: “AI 软件工程师”
- Claude Code: 在终端的编程 Agent
- GitHub Copilot Workspace: 任务级编程
编程是 Agent 最成熟的领域——因为反馈快(编译/测试)。
2. 研究 Agent
- Perplexity Pro: 深度搜索 + 综合
- GPT-4 with web: 多轮检索
- Anthropic Computer Use: 用浏览器看网页
3. 业务自动化
- 客服 Agent: 自主处理客户工单
- HR Agent: 简历筛选 + 初步面试
- 数据分析 Agent: SQL 生成 + 可视化
4. 个人助理
- Manus: 全栈个人 AI
- Claude with Memory: 长期记忆 + 上下文
- OpenAI Operator: 电脑操作
多 Agent 协作
更高级——让几个 Agent 互相合作:
项目经理 Agent: 拆分任务
↓
设计师 Agent: 设计方案
↓
工程师 Agent: 写代码
↓
测试员 Agent: 验证
↓
项目经理 Agent: 汇总
每个 Agent 专精一个角色,集体能力 > 单 Agent。
代表框架:AutoGen(Microsoft)、CrewAI。
2026 年的趋势:从”Agent” → “Agent 团队”。
安全风险
Agent 比单纯 LLM 危险得多—— 因为它真的能做事。
主要风险
- Prompt Injection: 网页内容里藏指令”删掉所有文件”——Agent 真的去删
- 越权调用: Agent 该不该有权访问你的银行账户?
- 成本失控: Agent 不停调用昂贵 API
- 数据泄露: Agent 把敏感信息发给外部服务
防御实践
- 沙箱执行: 危险工具在隔离环境跑
- 二次确认: 重要操作让用户点”确认”
- 成本上限: 单次任务不超过 $X
- 白名单工具: 只允许预定义动作
- 审计日志: 全过程可追溯
Agent 的未来
预言:
- 2026-2027:编程 Agent 接近完全替代初级工程师
- 2027-2028:个人 AI 助理普及(“我的 Agent 管我的日程”)
- 2028-2030:垂直行业的”专家 Agent”成熟
- 2030+:通用 Agent 出现?(AGI 问题)
当前所有大公司的核心战略——从模型到 Agent。
- 用 LangChain / LlamaIndex 跑通几个 demo
- 读 Anthropic 的 “Computer Use” 公告(2024)
- 读 Lilian Weng 的 “Building LLM Agents” 系列博客
- 自己做一个项目——Agent 比读论文更需要实战
L4 后续推荐:L4-05 LoRA 微调(你已经读过);L4-06 推理优化 等。
读到这里说明你认真在学 🎯
订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。