🏠 总目录📚 本教程 17b · 企业知识助手 ← →
📑 本页目录(点开跳转)

智能体工程教程 · 按需阅读

把知识助手做成一组能核对的交付物。

先跑通基线,再按阶段保留真实结果。勾选表示你已自查,不代表网站替你跑过测试。

这一次要留下什么

一份可复现的项目,加上解析、检索、权限、审批恢复和运维证据;没有实跑的部分继续标为待验收。

17b · 一个能拿去解释故障与取舍的知识助手

⏱ 按交付物推进 | 应用工程、RAG 与 Agent 岗位的共同实践

🎯 一句话

把数据、检索、工具、审批和评测放进同一个项目,面试时才能沿一条真实请求解释全流程。 这里提供可运行基线与分阶段任务;完成基线之后,用自己的脱敏资料与保留集形成个人证据。

🔗 下载项目压缩包 | 项目说明与代码入口 | 岗位分支 | 故障速查

这不是一个已经接好所有生产服务的成品。当前基线使用 SQLite、虚构设备与制度文档、可选真实 embedding/重排、真实 MCP 本地传输和 LangGraph 持久化;外部工单、身份签发与人工操作使用明确的本地夹具。

真实生成模型、复杂 OCR、外部 OAuth 登录、云端发布与生产压测需单独验收。

先运行,再选择自己的岗位路线

安装条件、命令与真实服务边界都保留在此。

🔬 先运行,再挑路线

有仓库时,以下命令在仓库根目录运行;只有压缩包时,解压后进入 knowledge-assistant 文件夹,按包内 README 的短路径命令运行。使用 Python 3.12。

python examples/knowledge-assistant/lab.py demo
python -m unittest discover -s examples/knowledge-assistant -p test_core.py -v

这两条仅用 Python 标准库;先观察文档入库、检索与引用、待审批工单、模拟响应丢失和恢复结果。本地 demo 由测试操作者自动批准示例动作,不能把这条命令当生产的人审流程。

需要 MCP、框架与向量模型时,创建隔离环境。Windows PowerShell 可以直接使用虚拟环境解释器,不必修改脚本执行策略:

python -m venv .venv-knowledge
.venv-knowledge/Scripts/python.exe -m pip install -r examples/knowledge-assistant/requirements.txt
.venv-knowledge/Scripts/python.exe -m unittest discover -s examples/knowledge-assistant -p test_protocol.py -v

后文的 python 均表示这个已装依赖的解释器。Linux/macOS 对应 .venv-knowledge/bin/python。首次神经检索会下载公开模型权重;纯标准库与协议测试不需要模型权重或 API Key。

你的目标 第一站 这一轮留下什么
企业知识库 / RAG 11b · 入库 解析夹具、版本/ACL 测试、逐题检索报告
工具接入 / MCP 08c · 鉴权与互操作 协议矩阵、拒绝用例、目标宿主联调记录
Agent / 工作流 12b · 故障恢复 副作用幂等证据、跨进程恢复录像/日志
模型 / 推理 / 领域专项 17c · 岗位专项 与具体 JD 对应的训练、容量或专项实验

阶段一 · 数据事实

本阶段可停:能把任意 chunk 追溯到当前版本。下次从检索基线继续。

阶段一:把数据事实固定下来

目标是能解释每个答案来源,以及变更后何时生效。先用内置虚构语料跑通,再换成有使用权限的脱敏资料。项目中的题集公开可见,不能当作自己的独立保留集成绩。

  • 核对 manifest 的文档身份、版本、readers 与租户;写出为什么身份字段不能由模型填写。
  • 检查表头、单位、型号与章节是否保留在块中,保存至少一个解析失败样本。
  • 运行重复导入、旧事件迟到、删除墓碑、撤权与提交失败测试,解释每项的最终状态。
  • 为自己的文档建立按来源或时间隔离的开发集与保留集,包含无答案和权限负例。

阶段验收:任意 chunk 都能回到当前源版本;未经授权的块不能进入候选;失败发布不破坏旧版。具体操作见 11b。

阶段二 · 可比较的检索结果

本阶段可停:配置与逐题结果能复跑。下次从工具授权继续。

阶段二:让调优留下可比较的结果

  • 导出 BM25 基线报告,能区分 Hit、Recall、MRR 与 NDCG。
  • 比较同题集上的中文向量、RRF 与重排,列出至少三条改善或退化的具体问题。
  • 只改变候选 K、切块长度或上下文预算中的一个,保存配置与差异;再验最终组合。
  • 分开报告检索效果、引用有效性、答案支持度与无答案拒答,不用一个总分代替。

