04Bread Browser · 第 6 章
总进度 27 / 33

接入 Bread Agent(终章)

课 你做出的 形态 Bread Agent 通用 agent 内核 REPL chatbot,工具是 read file / shell Bread MCP 协议化的工具机制 工具能跨进程 / 跨语言 Bread RAG 知识库检……

2026-09-28约 60 分钟520 行代码难度 ★★★

如果想获取全套课程资料,请关注微信公众号 「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 -->

一个 Agent,按需选择不同工具

图解: 浏览器能力作为工具集接入通用聊天循环。 闲聊可以直接回答;浏览器工具与普通 Python 工具遵循同一种调用方式。

<!-- bread-visual:end -->

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 -->

实操画面对照

从首页第一条引言定位 about

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

点击 about 后进入作者详情页

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。