接入 Bread Agent(终章)
课 你做出的 形态 Bread Agent 通用 agent 内核 REPL chatbot,工具是 read file / shell Bread MCP 协议化的工具机制 工具能跨进程 / 跨语言 Bread RAG 知识库检……
如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。
1. 在同一段对话里使用不同工具
到目前为止,Bread 系列的进度:
| 课 | 你做出的 | 形态 |
|---|---|---|
| Bread Agent | 通用 agent 内核 | REPL chatbot,工具是 read_file / shell |
| Bread MCP | 协议化的工具机制 | 工具能跨进程 / 跨语言 |
| Bread RAG | 知识库检索能力 | search_knowledge_base 工具 |
| Bread Browser | 浏览器操作能力 | open_url / click / extract_text 工具 |
前几章的 BrowserAgent 专门处理网页任务。最后一章让浏览器工具和普通 Python 工具一起被通用 Agent 调用。
这里继续沿用前面几门课的组织方法:
保留请求、执行和回填的循环,根据任务提供不同工具。
所以最后一章我们把 BrowserAgent 解构成:
- Agent 类:跟 Bread Agent ch05 的 Agent 类完全同构
- 工具集:浏览器工具 + 一个普通工具(
get_current_time)
LLM 自己决定:
- 用户闲聊 → 不调任何工具
- 用户问时间 → 调
get_current_time - 用户问网页内容 → 调浏览器工具
这样可以在同一段对话里查询时间、打开页面和读取正文。本例先验证这几种调用,MCP 和 RAG 的组合留在后面的练习中。
<!-- bread-visual:start -->
<!-- bread-visual:end -->图解: 浏览器能力作为工具集接入通用聊天循环。 闲聊可以直接回答;浏览器工具与普通 Python 工具遵循同一种调用方式。
2. 跑起来
cd ch05_with_agent
python main.py
进入 REPL。试这 3 类输入:
测试 1:闲聊(不该调浏览器)
你 > 你好
AI > 你好!👋 很高兴见到你!我是你的智能助手...
注意:没有 [step X] 打印——没调任何工具。直接 chat completions 答出来。
测试 2:知识工具(调 get_current_time)
你 > 现在几点
[step 0] get_current_time()
AI > 现在是 2026年5月19日 上午 11:51 🕐
LLM 调了 get_current_time,不调浏览器 —— 它知道时间问题不需要开网页。
测试 3:网页任务(调浏览器工具)
你 > 打开 quotes.toscrape.com,告诉我首页第一条引言是谁说的
[step 0] open_url(url='http://quotes.toscrape.com')
[step 1] extract_text(selector='.quote')
AI > 首页第一条引言是 Albert Einstein(阿尔伯特·爱因斯坦)说的。
引言内容是:"The world as we have created it..."
LLM 自己组合 open_url + extract_text —— 2 步完成任务。
<!-- bread-practice:start -->
实操画面对照

浏览器操作截图: 首页第一条引言旁显示 Albert Einstein 与 about 链接。读取内容后,可进一步点击该链接查询作者详情。 由采集工具实际操作示例站,不是课程 LLM 自动执行的证明。

试读到这里 · 后续内容已封存
关注公众号,继续把这章学完
在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。