阶段验收:保留语料/代码/模型哈希、题目级结果、硬件与用量条件,能复跑同一配置。不要把 16 道有答案开发题的指标包装成生产准确率。方法见 11c 与 11d。

阶段三 · 工具连通与正确拒绝

本阶段可停:成功和拒绝都有证据。下次从审批与恢复继续。

阶段三:工具能连通,也能正确拒绝

  • 跑通 HTTP/stdio 与新旧协议组合,查看真实 structuredContent。
  • 验证缺 token、过期、撤销、audience 错误、scope 不足、跨租户查询与未知工具。
  • 在实际目标宿主完成一次工具发现、调用和错误展示;记录宿主与 SDK 版本。
  • 把真实身份平台接入列成单独验收项:登录、授权同意、回调、刷新、撤权与资源范围。

阶段验收:工具描述、输入 schema、输出 schema、错误与权限边界对得上;本地 token 夹具不能被称作完整 OAuth 上线。步骤见 08c。

阶段四 · 恢复不重复执行

本阶段可停:响应丢失后业务对象仍只有一个。下次从部署条件继续。

阶段四:恢复过程不制造第二次动作

  • 用故障注入证明未审批、改参数、审批过期、取消都阻止新执行。
  • 演示下游成功但响应丢失,恢复后业务对象总数仍为一。
  • 使用两个独立进程演示 LangGraph 暂停与恢复,解释 checkpoint 和业务库的不同作用。
  • 接真实下游前确认幂等键保存期限、结果查询一致性与取消语义,补响应未知时的人工处理入口。

阶段验收:能按操作号查清状态,有可审计的请求人与审批人,模型不能授予自己执行权限。见 12b 与 16d。

阶段五 · 目标环境验收

本地测试不能代替真实负载、备份恢复与受控发布。

阶段五:按交付环境完成运维

  • 在干净环境安装依赖并跑测试,记录 Python/SDK/模型版本和下载条件。
  • 定义质量、错误率、p95/p99、首 token、成本与新鲜度目标,按真实业务预期设置阈值。
  • 测单并发与目标并发、冷启动与热请求、限流、超时和断流;报告负载形状与样本数。
  • 演练备份恢复、索引切换与回滚,并在恢复后复测删除和撤权。

本地 SQLite 不是横向扩容方案;复制数据库文件也不是 WAL 模式下完整的备份流程。

生产使用数据库提供的备份/快照机制,保存 schema 与索引版本,恢复到隔离环境验证业务状态与权限。

上线前接密钥管理、日志脱敏、错误告警和受控发布;这些验收结果需要真实环境证据。

整理交付包,明确做过与没做过

先核对证据,再填写简历;不要把教程样例成绩当作个人成果。

六、最终交付包与面试讲法

交付物 面试官能核对什么
一页架构与可信边界 身份、数据、模型、工具与业务状态在哪里
可运行代码、版本、启动命令 是否能从干净环境复现
原始评测与失败样本 数字是否有口径,退化是否被隐瞒
故障注入与恢复记录 超时、重复、撤权后系统真实行为
发布/回滚与监控说明 出问题时如何定位、止损、恢复
已知限制与岗位扩展 哪些做过,哪些只是方案

简历句子用自己的真实结果填写:“在某规模、某题型与某硬件下,对比 A/B 配置;指标从 X 到 Y,p95 从 U 到 V;通过版本乱序、权限变化和响应丢失测试。”不要把本教程内置成绩写成自己的线上业务成果。

🛑 现在可以停:每个阶段至少拿到一份可核对的交付物,再按岗位补专项。没有任何有限教程能穷尽线上所有事故,但你已经有新增故障时定位与回归的方法。

✅ 检查点

  1. 哪些数字可以写成“实测”,哪些只能写“待验收”?
  2. 只有成功演示视频,还缺哪类求职证据?
展开答案
  1. 有实际输入、配置、运行记录与口径的结果可写实测;真实模型、目标宿主、云环境等未跑过的部分应保留待验收状态。
  2. 负例、逐题评测、版本与权限变化、故障恢复、容量边界及复现方法。
⚡ 走神救援

同一项目串起五个阶段;阶段任务有从属关系;交付真实结果与失败证据;岗位差异再走专项。

🔗 接下来去哪

➡️ 下一站:17c · 岗位专项与进阶实验。

打卡记录保存在你的浏览器里,首页能看到总进度