图_5工具层模块 · 详细实现
对应 [[5_代码实现_工具层]]。按图 1 模板粒度,只写主要实现步骤。
读图方式
- 蓝底是文件,紫底是类,灰底是函数;标题与主要步骤分开,框宽随文字收紧。简单函数一句,复杂函数按主要处理阶段分步。
- 实线箭头表示调用(含 LangGraph 的节点调度),虚线箭头表示数据或对象传递。远距离用
〔调用 F07〕/〔传递 F07:2〕引用,避免拉长线。 - F / C / P 分别表示函数、类、文件;冒号后的数字指目标步骤。编号只用于定位,不表示执行次序。
- 省略普通返回、逐字段转换和重复异常处理;保留会影响业务走向的降级、HITL、终止等分支。
文件与函数索引
P01 · backend/tools/knowledge.py
把请求 ctx 绑定为知识工具。
- F01
make_search_knowledge_base()(源码 6 行):创建本轮知识 Tool。 - F02
make_search_knowledge_base.search_knowledge_base()(源码 8 行):执行知识检索工具。
P02 · backend/tools/weather.py
高德天气查询与 Tool 包装。
- F03
get_current_weather()(源码 15 行):请求并整理天气信息。 - F04
get_current_weather_tool()(源码 77 行):LangChain 天气 Tool。
P03 · backend/tools/init.py
统一工具导出名称。
调用与对象传递对照
| 出发位置 | 目标 | 类型 | 关系 |
|---|---|---|---|
| F01 · 第 1 步 | F02 make_search_knowledge_base.search_knowledge_base |
虚线 · 传递 | 闭包绑定的 ctx |
| F04 · 第 1 步 | F03 get_current_weather |
实线 · 调用 | 天气查询调用 |
| P03 · 第 2 步 | F04 get_current_weather_tool |
虚线 · 传递 | 导出的天气 Tool 对象 |
[[source/_posts/LLM/2_RAG/project/img/详细实现/项目实现|查看项目实现总图]]。概要图仍保留在“实现”文件夹。
Excalidraw Data
Text Elements
backend/:本模块的后端实现 ^727195c5
tools/:为 Agent 提供可调用工具 ^0cc206d1
[[5_代码实现_工具层|P01 knowledge.py:把请求 ctx 绑定为知识工具]] ^d3b057ee
- 由 Runtime 为每个请求创建独立的知识 Tool。 ^37d6f6d9
F01 make_search_knowledge_base():创建本轮知识 Tool ^f137cd7e
- 用闭包绑定 ctx,将内部函数包装为 LangChain Tool。 〔传递 F02〕 ^51c9046c
F02 search_knowledge_base():执行知识检索工具 ^be234eb3
-
申请本轮一次知识工具调用名额(一个query最多调用一次工具) ^489ced43
-
执行 RAG 图,收集证据与检索状态。 ^b173608c
-
将 Trace 和HITL恢复快照写入 ctx。 ^d00a022f
[[5_代码实现_工具层|P03 init.py:统一工具导出名称]] ^f988bf38
-
导出知识工具工厂 make_search_knowledge_base。 ^e5d208a6
-
将天气 Tool 包装器以 get_current_weather 名称导出。 〔传递 F04〕 ^eab36baf
-
按rag路由结果/检索状态给出反馈: 1. clarify;则返回澄清提示词 2. select;则返回提示词与选项 3. no_knowledge;则提示没检索到 4. 拼接所有证据并返回 ^Rq4mOc0q
Element Links
d3b057ee: [[5_代码实现_工具层]]
f988bf38: [[5_代码实现_工具层]]
%%
Drawing
1 | N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebR4ATm0ARho6IIR9BA4oZm4AbXAwUDBSiBJuCAAWBABmAA4ANkbNBLTSyFhESsDsKI5lYPayzG4qgAZ+MphuZMaAVinIChJ1 |
%%