AI Agent白手起家23: 大模型速率限制应对与缓存机制实践
纲要速率限制的产生背景与影响LangChain 内置速率限制器InMemoryRateLimiter核心参数缓存机制的必要性与原理短期缓存内存与长期缓存持久化实战速率限制与缓存结合项目结构速率限制器配置缓存方案对比内存与 SQLite代码示例关键要点总结速率限制为什么需要关注当前主流大模型提供商OpenAI、DeepSeek、Anthropic 等都会对 API 实施速率限制。例如 OpenAI 对免费用户限制每分钟请求数RPM和每分钟 Token 数TPM付费用户则有更高的配额。一旦请求超过限制API 将返回错误如 429导致应用不可用严重影响用户体验。在 AI Agent 开发中如果不做任何防护高频调用很容易触发限流。因此必须在客户端侧主动实施流量整形确保请求速率始终在安全范围内。LangChain 中的速率限制器LangChain 提供了InMemoryRateLimiter作为内置速率控制组件。它位于langchain_core.rate_limiters模块中通过令牌桶算法限制单位时间内的请求数。核心参数如下参数说明示例requests_per_second每秒允许的最大请求数1.0每秒 1 次或0.1每 10 秒 1 次check_every_n_seconds每隔多少秒检查一次是否允许新请求0.1每 100 毫秒检查max_burst_size允许的最大突发请求数10使用时只需在实例化模型组件时传入rate_limiter参数即可。缓存机制减少不必要的 API 调用除了限制速率缓存也是降低 API 调用频率的有效手段。其流程如下是否用户请求缓存命中?返回缓存结果调用大模型 API获取响应写入缓存LangChain 的缓存分为两种内存缓存InMemoryCache存储在进程内存中重启即失适合短期重用。持久化缓存如基于 SQLite 的实现可长期保存适合跨会话复用。结合速率限制与缓存可以大幅提升应用稳定性和成本效率。项目结构本示例将实现使用InMemoryRateLimiter控制请求频率。对比内存缓存和 SQLite 缓存的实际效果。演示如何通过usage_metadata追踪 Token 消耗验证缓存是否真正减少了 API 调用。目录结构如下├── main.py └── requirements.txt依赖清单requirements.txtlangchain-openai0.3.0 langchain-core0.3.0 langchain-community0.3.0代码示例importos,timefromlangchain_openaiimportChatOpenAIfromlangchain_core.rate_limitersimportInMemoryRateLimiterfromlangchain_core.cachesimportInMemoryCachefromlangchain_community.cachesimportSQLiteCacheimportlangchain# ---------- 1. 配置速率限制器 ----------rate_limiterInMemoryRateLimiter(requests_per_second0.5,# 每 2 秒允许 1 次请求check_every_n_seconds0.1,# 每 0.1 秒检查一次max_burst_size1# 最大突发请求为 1)# ---------- 2. 初始化模型使用 GPT-3.5 以降低成本 ----------llmChatOpenAI(modelgpt-3.5-turbo,temperature0,max_tokens100,api_keyos.getenv(OPENAI_API_KEY),rate_limiterrate_limiter# 注入速率限制器)# ---------- 3. 辅助函数打印 Token 用量 ----------defprint_usage(response):usageresponse.usage_metadataifusage:print(f 输入:{usage.get(input_tokens)}, 输出:{usage.get(output_tokens)}, 总计:{usage.get(total_tokens)})else:print( 未获取到 Token 用量)# ---------- 4. 演示速率限制效果 ----------print( 速率限制演示连续发送 5 个相同请求 )start_timetime.time()prompt用一句话介绍深度学习。foriinrange(5):t0time.time()responsellm.invoke(prompt)t1time.time()print(f请求{i1}: 耗时{t1-t0:.2f}s)print_usage(response)print(f总耗时:{time.time()-start_time:.2f}s\n)# ---------- 5. 缓存机制对比 ----------# 先移除速率限制器以便专注于缓存测试llm_no_limitChatOpenAI(modelgpt-3.5-turbo,temperature0,max_tokens100,api_keyos.getenv(OPENAI_API_KEY),)# 5.1 无缓存print( 无缓存重复请求相同问题 )langchain.llm_cacheNone# 清除全局缓存foriinrange(3):t0time.time()resllm_no_limit.invoke(什么是 Transformer)t1time.time()print(f第{i1}次: 耗时{t1-t0:.2f}s, 返回前 20 字:{res.content[:20]}...)# 5.2 内存缓存print(\n 启用内存缓存 )langchain.llm_cacheInMemoryCache()foriinrange(3):t0time.time()resllm_no_limit.invoke(什么是 Transformer)t1time.time()print(f第{i1}次: 耗时{t1-t0:.2f}s, 返回前 20 字:{res.content[:20]}...)# 第一次会调用 API后续直接命中缓存# 5.3 SQLite 持久化缓存print(\n 启用 SQLite 缓存 )langchain.llm_cacheSQLiteCache(database_path.langchain_cache.db)foriinrange(3):t0time.time()resllm_no_limit.invoke(什么是 Transformer)t1time.time()print(f第{i1}次: 耗时{t1-t0:.2f}s, 返回前 20 字:{res.content[:20]}...)# 如果之前已缓存第一次也可能快速返回运行说明代码依赖langchain-openai、langchain-core、langchain-community。需要设置环境变量OPENAI_API_KEY为有效的 OpenAI API 密钥。速率限制演示部分会因requests_per_second0.5而明显降低请求速度。缓存演示中第一次调用会真正请求 API后续调用几乎瞬间完成表明缓存生效。SQLite 缓存文件.langchain_cache.db会在当前目录生成可跨脚本持久化。关键要点总结几乎所有的商用大模型 API 都有速率限制忽略它会导致应用频繁报错。LangChain 提供InMemoryRateLimiter用于客户端流量控制只需传入rate_limiter参数即可。缓存是减少 API 调用、降低成本的有效手段LangChain 支持内存缓存和 SQLite 持久化缓存切换非常方便。在实际 AI Agent 开发中建议将速率限制与缓存结合使用以保障服务的稳定性和经济性。

