掌握如何使用LangChain追踪ChatModel的Token使用量

261 阅读2分钟
## 引言

随着AI技术的飞速发展,越来越多的应用程序开始集成高级聊天模型。为了将这些模型高效地投入生产,了解和追踪Token使用量是必不可少的一步。本指南将介绍如何使用LangChain库获取这些信息。

## 主要内容

### 前提条件

本文假设读者已熟悉以下概念:

- Chat模型
- Token使用量追踪

本指南要求`langchain-openai >= 0.1.9`。首先,通过以下命令安装或升级必要的库:

```bash
%pip install --upgrade --quiet langchain langchain-openai

使用LangSmith

LangSmith是一款帮助开发者跟踪LLM应用中Token使用的工具。可以参考LangSmith快速开始指南来了解更多。

使用AIMessage.usage_metadata

多个模型提供商会在响应中包含Token使用信息。在LangChain的AIMessage对象中,这些信息存储在usage_metadata属性中。例如:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo-0125")
openai_response = llm.invoke("hello")
print(openai_response.usage_metadata)  # {'input_tokens': 8, 'output_tokens': 9, 'total_tokens': 17}

使用AIMessage.response_metadata

响应的元数据也包含在AIMessage中的response_metadata属性中。不同提供商可能使用不同的元数据格式:

print(f'OpenAI: {openai_response.response_metadata["token_usage"]}\n')

代码示例

以下是如何使用LangChain进行Token使用量追踪的代码示例:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo-0125", stream_usage=True)

aggregate = None
for chunk in llm.stream("hello", stream_usage=True):  # 使用API代理服务提高访问稳定性
    aggregate = chunk if aggregate is None else aggregate + chunk

print(aggregate.usage_metadata)  # {'input_tokens': 8, 'output_tokens': 9, 'total_tokens': 17}

常见问题和解决方案

网络限制问题

由于某些地区的网络限制,开发者可能需要使用API代理服务来提高访问稳定性。

Token使用量不一致

不同的模型提供商可能对于Token计数的实现会有所不同。因此,在不同的环境中测试是很重要的。

总结和进一步学习资源

通过本文的介绍,我们学习了如何在LangChain中追踪Chat模型的Token使用量。接下来,建议阅读以下资源以深入了解:

参考资料

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

---END---