Agent 架构理解: 从 LLM、Tool 到 LangChain/LangGraph
一、什么是Agent
Agent = LLM + Tool + Runtime
传统LLM(大语言模型)只能根据已有知识回答问题,无法主动访问实时数据或执行外部操作,Agent即为让 LLM 学会调用工具(Tool),完成复杂任务。
二、什么是LLM
Large Language Model(大语言模型)
GPT,Gemini,Claude,DeepSeek,智谱清言等都是LLM,
关键认知:没有人类意义上的意识。它能够表现出较强的推理能力,但这种能力来自训练过程中学到的统计规律,而不是传统程序中的显式逻辑推理。它的强大表现完全来自于海量数据训练后形成的复杂模式匹配,这同时也是 LLM 的局限——模型训练完成之后参数就固定了
目前来看,LLM还是一个概率生成模型。
想必大家还记得gpt3刚兴起的时候,询问大模型一些问题,他会回答:我的知识库截止到XXX日期。
- LLM 无法获得实时信息
- LLM 无法执行操作
- LLM 擅长思考但是无法行动
所以我们需要tool
三、什么是tool
Tool(工具)就是提供给 LLM 使用的外部能力。tool本身不是AI,只是普通程序。
对于 Python 来说:Tool 本质就是一个 Python 函数。凡是通过python可以实现的事情都可以封装成tool。(当然也可以使用其他语言开发tool。)
例如:
四、LLM 如何使用 tool
真正执行 Tool 的永远不是 LLM,而是宿主程序。LLM 只能返回 Tool Call,请求宿主程序去执行。
还记得我们上面说的 LLM 无法执行操作吗,LLM 是无法真正运行一个tool的,会有一个持续运行的宿主程序(Runtime,例如 Python 程序),负责在用户、LLM 和 Tool 之间传递消息,并协调整个调用流程。
假如我要向LLM询问今日天气,整个流程如下:
① 用户
│
▼
输入:"今日天气"
② 宿主程序(Python)
│
├─ 加入 System Prompt
├─ 加入历史聊天
├─ 加入 Tool 列表
│
▼
③ LLM
│
├─ 理解:"天气是实时信息"
├─ 判断:"需要调用 get_weather"
│
▼
④ 返回 Tool Call
│
▼
⑤ 宿主程序(Python)
│
├─ 解析 Tool Call
├─ 找到 get_weather()
│
▼
⑥ Tool(天气 API)
│
├─ 请求天气服务器
├─ 返回:
│ {
│ "temp": 32,
│ "weather": "晴"
│ }
▼
⑦ 宿主程序(Python)
│
├─ 把 Tool 结果加入 messages
│
▼
⑧ LLM
│
├─ 根据 Tool 返回结果组织自然语言
│
▼
⑨ 宿主程序(Python)
│
▼
⑩ 输出给用户
更进一步:用户不是直接和 LLM 通信,而是和宿主程序通信。宿主程序负责决定发送什么内容给 LLM,以及如何处理 LLM 的返回。
所以我们的输入:今天的天气
LLM真正收到的是:
System:
你是 ChatGPT。
今天日期:
2026-07-16
用户位于:
东京(如果已知)
可使用工具:
- weather
- search
- python
- image
...
历史聊天:
......
......
User:
今天的天气
五、为什么需要 LangChain
LangChain,一个开发 Agent 的 Python 框架。
通过上面的LLM使用tool的部分我们知道了,一个agent,远不是将LLM和tool堆到一起就可以实现的,所以出现了LangChain:把这些常见能力封装起来。
如果你不使用LangChain开发Agent,你就需要把第四部分查天气用到的每个步骤都加到代码中,使用LangChain本质上就是帮助你写宿主程序。
LangChain有很多模块,以TOOl为例,
@tool
def weather(city):
pass
一行装饰器。就能变成 Tool。不用自己写 Tool Schema(Tool 的"接口说明书",告诉 LLM:这个工具叫什么、能干什么、需要哪些参数、参数是什么类型。)。
六、LangChain 和 LangGraph 区别
LangGraph 是一个有状态(Stateful)的工作流框架。并且是建立在 LangChain 之上的工作流框架。
从名字上简单理解,Chain就是链条,Graph就是图,现实任务越来越复杂,已经不是简单的一条链就可以解决的了,可能需要,分支,循环,多Agent协作,LangChain 很难优雅地管理,于是 LangGraph 出现了。