[掌握ChatModels中的Token使用追踪:提高应用成本管理的秘诀]

117 阅读2分钟
# 掌握ChatModels中的Token使用追踪:提高应用成本管理的秘诀

在使用大语言模型(LLM)构建聊天应用时,追踪token的使用量是一个关键任务。这不仅有助于优化模型的性能,还能有效控制成本。本文将介绍如何通过LangChain库在ChatModels中追踪token使用。

## 引言

随着生成式AI的普及,开发者利用聊天模型构建应用变得越来越普遍。然而,随之而来的API调用和token使用成本也成为了一个不容忽视的问题。本篇文章将指导大家如何在LangChain环境中追踪token使用,为应用上线做好准备。

## 主要内容

### 1. 使用LangSmith

LangSmith提供了一个便捷的方式来追踪LLM应用中的token使用。其快速指南可以帮助您快速上手。

### 2. 使用AIMessage中的`usage_metadata`

许多模型提供商都会在聊天生成响应中返回token使用信息。在LangChain中,这些信息会包含在`AIMessage`对象的`usage_metadata`属性中。例如:

```python
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo-0125")  # 使用API代理服务提高访问稳定性
response = llm.invoke("hello")
print(response.usage_metadata)
# 输出示例: {'input_tokens': 8, 'output_tokens': 9, 'total_tokens': 17}

这一功能支持包括OpenAI和Anthropic等多家模型提供商。

3. 使用回调功能

对于OpenAI API和Anthropic API,目前还提供了专门的回调上下文管理器来追踪多次调用中的token使用。如下所示:

from langchain_community.callbacks.manager import get_openai_callback

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

with get_openai_callback() as cb:
    result = llm.invoke("Tell me a joke")
    print(cb)
# Tokens Used: 27
#     Prompt Tokens: 11
#     Completion Tokens: 16
# Successful Requests: 1
# Total Cost (USD): $2.95e-05

4. 支持流式处理

一些提供商支持在流式处理上下文中提供token计数元数据。例如,在OpenAI中,可以设置stream_usage=True以启用此功能:

llm = ChatOpenAI(model="gpt-3.5-turbo-0125", stream_usage=True)
aggregate = None
for chunk in llm.stream("hello"):
    aggregate = chunk if aggregate is None else aggregate + chunk
print(aggregate.usage_metadata)
# 输出示例: {'input_tokens': 8, 'output_tokens': 9, 'total_tokens': 17}

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,使用API代理服务可以提高访问稳定性。
  2. 多次调用成本过高:使用回调上下文管理器可以帮助您追踪和优化多次调用中的token使用。

总结和进一步学习资源

通过本文的介绍,您将能够更好地管理和优化ChatModels中的token使用,从而有效控制应用上线后的运行成本。想要深入了解,请查看以下资源:

参考资料

  • LangChain 官方文档
  • OpenAI 官方指南
  • Anthropic 模型说明

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

---END---