Agent(智能体)应用 的入门学习路径
-
- [一、什么是 Agent?------从"大脑"到"行动派"](#一、什么是 Agent?——从“大脑”到“行动派”)
- [二、Agent 的核心组件(你需要掌握哪些技术?)](#二、Agent 的核心组件(你需要掌握哪些技术?))
- [三、主流 Agent 开发框架(2025年推荐)](#三、主流 Agent 开发框架(2025年推荐))
-
- [1. **LangChain**(最流行,生态最全)](#1. LangChain(最流行,生态最全))
- [2. **LlamaIndex**(擅长 RAG + Agent)](#2. LlamaIndex(擅长 RAG + Agent))
- [3. **AutoGen**(微软出品,适合多 Agent 协作)](#3. AutoGen(微软出品,适合多 Agent 协作))
- [4. **MiniAgent(自建)**------最推荐入门](#4. MiniAgent(自建)——最推荐入门)
- [四、从零手写一个极简 Agent(ReAct 模式)](#四、从零手写一个极简 Agent(ReAct 模式))
-
- [场景:一个能进行"数学计算 + 查询当前时间"的 Agent](#场景:一个能进行“数学计算 + 查询当前时间”的 Agent)
- 五、学习路线图(从入门到实战)
- 六、避坑指南(来自十年经验)
- 七、推荐资源
- 结语
作为一名在AI应用开发领域深耕多年的从业者,梳理 Agent(智能体)应用 的入门学习路径。Agent 是当前大模型应用中最具想象力的方向之一------它让 LLM 不再只是一个"聊天引擎",而成为一个能 感知环境、制定计划、调用工具、执行动作并自我反思 的自主实体。
下面将按照"概念→核心能力→主流框架→动手实践→学习建议"的顺序,为你搭建一个清晰、可落地的入门框架。
一、什么是 Agent?------从"大脑"到"行动派"
传统的大模型(如直接调用 ChatGPT)是被动的:你问一句,它答一句。而 Agent 则拥有:
- 规划能力:将复杂任务拆解成子步骤(例如"预订机票"需要先查询航班、比较价格、填写信息、支付)。
- 记忆能力:短期记忆(对话上下文)和长期记忆(向量数据库存储历史经验)。
- 工具使用:调用外部 API、数据库、代码解释器、搜索引擎等。
- 行动与反馈:执行具体操作,并根据结果调整下一步计划。
一个经典的比喻:LLM 是 Agent 的"大脑",而工具、API 是它的"手和脚"。
二、Agent 的核心组件(你需要掌握哪些技术?)
无论使用何种框架,一个完整的 Agent 系统通常包含以下模块:
| 组件 | 作用 | 入门技术点 |
|---|---|---|
| 大语言模型(LLM) | 理解意图、生成计划和推理 | OpenAI API / 国产模型(通义千问、智谱)、本地模型(Ollama + Llama3) |
| 提示词工程(Prompt) | 告诉 Agent 如何思考、用什么格式输出 | ReAct 模式(Reason+Act)、CoT(思维链)、结构化输出(JSON) |
| 工具(Tools) | 让 Agent 获取实时信息或执行动作 | 搜索 API、计算器、文件读写、数据库查询、代码执行器 |
| 记忆(Memory) | 维护对话历史或长期知识 | 对话缓冲区、向量数据库(Chroma, FAISS) |
| 解析与执行 | 解析 LLM 输出的工具调用指令,并安全运行 | JSON 解析、函数调用(Function Calling)、子进程隔离 |
三、主流 Agent 开发框架(2025年推荐)
对于初学者,我建议从 最接近原生 LLM API 的框架开始,避免过早陷入复杂抽象。
1. LangChain(最流行,生态最全)
- 优点:文档丰富,组件化设计(LCEL),支持大量内置工具和记忆方案。
- 缺点:抽象较多,学习曲线稍陡。
- 学习重点:
create_react_agent、Tool装饰器、AgentExecutor。
2. LlamaIndex(擅长 RAG + Agent)
- 如果你需要 Agent 查询私有文档/数据库,LlamaIndex 的
FunctionCallingAgent非常直观。 - 学习重点:
QueryEngineTool、AgentRunner。
3. AutoGen(微软出品,适合多 Agent 协作)
- 支持多个 Agent 对话协作,适合复杂任务分解。
- 学习重点:
AssistantAgent、UserProxyAgent、GroupChat。
4. MiniAgent(自建)------最推荐入门
用 100 行代码自己实现一个 ReAct Agent,彻底理解原理。下面我会给出示例。
四、从零手写一个极简 Agent(ReAct 模式)
这是我自己在教学中反复使用的例子,它不使用任何框架,只依赖 OpenAI API(或任何兼容接口),帮助你真正理解 Agent 的核心循环。
场景:一个能进行"数学计算 + 查询当前时间"的 Agent
python
import json
import re
from datetime import datetime
from openai import OpenAI
client = OpenAI() # 需要设置 OPENAI_API_KEY 环境变量
# 定义可用工具(模拟)
def calculate(expression: str) -> str:
"""计算数学表达式,例如 '2 + 3 * 4'"""
try:
result = eval(expression)
return str(result)
except Exception as e:
return f"计算错误: {e}"
def get_current_time() -> str:
"""返回当前日期和时间"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
tools = {
"calculate": calculate,
"get_current_time": get_current_time,
}
# ReAct 提示词模板(告诉 LLM 如何思考、调用工具)
react_prompt = """
你是一个能够使用工具的智能助手。你可以通过以下格式进行推理和行动:
问题:用户输入的问题
思考:你需要思考下一步应该做什么
行动:你要调用的工具名称以及参数,格式为:{{"action": "工具名", "action_input": "输入参数"}}
观察:工具返回的结果
(重复思考/行动/观察,直到得到最终答案)
最终答案:对用户问题的完整回答
可用的工具有:
- calculate: 计算数学表达式,输入参数为表达式字符串,例如 "3 * 5 + 2"
- get_current_time: 获取当前时间,不需要输入参数
现在开始。
用户问题:{question}
"""
def run_agent(question, max_steps=5):
print(f"用户:{question}")
steps = []
current_prompt = react_prompt.format(question=question)
for i in range(max_steps):
# 调用 LLM
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": current_prompt}],
temperature=0,
)
output = response.choices[0].message.content
print(f"\n--- Step {i+1} LLM 输出 ---\n{output}")
# 解析行动(简化版:寻找 {"action": ...} 格式)
action_match = re.search(r'\{[^{}]*"action"[^{}]*\}', output)
if action_match:
try:
action_json = json.loads(action_match.group())
action_name = action_json["action"]
action_input = action_json.get("action_input", "")
if action_name in tools:
observation = tools[action_name](action_input)
else:
observation = f"错误:未知工具 '{action_name}'"
except Exception as e:
observation = f"解析失败: {e}"
else:
# 没有找到行动,检查是否已有最终答案
if "最终答案:" in output:
final = output.split("最终答案:")[-1].strip()
print(f"\n最终答案:{final}")
return final
else:
observation = "未提供有效行动,请继续推理并给出最终答案。"
# 将观察结果追加到对话历史
current_prompt += f"\n观察:{observation}\n"
print("达到最大步数,未得到最终答案。")
return None
# 测试
if __name__ == "__main__":
run_agent("现在几点了?")
run_agent("计算 (10 + 2) * 3 的结果")
run_agent("先查一下时间,然后计算 10 分钟后的时间点(以小时和分钟表示)")
运行结果示例(第二个问题):
用户:计算 (10 + 2) * 3 的结果
--- Step 1 LLM 输出 ---
思考:用户需要计算数学表达式,我应该使用 calculate 工具。
行动:{"action": "calculate", "action_input": "(10 + 2) * 3"}
观察:36
--- Step 2 LLM 输出 ---
最终答案:(10 + 2) * 3 的结果是 36。
这个例子教会你:
- Agent 的"思考-行动-观察"循环是如何工作的。
- 如何用提示词约束 LLM 输出格式。
- 如何解析工具调用并执行真实代码。
五、学习路线图(从入门到实战)
第一阶段:基础(1~2周)
- 掌握 Python,熟悉
requests、JSON、正则表达式。 - 会调用任意 LLM API(OpenAI / 国内模型)。
- 理解 ReAct 论文的核心思想(可读 LangChain 的 ReAct 文档)。
第二阶段:使用框架(2~3周)
-
LangChain 快速入门 :实现一个能搜索维基百科的 Agent。
pythonfrom langchain.agents import load_tools, initialize_agent, AgentType from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-3.5-turbo") tools = load_tools(["wikipedia"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("谁是图灵?") -
学习 Function Calling :使用 OpenAI 的
tools参数,让模型直接返回结构化的工具调用。
第三阶段:增强能力(3~4周)
- 记忆 :添加对话历史(使用
ConversationBufferMemory)或长期记忆(向量检索)。 - 多 Agent 协作 :尝试 AutoGen 的
GroupChat,模拟两个 Agent 讨论问题。 - 代码执行器:让 Agent 能够写 Python 代码并运行(注意安全沙箱)。
第四阶段:生产化考虑(1~2周)
- 错误处理与重试:工具调用失败后的恢复机制。
- 流式输出:边思考边返回中间结果。
- 评估 :如何衡量 Agent 的任务成功率(例如用
LangSmith追踪)。
六、避坑指南(来自十年经验)
- 不要过度依赖全自动 Agent :现实场景中,完全自主的 Agent 容易陷入死循环或产生高额 API 费用。加入人工确认机制(比如执行敏感操作前询问用户)。
- 提示词设计至关重要 :你给 LLM 的格式约束越明确(如 JSON Schema),解析越稳定。推荐使用
Pydantic定义工具输入输出。 - 警惕工具安全:如果 Agent 可以执行任意代码或删除文件,务必使用 Docker 或受限环境。
- 成本控制:每次 ReAct 循环都要多次调用 LLM。可以先用小模型(如 GPT-3.5-turbo)做路由,复杂任务再切换到大模型。
- 调试技巧:打印出每一步的 LLM 输出和观察结果,这是定位问题最有效的方法。
七、推荐资源
- 书籍:《LangChain 实战》(2024 年出版)
- 论文:ReAct (Yao et al., 2022)、Toolformer (Meta, 2023)
- 开源项目 :
- Open Interpreter:让 Agent 控制你的电脑
- GPT Researcher:多 Agent 协作写研究报告
- 视频课程:DeepLearning.AI 上的《LangChain for LLM Application Development》(免费)
结语
Agent 应用开发是当前 AI 领域最具活力的方向之一。入门的关键不是贪多求全,而是 先用手写一个最简单的 ReAct 循环,理解本质,再逐步引入框架。当你看到自己的 Agent 成功调用计算器、搜索网络、写出一段代码并运行时,那种成就感会驱动你走得更远。
如果你在实践过程中遇到具体问题(例如解析失败、工具调用循环),随时可以再来问我。祝你在 Agent 开发的旅程中收获满满!