一个web搜索工具每次调用要花1-2秒,还要扣API额度。但同样的查询,缓存后只要32毫秒——快了25倍。这是Vercel AI SDK v6里用Redis做工具缓存的效果,实现代码大约40行TypeScript。
工具缓存和LLM响应缓存是两回事。AI SDK自带的缓存中间件把整个params对象当key:消息历史、模型设置、系统提示全算进去。对话场景里这些几乎不会重复,缓存命中率极低。但工具输入不一样——web_search被调用时传入{ query: "typescript v6" },模型生成这个查询的方式相当固定;getUserProfile每次都用同一个用户ID;fetchPricing反复查同一个产品ID。工具层的缓存,哪怕LLM缓存没命中,也能生效。
打开网易新闻 查看精彩图片
具体数字:Firecrawl-backed的web搜索工具,未缓存调用810毫秒,缓存命中32毫秒(10次运行平均)。成本上,Tavily基础搜索$0.008/次,Exa是$5/千次。一个每天跑10000次搜索的agent,Tavily单工具就要$80/天。假设25%缓存命中率,降到$60/天,每月省约$600。
实现方式是用高阶函数包裹tool的execute。工具代码本身不用改,只是把异步执行函数包一层Redis读写。重复查询直接走内存返回,新查询正常执行后写入缓存。整个改动集中在缓存逻辑,业务代码保持原样。
适合缓存的工具类型:web搜索、网页抓取、天气地图、地理位置数据等。这些调用成本高、延迟大、但输入参数重复率高。自己写的内部工具如果符合这个特征,同样可以套用这个模式。
热门跟贴