搜“LangChain 价格”的人,往往想找一个单价。但 LangChain 是开源框架,真正产生账单的是模型 API、Embedding 服务、向量库和观测平台。混在一起看,就容易得出“框架免费所以便宜”或“上了 Agent 就失控”这两种不准确的结论。

本文不列会过期的单价,而是给一套拆账、估算和控制方法。模型价格以站内模型价格页为准,商业套餐以各自页面为准。

说明:LangChain 是 LangChain, Inc. 的商标,本文仅作成本讨论,与 LangChain, Inc. 无隶属或合作关系;开源许可证、商业产品与价格可能调整,请以官方仓库和产品页面为准。

一、“LangChain 价格”其实由四部分组成

把账单拆开看,通常包括框架与库、模型调用、检索与存储、观测与部署。四者的计费方式完全不同:

成本项 计费方式 什么时候发生 容易忽略的点
框架与库 开源,通常无许可费 安装与升级 商业观测、评估或部署产品另计费
模型调用 按输入与输出 Token 每次请求 重试和多步调用会重复计费
Embedding 通常按输入 Token 建库与每次查询 换模型往往要重建索引
向量库与服务器 订阅或资源用量 持续运行 空闲实例也可能产生费用
观测与评估 套餐、席位或用量 开启追踪后 采样与留存策略影响成本

多数团队以模型调用费为主,但只盯单价不够。调用量小却长期运行向量库和常驻服务的项目,基础设施费用可能更显眼。

二、框架免费,不等于总成本低

LangChain 开源框架通常不收取许可费,但“免费”只描述许可证,不描述运行成本。支出还包括模型 Token、Embedding、向量库、服务器、观测平台以及维护人力,其中前两项随调用量增长。

判断是否更省,要比较完成同一任务的总成本,而非框架售价。自建编排省平台费但增加维护时间;托管平台减少运维但账单随用量变化。

三、Chain 与 Agent 会放大 Token

普通对话的成本近似“输入加输出”。Chain 和 Agent 不同:每一步都可能重新带上系统提示、历史、工具说明和上一步结果。

假设单步输入 4000 Token、输出 600 Token,平均走 6 步,输入就接近 6 份上下文,而非 1 份。如果历史随步骤增长,后几步还会更长。三个常见放大器:

  • 工具调用循环:调用工具、读取结果、再调用模型,循环越多,重复上下文越多。
  • 多智能体协作:每个子智能体都有自己的提示和上下文,结果汇总时还会再复制一遍。
  • 失败重试:超时、限流和格式错误都会触发重试,失败请求同样可能计费。

控制方法不是少用 Agent,而是给循环设上限:最大步数、超时、裁剪工具输出、把稳定指令放在前缀以命中缓存。LangGraph 的 recursion_limit、Agent 执行器的最大迭代次数,都应在生产配置中显式设置。

四、RAG:Embedding 与上下文注入

RAG 成本分两段。建库阶段,文档切块后逐块生成向量,费用与块数、块大小和重叠比例相关;查询阶段,问题本身要生成向量,检索出的若干块还会作为上下文塞进提示词。

容易低估的地方有三个:

  • 重建索引:换 Embedding 模型、调分块策略或清理数据,都可能要重算全部向量。
  • 上下文膨胀:为召回率调大 top_k,每轮都带更多原文,输入 Token 随之上升。
  • 重排模型:加一层重排通常能提升相关性,但会引入额外调用和延迟。

更省的做法是先优化检索质量,再优化数量:改分块、去重、加元数据过滤、用重排筛掉低相关块,最后才考虑换更便宜的模型。Embedding 与 RAG 计费见文末相关阅读。

五、缓存:省的是重复前缀

缓存有两层,作用不同。

第一层是模型服务商的前缀缓存。请求开头一致时,缓存读取通常比新输入便宜,但是否支持、折扣和保留时间各家不同。要点:系统提示、角色设定、固定文档放前面,本次问题和临时数据放后面;频繁改早期消息或切模型会让缓存失效。

第二层是应用级缓存。LangChain 提供 set_llm_cache 一类机制,可把相同请求的结果缓存到内存、SQLite 或 Redis;不同集成包和版本支持范围不同,聊天模型尤其要看文档。它适合答案稳定、重复度高的场景,不适合强个性化或实时请求。是否划算要看命中率,不看是否开启。

