实用指南:如何跟踪大型语言模型(LLMs)的Token使用情况

211 阅读2分钟

引言

在将应用程序投入生产时,跟踪Token使用量以计算成本是至关重要的一步。本文旨在指导您如何从LangChain模型调用中获取这些信息,并探讨相关的潜在挑战和解决方案。

主要内容

使用LangSmith进行Token跟踪

您可以利用LangSmith帮助跟踪LLM应用中的Token使用情况。详细信息请参阅LangSmith快速入门指南。

使用回调管理器

一些API特定的回调上下文管理器允许您跨多个调用跟踪Token使用情况。您需要检查是否有适合您的模型的此类集成可用。

如果没有,您可以通过调整OpenAI回调管理器的实现创建自定义回调管理器。

OpenAI示例

现在,让我们来看看如何跟踪单个Chat模型调用的Token使用情况。

注意:当前回调处理程序不支持对旧版语言模型(例如,langchain_openai.OpenAI)的流式Token计数。

代码示例

单次调用示例

from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI

# 初始化OpenAI模型
llm = OpenAI(model_name="gpt-3.5-turbo-instruct")

# 使用API代理服务提高访问稳定性
with get_openai_callback() as cb:
    result = llm.invoke("Tell me a joke")
    print(result)
    print("---")

print(f"Total Tokens: {cb.total_tokens}")
print(f"Prompt Tokens: {cb.prompt_tokens}")
print(f"Completion Tokens: {cb.completion_tokens}")
print(f"Total Cost (USD): ${cb.total_cost}")

上面的代码展示了如何使用回调函数跟踪单个调用的Token使用情况。

多次调用示例

在上下文管理器内的任何操作都会被跟踪。以下示例展示了如何跟踪顺序调用:

from langchain_community.callbacks import get_openai_callback
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI

# 初始化OpenAI模型
llm = OpenAI(model_name="gpt-3.5-turbo-instruct")

# 使用API代理服务提高访问稳定性
template = PromptTemplate.from_template("Tell me a joke about {topic}")
chain = template | llm

with get_openai_callback() as cb:
    response = chain.invoke({"topic": "birds"})
    print(response)
    response = chain.invoke({"topic": "fish"})
    print("--")
    print(response)

print("---")
print(f"Total Tokens: {cb.total_tokens}")
print(f"Prompt Tokens: {cb.prompt_tokens}")
print(f"Completion Tokens: {cb.completion_tokens}")
print(f"Total Cost (USD): ${cb.total_cost}")

流式Token计数

请注意,如果您希望在流式上下文中正确计数Token,需考虑以下选项:

  • 使用适用于流式上下文的Chat模型;
  • 实现使用适当分词器的自定义回调处理程序;
  • 使用监控平台如LangSmith。

常见问题和解决方案

为什么流式上下文中Token计数未更新?

当前回调处理程序不支持对旧版语言模型的流式Token计数。您可以使用支持流处理的Chat模型或自定义回调处理程序来解决此问题。

网络限制问题

某些地区可能需要使用API代理服务来提高对OpenAI服务的访问稳定性。

总结和进一步学习资源

本文介绍了如何跟踪LangChain模型中的Token使用情况。对于更深入的学习,您可以参考以下资源:

参考资料

  • LangSmith官方文档
  • OpenAI API官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---