- 从令牌计数和模型价格派生
- 直接指定为运行数据的一部分
发送令牌计数
为了让 LangSmith 准确计算 LLM 运行的基于令牌的成本,你需要提供令牌计数:- 如果你使用 LangSmith Python 或 TS/JS SDK 与 OpenAI 或 Anthropic 模型,内置包装器将自动向 LangSmith 发送令牌计数、模型提供商和模型名称数据。
- 如果你使用 LangSmith SDK 与其他模型提供商,你应该仔细阅读本指南。
- 如果你使用 LangChain Python 或 TS/JS,对于大多数聊天模型集成,令牌计数、模型提供商和模型名称会自动发送到 LangSmith。如果有聊天模型集成缺少令牌计数,而底层 API 在模型响应中包含令牌计数,请在 LangChain 存储库中打开 GitHub 问题。
指定模型名称
LangSmith 从运行元数据中的ls_model_name 字段读取 LLM 模型名称。SDK 内置包装器和任何 LangChain 集成将自动为你处理指定此元数据。
设置模型价格
要从令牌计数和模型名称计算成本,我们需要知道你使用的模型的每令牌价格。LangSmith 为此提供了一个模型定价表。该表包含大多数 OpenAI、Anthropic 和 Gemini 模型的定价信息。你可以为其他模型添加价格,或覆盖默认模型的定价。 你可以为提示(输入)和完成(输出)令牌指定价格。如果需要,你可以提供更详细的价格细分。例如,某些模型提供商对多模态或缓存令牌有不同的定价。
将鼠标悬停在提示/完成价格旁边的 ... 上会显示按令牌类型的价格细分。例如,你可以看到 audio 和 image 提示令牌是否与默认文本提示令牌有不同的价格。
要在模型定价映射中创建新条目,请单击右上角的 Add new model 按钮。
在这里,你可以指定以下字段:
- 模型名称:模型的人类可读名称。
- 匹配模式:用于匹配模型名称的正则表达式模式。这用于匹配运行元数据中
ls_model_name的值。 - 提示(输入)价格:模型每 1M 输入令牌的成本。此数字乘以提示中的令牌数来计算提示成本。
- 完成(输出)价格:模型每 1M 输出令牌的成本。此数字乘以完成中的令牌数来计算完成成本。
- 提示(输入)价格细分(可选):每种不同类型的提示令牌的价格细分,例如
cache_read、video、audio等。 - 完成(输出)价格细分(可选):每种不同类型的完成令牌的价格细分,例如
reasoning、image等。 - 模型激活日期(可选):定价适用的日期。只有在此日期之后的运行才会应用此模型价格。
- 提供商(可选):模型的提供商。如果指定,这将与运行元数据中的
ls_provider匹配。
请注意,对模型定价映射的更新不会反映在已记录的跟踪成本中。我们目前不支持回填模型定价更改。
成本公式
运行的成本是从最具体到最不具体的令牌类型贪婪计算的。假设我们设置每 1M 提示令牌 1,每 1M 完成令牌为 $3。如果我们上传以下使用元数据:直接发送成本
如果你正在跟踪返回令牌成本信息的 LLM 调用,正在跟踪具有非基于令牌的定价方案的 API,或者在运行时具有准确的成本信息,你可以在跟踪时填充usage_metadata 字典,而不是依赖 LangSmith 的内置成本计算。
请参阅本指南以了解如何手动为运行提供成本信息。