Skip to main content

计算基于令牌的跟踪成本

推荐阅读

在深入研究此内容之前,阅读以下内容可能会有所帮助:

LangSmith 允许您根据用于 LLM 调用的令牌数量来跟踪跟踪的成本。 成本将汇总到跟踪级别和项目级别。

为了让 LangSmith 准确计算基于令牌的成本,您需要在跟踪中提供每个 LLM 调用的令牌计数,并发送ls_providerls_model_name在 Run metadata.

  • 如果您使用的是 LangSmith Python 或 TS/JS SDK,则应仔细阅读本指南
  • 如果你使用的是 LangChain Python 或 TS/JS,ls_providerls_model_name以及令牌计数会自动发送到 LangSmith.
注意

如果ls_model_name不存在于extra.metadata,则其他字段可能会从extra.invocation_metadata用于估算 Token 数量和计算 Cost。以下字段按优先顺序使用:

  1. metadata.ls_model_name
  2. invocation_params.model
  3. invocation_params.model_name
  4. invocation_params.model_id(仅针对成本)
  5. invocation_params.model_path(仅针对成本)
  6. invocation_params.endpoint_name(仅针对成本)

向 LangSmith 发送正确的信息后,必须在 LangSmith 设置中设置模型定价图。 为此,请导航到模型定价地图。 在这里,您可以为每个模型和提供商组合设置每个令牌的成本。此信息的范围限定为工作区。

模型定价图中已经存在 OpenAI 模型的几个默认条目,您可以根据需要克隆和修改这些条目。

要在模型定价映射中创建新条目,请单击Add new model按钮。

在这里,您可以指定以下字段:

  • Model Name:模型的名称,也将用于命名模型定价地图中的条目。
  • Prompt Cost:模型的每个输入令牌的成本。此数字乘以 Prompt 中的令牌数量,以计算 Prompt 成本。
  • Completion Cost:模型的每个输出令牌的成本。此数字乘以完成中的标记数量,以计算完成成本。
  • Model Activation Date:定价适用的起始日期。
  • Match Pattern:用于匹配模型名称和提供程序的正则表达式模式。这用于匹配ls_model_name在 Run metadata.
  • Provider:模型的提供程序。这用于匹配ls_provider在 Run metadata.

设置模型定价映射后,LangSmith 将根据 LLM 调用中提供的令牌计数自动计算和汇总基于令牌的跟踪成本。

要查看上面的示例的实际效果,您可以执行以下代码片段:

from langsmith import traceable

inputs = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "I'd like to book a table for two."},
]

output = {
"choices": [
{
"message": {
"role": "assistant",
"content": "Sure, what time would you like to book the table for?"
}
}
],
"usage_metadata": {
"input_tokens": 27,
"output_tokens": 13,
"total_tokens": 40,
},
}

@traceable(
run_type="llm",
metadata={"ls_provider": "my_provider", "ls_model_name": "my_model"}
)
def chat_model(messages: list):
return output

chat_model(inputs)

在上面的代码片段中,我们将ls_providerls_model_name在 run 元数据中,以及 LLM 调用的令牌计数。 此信息与我们之前设置的模型定价映射条目匹配。

生成的跟踪将包含基于 LLM 调用中提供的令牌计数和模型定价映射条目的基于令牌的成本。


这个页面有帮助吗?


您可以在 GitHub 上留下详细的反馈。