You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过LangChain获取LLM调用的输入与输出Token计数

在LangChain中获取LLM调用的输入/输出Token数量

情况1:调用OpenAI/Anthropic等云API模型

这类模型的官方API会直接返回Token使用统计,LangChain会将这部分数据存在响应的response_metadata字段中,直接提取即可:

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

# 初始化OpenAI聊天模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# 构造输入消息
input_msg = [HumanMessage(content="请简述LangChain的核心价值")]

# 调用模型获取响应
response = llm(input_msg)

# 提取Token使用数据
usage = response.response_metadata["usage"]
input_token_count = usage["prompt_tokens"]
output_token_count = usage["completion_tokens"]

print(f"输入Token数: {input_token_count}")
print(f"输出Token数: {output_token_count}")

情况2:调用本地HuggingFace模型

本地模型没有API返回的自动统计,需要用对应模型的Tokenizer手动计算输入和输出的Token数量:

from langchain.llms import HuggingFacePipeline
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline

# 加载模型和Tokenizer(这里以gpt2为例,替换为你使用的模型)
model_id = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

# 构建LangChain兼容的Pipeline
text_gen_pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_new_tokens=150
)
llm = HuggingFacePipeline(pipeline=text_gen_pipeline)

# 输入文本
input_text = "请简述LangChain的核心价值"

# 计算输入Token数
input_token_count = len(tokenizer.encode(input_text))

# 获取模型响应
output_text = llm.predict(input_text)

# 计算输出Token数
output_token_count = len(tokenizer.encode(output_text))

print(f"输入Token数: {input_token_count}")
print(f"输出Token数: {output_token_count}")

补充说明

  • 不同云服务商的模型(比如Anthropic Claude),response_metadata中的字段名可能略有差异,但核心都是从API返回的usage数据中提取。
  • 如果需要更精细的Token统计(比如按消息角色拆分),可以针对输入的每条消息单独用Tokenizer计算后求和。

内容的提问来源于stack exchange,提问作者jb62

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:24:55