相关新闻

Unity AR/VR开发中UniWebView五大核心问题解决方案

Unity AR/VR开发中UniWebView五大核心问题解决方案

1. 项目概述:当AR/VR遇上WebView,为何“坑”特别多?在Unity 2020及更高版本中开发AR/VR项目,引入UniWebView来嵌入网页内容,已经成为一个越来越普遍的需求。无论是用于展示动态更新的产品手册、加载在线3D模型配置器&a…

2026/8/4 3:07:04 阅读更多 →
LTE扫频与小区搜索:从频谱扫描到精准同步的终端入网全解析

LTE扫频与小区搜索:从频谱扫描到精准同步的终端入网全解析

1. 从“盲人摸象”到“精准定位”:理解LTE扫频与小区搜索的本质如果你刚接触无线通信,或者从2G/3G时代的技术栈转向LTE,第一次听到“扫频”和“小区搜索”这两个词,可能会觉得它们既神秘又底层,仿佛是基站或核心网才需…

2026/8/4 3:07:04 阅读更多 →
电网抗台风移动电源动态调度算法与Matlab实现

电网抗台风移动电源动态调度算法与Matlab实现

1. 项目背景与核心价值去年参与某沿海城市电网抗台风项目时,我亲历了因应急电源调度不及时导致的72小时大范围停电。这段经历让我深刻认识到:配电网韧性提升中,移动电源(MPS)的动态调度能力直接决定灾后供电恢复效率。…

2026/8/4 3:07:04 阅读更多 →

最新新闻

Unity ECS架构进阶:EcsRx响应式编程与Entitas实战指南

Unity ECS架构进阶:EcsRx响应式编程与Entitas实战指南

1. 项目概述:为什么我们需要EcsRx?如果你在Unity项目里摸爬滚打过一段时间,尤其是做过一些需要处理大量动态实体(比如成千上万的单位、粒子、子弹)的游戏,大概率会对传统的面向对象(OOP&#xf…

2026/8/4 3:47:25 阅读更多 →
2025届最火的AI辅助写作网站实际效果

2025届最火的AI辅助写作网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 因其AI生成内容的普遍被知晓, 各类对于这部分判断的查看核查工具逐渐完备不少, 好多在写作之…

2026/8/4 3:47:25 阅读更多 →
数字通信编码原理:从NRZ到曼彻斯特编码的实战解析

数字通信编码原理:从NRZ到曼彻斯特编码的实战解析

1. 项目概述:从信号到比特的旅程在数字通信的世界里,我们每天都在和“0”与“1”打交道。但你是否想过,计算机或网络设备内部这些抽象的二进制数字,究竟是如何变成物理线路上实实在在的电流、光脉冲或无线电波,从而穿越…

2026/8/4 3:47:25 阅读更多 →
FastAPI零基础完整实战

FastAPI零基础完整实战

目录前言1 环境安装2 第一个 FastAPI 项目2.1 方式 1:命令行启动2.2 方式 2:代码内直接启动 uvicorn2.3 访问自动交互式文档3 同步 def 与异步 async def 路由区别4 三大参数详解4.1 路径参数(URL 路径中变量)4.2 查询参数&#x…

2026/8/4 3:47:25 阅读更多 →
OpenClaw客户端部署图文,TopClaw三分钟不写代码上线

OpenClaw客户端部署图文,TopClaw三分钟不写代码上线

从“配环境”到“跑起来”,OpenClaw没那么玄乎 很多朋友一听到“客户端部署”四个字,脑子里就开始自动播放“命令行劝退”的恐怖片。其实真上手以后你会发现,OpenClaw的部署流程已经被简化得非常友好了,尤其是现在有了TopClaw这种…

2026/8/4 3:47:25 阅读更多 →
CNN听力法:每天10分钟四步精听,实现英语听力暴涨

CNN听力法:每天10分钟四步精听,实现英语听力暴涨

1. 背景与核心概念:为什么是CNN,以及“每天10分钟”的科学性 在英语学习的漫长征途中,听力往往是横亘在无数学习者面前的一座大山。传统的学习方法,如泛听VOA、BBC,或者精听教材录音,虽然有效,但…

2026/8/4 3:46:25 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →