大规模构建代理会产生难以跟踪的、基于使用量的复杂成本。LangSmith 会自动记录主要服务商的 LLM token 使用量和成本,同时也允许你为任何其他组件提交自定义成本数据。 这样,你就能在整个应用中获得统一的成本视图,从而轻松监控、理解和调试支出。
如需限制评估器运行的 LLM 成本,请参阅跟踪和限制评估器支出。评估器支出跟踪和限制使用模型定价中配置的每个模型的价格。

在 LangSmith UI 中查看成本

在 LangSmith UI 中,你可以通过三种方式查看使用量和支出:查看单个跟踪中的明细、查看项目统计信息中的聚合指标,以及查看仪表板。

Token 和成本明细

UI 会将 token 使用量和成本分为三类:
  • 输入:发送给模型的提示中的 token。子类型包括:缓存读取、文本 token、图像 token 等。
  • 输出:模型响应中生成的 token。子类型包括:推理 token、文本 token、图像 token 等。
  • 其他:工具调用、检索步骤或任何自定义运行产生的成本。
将鼠标悬停在 UI 中的成本区域上,即可查看详细明细。如果可用,每个区域还会按子类型进一步分类。 Cost tooltip 你可以在 LangSmith UI 的以下位置查看这些明细:

在跟踪树中

跟踪树提供了 token 使用量和成本的最详细视图(针对单个跟踪)。它会显示整个跟踪的总使用量、每个父级运行的聚合值,以及每个子级运行的 token 和成本明细。 打开跟踪项目中的任意运行,即可查看其跟踪树。
在跨线程跟踪成本时,请确保所有子级运行都包含线程元数据(session_id 或 thread_id)。如果子级运行没有线程元数据,这些运行的 token 数量和成本将不会计入线程级聚合。有关设置线程元数据的详细信息,请参阅配置线程。

在项目统计信息中

项目统计信息面板显示项目中所有跟踪的 token 使用总量和成本总额。

在仪表板中

仪表板可帮助你了解成本和 token 使用量随时间变化的趋势。跟踪项目的预构建仪表板会显示总成本,以及按输入和输出 token 划分的成本明细。 你还可以在自定义仪表板中配置自定义成本跟踪图表。

成本跟踪

你可以通过两种方式跟踪成本:
  1. 自动:根据 LLM 调用的 token 数量和模型价格推导。
  2. 手动:直接在任意运行上指定,包括非 LLM 类型的运行。

LLM 调用:根据 token 数量自动跟踪成本

