工程师与开发者工具调用代理的记忆模式
构建能够实际保持状态的工具调用代理的记忆模式
工具调用代理在多次工具调用中积累状态。每个工具的输出应影响后续调用。如果没有适合工具流的记忆模式,状态将在调用之间泄漏,代理会自相矛盾。MemoryLake 提供为工具调用架构构建的类型化记忆模式。
问题:工具调用代理需要 DIY 记忆无法提供的状态模式
工具 A 返回了客户的等级。工具 B 应该尊重该等级;但它再次查询,因为工具输出不共享状态。工具调用代理多次调用相同的 API——支付了本应由记忆防止的工具调用费用。
MemoryLake 如何支持工具调用代理的记忆模式
工具输出作为类型化记忆
每个工具结果写入结构化记忆;后续工具进行检索。
在重复工具调用中去重
如果需要相同的数据,再从记忆中返回。
跨工具输出的冲突检测
矛盾的工具结果浮现。
每次工具调用的审计
跟踪哪个工具产生了哪个事实。
免费开始使用
永久免费 · 无需信用卡
工具调用记忆模式的工作原理
- 连接 — 将 MemoryLake 接入工具调度层。
- 结构 — 每个工具结果写入类型化记忆;后续工具首先检查记忆。
- 重用 — 重复调用从记忆中返回;减少工具支出。
前后对比:工具调用代理状态
| DIY tool state | MemoryLake | |
|---|---|---|
| Repeated tool calls for same data | Common | Memory-cached |
| Cross-tool state sharing | Lossy | Typed memory |
| Conflicting tool outputs | Silent | Detected |
| Tool spend at scale | High | Reduced via memory |
适合谁
运行工具密集型代理的工程团队——许多 API,许多集成——在冗余工具调用和丢失跨工具状态方面影响成本和质量。
可运行的 demo约 4 分钟
在你自己的账号上跑通这个场景
一个会调用工具的计费助手,把之前的工具结果(账户、用量、合同、价目表)以带类型字段的事实记进记忆。让模型自己算费用,所有数字都在提示词里,它照样算错。给它一个计算器工具,算术对了;可是对那位从没拉取过用量的客户,模型在工具报告缺少输入之后,自己把这个输入填上,计算器再把这个猜测算成精确到分的账单。让工具自己从类型化记忆里读取输入,两个问题一起解决:每个金额都带着它所依据的工具结果,从未拉取过的结果会以点名该工具的错误返回。
你会看到
- 13 条工具结果用
fact add存入,类型字段用fact update --metadata挂上;fact list按账户和字段读回最新一次结果,每道题的答案都由代码据此算出 - 十四个问题,gpt-4o-mini 经
router chat --body … --boundary各答 3 次,共 8 次运行:模型自己算时,192 次费用题只对 34 次 compute_charge工具、输入由模型从记忆里抄:费用题 192 次对 154 次,但从未拉取的用量 48 次全错(工具报缺少输入后,模型传入api_calls=0);每个抄进去的输入都与类型化记忆逐项核对- 工具自己读类型化记忆:费用题 192 次全对,超额费 24 次都答「No record」;模型仍会把半个总额当成整个(24 次中 23 次)。另有
bill、ask子命令和本地 Web 界面
需要: 一个 MemoryLake API key · memorylake CLI · Python 3.9+
运行
git clone https://github.com/memorylake-ai/memorylake-usecases.git cd memorylake-usecases/tool-input-memory export MEMORYLAKE_BASE_URL=https://app.memorylake.cn/openapi/memorylake export MEMORYLAKE_API_KEY=sk-… python3 demo.py # or: python3 web/server.py
看它跑起来 · 真实录制,未剪辑
相关场景
常见问题
工具框架支持?
工具框架支持?
LangChain 工具、MCP、OpenAI 函数调用、自定义——全部支持。
工具结果记忆的 TTL?
工具结果记忆的 TTL?
可按工具和记忆类型配置。
自托管?
自托管?
是的——企业级部署在您的 VPC 中。