生产环境的 LangChain 应用,每次调用 LLM 要 2-5 秒,Token 费用每月轻松上千。这不是没法解决,而是大多数人没做过优化。
今天这 10 个技巧,从缓存到并发,从精简 Prompt 到模型分级,每一个都能直接落地。
01 为什么 LangChain 应用慢?
先看清楚问题在哪:
用户请求 ↓ Prompt 构建(<1ms) ↓ LLM API 调用 ← 这里占 80% 的时间(1-5s) ↓ 工具调用(可能再来一次 LLM) ↓ 输出解析(<1ms) ↓ 返回结果三个主要成本来源:
| 问题 | 影响 | 典型场景 |
|---|---|---|
| 重复调用 LLM | 慢 + 贵 | 相同问题每次重新算 |
| 串行执行 | 慢 | 多个独立任务一个个跑 |
| Prompt 太长 | 贵 | 上下文越来越臃肿 |
| 用大模型做小事 | 贵 | 分类任务用 GPT-4 |
02 技巧 1-3:缓存,最立竿见影的优化
技巧 1:InMemoryCache — 进程内缓存
最简单,适合开发调试和短生命周期应用:
importChatOpenAIfrom"@langchain/openai"importInMemoryCachefrom"@langchain/core/caches"constnewInMemoryCacheconstnewChatOpenAImodel"gpt-4o-mini"// 第一次调用:真实请求,约 2sconstawaitinvoke"用一句话解释什么是向量数据库"consolelog"第一次:"content// 第二次调用:命中缓存,<1msconstawaitinvoke"用一句话解释什么是向量数据库"consolelog"第二次(缓存):"content缺点:进程重启就清空,不适合生产。
技巧 2:Redis 持久化缓存 — 跨进程共享
生产环境推荐:
importRedisCachefrom"@langchain/community/caches/ioredis"importRedisfrom"ioredis"constnewRedishost"localhost"port6379constnewChatOpenAImodel"gpt-4o-mini"cachenewRedisCachettl3600// 缓存1小时// 效果:相同 Prompt 在任何实例都能命中缓存constawaitinvoke"解释 RAG 的工作原理"实测效果:重复查询场景下,API 调用次数降低 60-80%。
技巧 3:语义缓存 — 相似问题也能命中
普通缓存要求完全一样的输入才命中。语义缓存更智能:
importRedisSemanticCachefrom"@langchain/community/caches/ioredis"importOpenAIEmbeddingsfrom"@langchain/openai"constnewRedisSemanticCacheredisUrl"redis://localhost:6379"embeddingsnewOpenAIEmbeddingssimilarityThreshold0.9// 相似度 > 90% 就命中constnewChatOpenAImodel"gpt-4o"cache// 这两个问题语义相似,第二个会命中缓存awaitinvoke"什么是向量数据库?"awaitinvoke"向量数据库是什么?"// ✅ 缓存命中03 技巧 4-5:并发,把串行变并行
串行执行(慢): 任务A ──────┐ ↓ 任务B ──────┐ 总耗时 = A + B + C ↓ 任务C ──────→ 结果 并行执行(快): 任务A ──┐ 任务B ──┼──→ 结果 总耗时 = max(A, B, C) 任务C ──┘技巧 4:RunnableParallel — 并行执行多个任务
importRunnableParallelRunnableLambdafrom"@langchain/core/runnables"importChatOpenAIfrom"@langchain/openai"importPromptTemplatefrom"@langchain/core/prompts"constnewChatOpenAImodel"gpt-4o-mini"// 三个独立任务并行跑constRunnableParallelfromsummaryPromptTemplatefromTemplate"用50字总结:{text}"pipekeywordsPromptTemplatefromTemplate"提取5个关键词:{text}"pipesentimentPromptTemplatefromTemplate"判断情感倾向(正/负/中性):{text}"pipe// 三个 LLM 调用同时发出,总耗时约等于最慢那个constawaitinvoketext"LangChain 是一个强大的 AI 应用开发框架..."consolelog"摘要:"summarycontentconsolelog"关键词:"keywordscontentconsolelog"情感:"sentimentcontent串行 vs 并行耗时对比:
- 串行:3 × 2s = 约 6s
- 并行:max(2s, 2s, 2s) = 约 2s,快 3 倍
技巧 5:批量处理 batch() — 一次请求多条数据
constnewChatOpenAImodel"gpt-4o-mini"const"什么是 LangChain?""什么是 LangGraph?""什么是 RAG?""什么是向量数据库?""什么是 MCP?"// ❌ 串行:5 次独立请求forconstofawaitinvoke// 每次约 2s,共 10s// ✅ 批量:并发发出,速度大幅提升constawaitbatchmaxConcurrency5// 最多同时 5 个并发// 总耗时接近 2s,而不是 10s04 技巧 6-7:精简 Prompt,省钱最直接
每次 LLM 调用的成本 = Token 数量 × 单价。Token 少一半,费用少一半。
技巧 6:压缩历史对话
对话越长,每次带进去的历史就越多,Token 暴涨:
importConversationSummaryBufferMemoryfrom"langchain/memory"importChatOpenAIfrom"@langchain/openai"constnewConversationSummaryBufferMemoryllmnewChatOpenAImodel"gpt-4o-mini"maxTokenLimit500// 超过 500 Token 就自动压缩总结returnMessagestrue// 效果:不管对话多长,传给 LLM 的历史始终控制在合理范围// 长对话场景 Token 消耗降低 70%技巧 7:用结构化 Prompt 代替长篇说明
// ❌ 啰嗦写法(约 80 Token)const`请你认真分析以下文本,仔细理解其中的含义,然后从文本中提取出最重要的关键信息,用简洁的语言进行总结,控制在100字以内,注意要保留核心观点,去除冗余信息。文本:{text}`// ✅ 精简写法(约 15 Token,效果相同)const`100字内总结以下文本核心观点:{text}`原则:LLM 不需要你的客套话,直接说要做什么。
05 技巧 8-9:模型分级,大材不小用
任务分级策略: 复杂推理任务 ──→ GPT-4o / Claude Sonnet(贵但准) ↓ 普通问答任务 ──→ GPT-4o-mini(便宜10倍) ↓ 简单分类任务 ──→ GPT-4o-mini 或本地模型(几乎免费)技巧 8:路由到合适的模型
importChatOpenAIfrom"@langchain/openai"importRunnableLambdafrom"@langchain/core/runnables"constnewChatOpenAImodel"gpt-4o-mini"constnewChatOpenAImodel"gpt-4o"// 简单规则路由constRunnableLambdafromasyncinputquerystringcomplexity"simple""complex"constcomplexity"complex"returninvokequery// 实际场景:先用小模型判断复杂度,再路由constPromptTemplatefromTemplate`判断以下问题的复杂度,只回答 simple 或 complex:{query}`pipe// 用便宜模型来判断复杂度constawaitinvokequery"2+2等于几?"// → "simple",后续用便宜模型处理,省钱技巧 9:流式输出改善体感
流式不减少 Token,但让用户感觉快很多:
importChatOpenAIfrom"@langchain/openai"constnewChatOpenAImodel"gpt-4o-mini"streamingtrue// 字符逐个输出,用户不需要等全部生成完constawaitstream"解释一下什么是 LangGraph?"stdoutwrite"回答:"forawaitconstofstdoutwritecontentasstringconsolelog// 换行体感对比:同样 3s 的响应时间——
- 非流式:用户盯着空白等 3s,突然出现一大段文字
- 流式:用户 100ms 就开始看到文字,心理等待感接近 0
06 技巧 10:连接池复用,减少握手开销
importChatOpenAIfrom"@langchain/openai"// ❌ 每次请求新建连接constcreateLLMnewChatOpenAImodel"gpt-4o-mini"// ✅ 单例复用,复用 HTTP 连接池letllmInstanceChatOpenAInullnullconstgetLLMifnewChatOpenAImodel"gpt-4o-mini"maxConcurrency10// 最大并发数maxRetries3// 自动重试次数return// 全局复用同一个实例constgetLLM07 10 个技巧速查表
| # | 技巧 | 效果 | 适用场景 |
|---|---|---|---|
| 1 | InMemoryCache | 重复请求 <1ms | 开发/测试 |
| 2 | RedisCache | 跨进程缓存命中率 60%+ | 生产环境 |
| 3 | 语义缓存 | 相似问题也命中 | 问答类应用 |
| 4 | RunnableParallel | 多任务提速 3x | 独立任务并发 |
| 5 | batch() | 批量处理提速 5x | 批量数据处理 |
| 6 | 压缩历史 | Token 降低 70% | 长对话应用 |
| 7 | 精简 Prompt | Token 降低 30-50% | 所有场景 |
| 8 | 模型分级 | 成本降低 60-80% | 混合复杂度任务 |
| 9 | 流式输出 | 体感延迟降低 90% | 用户交互场景 |
| 10 | 连接池复用 | 握手开销减少 | 高并发服务 |
08 组合使用:生产环境推荐配置
把上面这些组合起来,是一个完整的生产级配置:
importChatOpenAIfrom"@langchain/openai"importRedisCachefrom"@langchain/community/caches/ioredis"importRedisfrom"ioredis"importConversationSummaryBufferMemoryfrom"langchain/memory"// 1. Redis 缓存constnewRedishost"localhost"port6379constnewRedisCachettl3600// 2. 主力模型(带缓存)constnewChatOpenAImodel"gpt-4o-mini"streamingtrue// 流式输出// Redis 缓存maxConcurrency10// 连接池maxRetries3// 自动重试// 3. 对话记忆(压缩历史)constnewConversationSummaryBufferMemoryllmmaxTokenLimit500returnMessagestrue// 4. 复杂任务用大模型constnewChatOpenAImodel"gpt-4o"maxRetries3这套配置在实际项目中:
- 响应速度:缓存命中时从 2s → <1ms
- 并发吞吐:单实例支持 10 并发
- Token 成本:相比朴素写法降低 50-70%
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~