如何高效跟踪ChatModel中的Token使用情况

58 阅读2分钟

引言

在将应用程序投入生产时,跟踪ChatModel中的token使用情况是一项重要任务。了解token的使用情况可以帮助开发者计算成本并优化系统性能。本篇文章将详细介绍如何使用LangChain库来跟踪token使用,并提供实用的代码示例。

主要内容

使用LangSmith

LangSmith是一个非常有用的工具,可以帮助跟踪LLM(大型语言模型)应用中的token使用。开发者可以通过LangSmith快速启动并跟踪token使用情况。详情请查阅LangSmith快速启动指南

AIMessage.usage_metadata

许多模型提供商都会在chat生成响应中返回token使用信息。当信息可用时,LangChain的AIMessage对象将包含一个usage_metadata属性,这个属性是一个UsageMetadata字典,包含例如input_tokensoutput_tokens等标准键值。

示例代码:

from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
llm = ChatOpenAI(model="gpt-3.5-turbo-0125")
response = llm.invoke("hello")
print(response.usage_metadata)

使用回调

LangChain还支持一些API特定的回调上下文管理器,用于跨多个调用跟踪token使用。目前,OpenAI和Bedrock Anthropic API已实现此特性。

示例代码:

from langchain_community.callbacks.manager import get_openai_callback

llm = ChatOpenAI(model="gpt-3.5-turbo-0125")
with get_openai_callback() as cb:
    result = llm.invoke("Tell me a joke")
    print(cb.total_tokens)

代码示例

以下是如何启用OpenAI模型的流式token使用信息的完整代码示例:

from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", stream_usage=True)

for chunk in llm.stream("hello", stream_usage=True):
    print(chunk)

print(chunk.usage_metadata)

常见问题和解决方案

  1. API访问受限:某些地区可能会遇到API访问的问题,建议使用API代理服务以提高访问稳定性。
  2. Token使用信息不准确:确保所使用的LangChain版本大于等于0.1.9,并仔细阅读API文档以了解具体实现细节。

总结和进一步学习资源

通过本文的学习,相信您可以更加有效地跟踪和管理ChatModel中的token使用情况。建议继续学习LangChain文档和其他相关指南。

参考资料

  1. LangChain: Token Usage Tracking
  2. LangSmith: Quick Start Guide
  3. LangChain API Documentation

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

---END---