六、把估算做成可复算的公式

不要凭感觉做预算。按六步建立成本模型:

  1. 列出应用里的全部模型调用路径,包括主流程、重试、摘要和标题生成。
  2. 用回调或响应中的用量字段,测出每一步的输入与输出 Token。
  3. 统计每个成功任务的平均步数和失败重试比例。
  4. 从模型价格页读取单价,统一换算成“元/百万 Token”。
  5. 加上 Embedding、向量库、服务器和观测费用。
  6. 用上线后第一个月的真实账单校准,修正步数和重试假设。

下面这个函数只做算术,单价由你自己填入:

import os

# 单价从站内价格页读取后写入环境变量,单位:元/百万 Token
IN = float(os.environ["PRICE_IN_PER_MTOK"])
OUT = float(os.environ["PRICE_OUT_PER_MTOK"])

def task_cost(input_per_step: int, output_per_step: int, steps: int,
              retry_rate: float = 0.1) -> float:
    calls = steps * (1 + retry_rate)
    return (input_per_step * calls * IN + output_per_step * calls * OUT) / 1_000_000

# 示例:每步输入 4000、输出 600,平均 6 步,重试率 10%
print(round(task_cost(4000, 600, 6), 4))

注意单位换算:多数价格页按每百万 Token 标价,代码中乘单价再除以一百万,避免与“每千 Token”混用。

七、预算上限:让超支在发生前被拦住

估算只能预测,限额才能兜底。从网关和应用两层设置:

  • 网关侧为每把 Key 设预算、模型白名单和速率限制,按项目或环境拆 Key。
  • 应用侧设置 max_tokens、请求超时和重试上限;max_tokens 只限制输出,长上下文仍要单独控制。
  • 给 Agent 设置最大步数和递归上限,避免工具调用陷入循环。
  • 为每个用户或租户设置日额度,防止单个异常请求拖垮整体预算。
  • 配置用量提醒,达到阈值时通知负责人。

预算上限不是不信任团队,而是把不可预测的账单变成可预测的边界;试用 Key 和 CI Key 尤其需要。

八、观测与复盘:按任务算单位成本

总账单只说明花了多少,不说明花在哪里。按任务、模型和调用链拆开看:

  • LangChain 的响应消息通常带 usage_metadata,可记录输入、输出和总 Token;不同服务商字段可能不同。
  • 回调处理器可以在每次模型调用前后记录耗时、模型名和用量,适合接入现有日志系统。
  • LangSmith 等观测平台能展示完整调用链,但是否启用、如何采样、套餐如何计费,要按团队需求评估。

复盘时关注“每个成功任务的平均成本”,而非“每次调用成本”。前者包含失败重试和人工介入,更接近真实单位经济模型。调用量大时应采样追踪,避免观测成为新成本项。

常见问题

LangChain 本身收费吗?

开源框架通常不收取许可费,采用 MIT 许可证发布。LangSmith、部署平台等商业产品另行计费。具体许可证与套餐以官方仓库和产品页面为准。

为什么本地测试很便宜,上线后账单涨得快?

本地测试调用量小、上下文短、失败少。上线后并发增加,重试、长会话、工具循环和检索上下文都会放大 Token。按任务测真实用量,再乘上线后的调用量,通常能解释差异。

Agent 的成本怎么估?

先测单步输入输出,再统计每个任务的平均步数和重试率,用“步数 × 单步用量”估算。历史累积时实际输入更高。给循环设上限,并用真实追踪数据校准。

RAG 主要贵在哪里?

通常是生成阶段的上下文 Token,其次是建库 Embedding。检索和向量库也有成本,但往往不是大头。调整 top_k、分块和重排策略,通常比换模型更快见效。

开了缓存就一定能省钱吗?

不一定。收益取决于重复请求比例和前缀稳定性。请求分散、需要实时更新或个性化很强时,命中率会很低。先用日志估算命中率,再决定是否引入缓存。

下一步

LangChain 的成本可拆成四笔账:框架通常免费,模型按 Token 计费,检索与基础设施持续发生,观测与部署看套餐。控制顺序是先测量、再估算、后限额,最后用真实账单校准。需要统一多模型入口、按 Key 的用量统计和预算管理,可以注册中商起航 AI 网关,模型与价格以模型价格页为准。

相关阅读: