155、LangChain Tool 与 Memory:自定义工具、对话记忆、向量记忆与摘要记忆
一个让我熬夜到凌晨三点的Bug
上周五晚上,一个客户的生产环境突然报错——Agent在调用自定义工具时,明明传入了正确的参数,却总是返回“工具不存在”的错误。我盯着日志看了两个小时,最后发现是Memory模块把工具调用的历史记录截断了,导致Agent在后续轮次中丢失了工具注册信息。
这个坑让我意识到,很多人对LangChain的Tool和Memory的理解还停留在“会用”层面,一旦遇到复杂场景就抓瞎。今天这篇笔记,我就把这两个模块的底层逻辑和实战踩坑经验一次性说清楚。
自定义工具:别被官方文档带偏了
LangChain的工具机制本质上是一个函数注册表,但很多人写自定义工具时犯的第一个错误就是——把工具写成了普通函数。
fromlangchain.toolsimportBaseToolfromtypingimportOptional