01Bread Agent · 第 6 章
总进度 6 / 33

多文件重构 + 系统提示词模板

到了 ch04, main.py 里已经同时放着工具函数、参数说明、流式请求、输入循环和提示词。继续添加功能前,先整理一下文件,让查找和修改代码更方便。

2026-09-28约 40 分钟340 行代码难度 ★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 把不同职责的代码分开

到了 ch04,main.py 里已经同时放着工具函数、参数说明、流式请求、输入循环和提示词。继续添加功能前,先整理一下文件,让查找和修改代码更方便。

这一章保留已有的对话和工具流程,主要调整两处:

  1. 拆成 3 个文件:tools.py / agent.py / main.py
  2. 系统提示词模板化:不再是写死的字符串,而是根据"当前可用工具 / cwd / 今天日期"动态拼装

拆分后,可以留意这三个变化:

  • class Agent 把消息历史和模型调用放在一起。
  • main.py 负责启动和接收输入,不再处理全部细节。
  • build_system_prompt() 根据工具、目录和日期生成本次使用的提示词。

后面 3 章(ch06/ch07/ch08)的代码骨架都建立在本章之上。

<!-- bread-visual:start -->

一个长文件,拆成三个职责

图解: 像餐厅分工:接待、调度、后厨各管一段。 system prompt 动态拼装:身份说明 + 当前工具 + 工作目录 + 日期。

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

2. 跑起来

cd ch05_promptpl
python main.py

先用 ch04 的问题再试一遍,确认拆分文件后,对话和工具调用仍然能完成。

Bread Agent · v5(已重构)
输入消息开始对话;Ctrl+C 退出。

你 > 今天几号?
AI > 今天是 **2026年6月6日**。

你 > 你可以使用哪些工具
AI > 我目前可以使用以下 4 个工具:

1. **read_file** — 读取文本文件内容
2. **write_file** — 写入文本文件(会覆盖已有内容)
3. **list_dir** — 列出目录下的文件和子目录
4. **run_shell** — 执行 shell 命令(危险操作需你确认)

简单说就是:**看文件、写文件、列目录、跑命令**。需要我帮你做什么?

你 > 你当前的工作路径是?
AI > 当前工作目录是:

**`D:\Project\bread agent\bread-agent\ch05_promptpl`**

需要我列一下这个目录里有什么吗?

关键观察:问"今天几号",AI 不需要调任何工具就能答——因为我们在 system prompt 里注入了当前日期。这就是本章新加的能力。

image-20260606143012034


3. 对照代码看实现

文件结构

ch05_promptpl/
├── main.py     # REPL 外壳(约 35 行)
├── agent.py    # Agent 类 + build_system_prompt(约 130 行)
├── tools.py    # 工具实现 + schema(约 80 行)
└── README.md

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

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

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