本页目录
L01 — 认识 Agent:从问答到行动
本课目标:跑通一个最小 Agent,建立"Agent = LLM + 工具 + 决策"的直观认知。先看到效果,理论细节后面课再深入。
学完 RAG 课程,你已经能让大模型"基于文档回答"。这课开始,我们要让大模型"会做事"——查时间、做计算、甚至上网搜索。
1. 大模型的根本局限:只会说,不会做
你已经很熟悉大模型了(RAG 课程用了 9 课)。但它有个根本局限:
它只会生成文本,不能真正"做事"。
试想这些场景:
| 你问的问题 | 大模型的回答 | 问题在哪 |
|---|---|---|
| "现在几点了?" | "我无法获取实时时间" | 🚫 训练数据有截止日期,不知道"现在" |
| "123 × 456 等于多少?" | "56088"(可能算对,也可能算错) | 🚫 大模型不擅长精确计算,经常算错 |
| "今天北京天气怎么样?" | "我无法获取实时天气" | 🚫 不能联网 |
| "帮我建个待办事项" | "建议你这样列..."(只给建议) | 🚫 只能说不能做 |
RAG 解决了"不知道你的私有数据"的问题(让它能查文档)。但它还是只会"说",不会"做"——查不了时间、算不对数学、连不了网、改不了文件。
🎯 Agent 要解决的,就是让大模型从"只会说"变成"会做事"。
2. Agent 是什么?三个要素
Agent(智能体)= LLM(大脑)+ 工具(手脚)+ 自主决策循环(自己决定干嘛)
┌─────────────────────────────┐
│ LLM(大脑) │
│ 理解任务 → 决定用什么工具 │
│ → 看工具返回的结果 → 再决策 │
└──────────────┬──────────────┘
│ 决策:"我要调用 get_time"
┌──────────────▼──────────────┐
│ 工具(手脚) │
│ get_time / calculator / │
│ search / file_write ... │
└──────────────┬──────────────┘
│ 结果:"现在是 14:30"
│ 喂回给 LLM
▼
(循环直到完成)
三个要素缺一不可: - LLM:负责理解、推理、决策("这个任务该用什么工具") - 工具:LLM 自己做不到的事,交给外部工具(查时间、计算、搜索、读写文件) - 决策循环:LLM 不是一次性给答案,而是"调用工具→看结果→再决定下一步"的循环
💡 一个类比:LLM 像一个聪明但被困在屋子里的顾问,什么都知道但碰不到外面的世界。Agent 就是给他配了电话、计算器、电脑——他能打电话问时间、用计算器算数、用电脑查资料,从而真正帮你解决问题。
3. 三种形态对比:Chatbot vs RAG vs Agent
| Chatbot | RAG | Agent | |
|---|---|---|---|
| 能做什么 | 聊天、回答训练知识 | 基于你的文档回答 | 执行任务、调用工具 |
| 知识来源 | 训练数据 | 你的文档库 | 训练数据 + 文档 + 实时工具 |
| 能查实时信息吗 | ❌ | ❌ | ✅(用工具) |
| 能精确计算吗 | ❌(经常算错) | ❌ | ✅(用计算器工具) |
| 能"做事"吗 | ❌ | ❌ | ✅(写文件、发请求…) |
| 有决策循环吗 | ❌(一问一答) | ❌(检索一次) | ✅(多轮决策) |
可以看到 Agent 是能力最强的形态。而 RAG 和 Agent 不是对立的——后面 L07(Agentic RAG)你会学到,可以把 RAG 包装成 Agent 的一个工具,让 Agent 自主决定要不要检索。
4. Function Calling:让大模型"调用"工具的桥梁
Agent 是怎么让 LLM 调用工具的?核心机制叫 Function Calling(函数调用)。
原理(先有个印象,L02 会深入):
1. 你告诉 LLM:"你有这些工具可用"
tools = [get_time(获取时间), calculator(计算器)]
2. 用户问:"现在几点?"
LLM 不是直接回答,而是输出:"我要调用 get_time,参数:无"
3. 你的代码执行真正的 get_time 函数,拿到 "14:30"
4. 把 "14:30" 喂回给 LLM
5. LLM 看到结果,组织成自然语言回答用户:"现在是下午 2 点 30 分"
关键点:LLM 自己不执行函数,它只是"说"要调用什么。真正执行的是你的代码。 LLM 像指挥官下命令,你的代码是执行命令的士兵。
🎯 这个设计很巧妙:LLM 负责智能决策(该用什么工具、传什么参数),代码负责安全执行(真正去查时间/算数)。各司其职。
5. 本课代码会做什么
code.py 会跑通一个最小 Agent,让你亲眼看到上面的过程:
给 Agent 配两个工具
get_current_time:获取当前时间calculator:做数学计算
问它两个问题,看它怎么"行动"
- 问题 1:
"现在几点了?"→ 看 Agent 决定调用 get_current_time - 问题 2:
"现在是几点?距离今天 18:00 还有多少分钟?"→ 看 Agent 连续调用两个工具(先查时间,再算差值)
重点观察
代码会打印 Agent 的每一步决策: - 🤔 Agent 决定调用什么工具、传什么参数 - 🔧 工具执行后返回什么 - 💬 Agent 最终怎么组织回答
你会看到 Agent 不是一次性回答,而是一个"决策→执行→再决策"的过程——这就是 Agent 的核心。
6. 跑起来
python agent-lessons/01_what_is_agent/code.py
💰 省钱提示:本课调用 GLM 的 function calling。把代码里
CHAT_MODEL = "glm-4"改成"glm-4-flash"可以免费(flash 也支持 function calling)。
下一课 L02 — Function Calling 深入 会拆开讲:模型到底怎么"决定"调用工具、tools 怎么定义、参数怎么解析。