要根据 token 使用量自动计算成本,你需要提供 token 数量、模型和服务商以及模型价格。
如果你使用 LangChain 调用 LLM,使用 @traceable 调用 OpenAI 或 Anthropic(或 OpenAI 兼容模型),或者使用 LangSmith 封装器调用 OpenAI 或 Anthropic,则可以跳过本节。
  1. 发送 token 数量。许多模型会在响应中包含 token 数量。你必须提取这些信息,并使用以下方法之一将其包含在运行中:
    • 在运行的元数据上设置 usage_metadata 字段。此方法的优点是无需更改被跟踪函数的运行时输出:
      Java 和 Kotlin 示例使用了专用执行器。关闭执行器并等待其终止,可以确保进程退出前后台跟踪提交已完成。
    • 在被跟踪函数的输出中返回 usage_metadata 字段。将 usage_metadata 键直接包含在被跟踪函数返回的对象中。LangSmith 会从输出中提取该字段:
    无论采用哪种方式,使用量元数据都应包含以下 LangSmith 可识别字段的子集:
    LangSmith 可以识别 usage_metadata 字典中的以下字段。你可以直接查看完整的 Python 类型或 TypeScript 接口。
    number
    模型输入中使用的 token 数量。所有输入 token 类型的总和。
    number
    模型响应中使用的 token 数量。所有输出 token 类型的总和。
    number
    输入和输出中使用的 token 数量。可选,可以推导得出。等于 input_tokens + output_tokens。
    object
    输入 token 类型的明细。键为 token 类型字符串,值为数量。例如 {"cache_read": 5}。已知字段包括:audio、text、image、cache_read、cache_creation、cache_read_over_200k(Gemini)、ephemeral_5m_input_tokens、ephemeral_1h_input_tokens(Anthropic 临时缓存层级)。具体字段还可能因模型或服务商而异。
    object
    输出 token 类型的明细。键为 token 类型字符串,值为数量。例如 {"reasoning": 5}。已知字段包括:audio、text、image、reasoning。具体字段还可能因模型或服务商而异。
    number
    输入 token 的成本。
    number
    输出 token 的成本。
    number
    token 的成本总额。可选,可以推导得出。等于 input_cost + output_cost。
    object
    输入成本的明细。键为 token 类型字符串,值为成本金额。
    object
    输出成本的明细。键为 token 类型字符串,值为成本金额。
    成本计算一次运行的成本会按照 token 类型从具体到宽泛的顺序进行贪心计算。假设你设置了每 100 万个输入 token 2 美元的价格,同时设置了每 100 万个 cache_read 输入 token 1 美元的详细价格,以及每 100 万个输出 token 3 美元的价格。如果你上传了以下使用量元数据:
    那么 token 成本将按以下方式计算:
  2. 指定模型名称。使用自定义模型时,需要在运行的元数据中指定以下字段,以便将 token 数量与成本关联起来。在查看跟踪和进行筛选时,提供这些元数据字段也有助于识别模型。
    • ls_provider:模型的服务商,例如“openai”“anthropic”
    • ls_model_name:模型名称,例如“gpt-5.4-mini”“claude-opus-4-8”
  3. 设置模型价格。LangSmith 使用其模型定价表将模型名称映射到每个 token 的价格,以根据 token 数量计算成本。
    该表包含大多数 OpenAI、Anthropic 和 Gemini 模型的定价信息。如果你使用自定义价格,可以创建新的模型价格条目,或覆盖默认模型的价格。
    对于不同 token 类型具有不同价格的模型(例如多模态 token 或缓存 token),你可以为每种 token 类型指定价格明细。将鼠标悬停�� 输入价格 和 输出价格 条目旁边的 … 上,即可查看按 token 类型划分的价格明细。
    LangSmith 不会将模型定价映射的更新反映到已经记录的跟踪成本中。不支持回填模型定价更改。

创建新的模型价格条目或修改现有条目

要修改默认模型价格,请创建一个与默认条目具有相同模型、服务商和匹配模式的新条目。 要在模型定价映射中创建新条目,请点击右上角的 + 模型 按钮。 在这里,你可以指定以下字段:
  • 模型名称:模型的可读名称。
  • 输入价格:模型每 100 万个输入 token 的成本。该数字会乘以提示中的 token 数量,以计算提示成本。
  • 输入价格明细(可选):不同输入 token 类型的价格明细,例如 cache_read、video、audio。
  • 输出价格:模型每 100 万个输出 token 的成本。该数字会乘以补全内容中的 token 数量,以计算补全成本。
  • 输出价格明细(可选):不同输出 token 类型的价格明细,例如 reasoning、image 等。
  • 模型启用日期(可选):价格开始生效的日期。只有该日期之后的运行才会应用此模型价格。
  • 匹配模式:用于匹配模型名称的正则表达式模式。该模式用于匹配运行元数据中的 ls_model_name 值。
  • 服务商(可选):模型的服务商。如果指定,则会与运行元数据中的 ls_provider 进行匹配。
设置好模型定价映射后,LangSmith 会根据 LLM 调用中提供的 token 数量,自动计算并聚合跟踪的基于 token 的成本。

LLM 调用:直接发送成本

Gemini 2.5 Pro Preview 和 Gemini 2.5 Pro 使用分步成本函数,LangSmith 默认支持该函数。对于其他采用非线性定价的模型,请在客户端计算成本,并按照以下代码所示将其作为 usage_metadata 发送:

其他运行:发送成本

你还可以为任何非 LLM 运行发送成本信息,例如工具调用。在运行的 usage_metadata 中使用 total_cost 字段指定成本:
或者,直接在被跟踪函数的返回值中包含 usage_metadata: