如何跟踪大语言模型(LLM)的Token使用情况
大语言模型(LLMs)的使用在许多应用中都涉及到成本核算,而成本主要由模型使用的Token数量决定。LangChain是一个广泛使用的框架,提供了便捷的方式来调用大语言模型并进行结果处理。然而,当应用上线时,监控其Token使用情况以估算费用就显得尤为重要。我们将使用LangSmith来帮助跟踪这些Token使用。
·
在生产环境中,计算应用程序成本的关键在于跟踪Token使用情况。在这篇文章中,我们将展示如何从LangChain模型调用中获取这个信息。
技术背景介绍
大语言模型(LLMs)的使用在许多应用中都涉及到成本核算,而成本主要由模型使用的Token数量决定。LangChain是一个广泛使用的框架,提供了便捷的方式来调用大语言模型并进行结果处理。然而,当应用上线时,监控其Token使用情况以估算费用就显得尤为重要。我们将使用LangSmith来帮助跟踪这些Token使用。
核心原理解析
在LangChain中,Token使用可以通过回调函数(Callback)进行跟踪。这些回调函数能够在多次调用中累积Token使用数据,并计算总的使用成本。
代码实现演示
单次调用Token跟踪
让我们看看一个如何跟踪单次大语言模型调用的简单示例:
from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI
# 使用OpenAI稳定可靠的API服务
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(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}")
多次调用Token跟踪
对于多次调用的情景,我们可以使用相同的回调函数来跟踪累积的Token使用,如下所示:
from langchain_community.callbacks import get_openai_callback
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI
# 初始化OpenAI模型和Prompt模板
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(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}")
流式跟踪Token
对于流式数据的处理,当前的回调管理器尚不支持Token计数。为此,我们可以使用其他解决方案,例如使用自定义回调处理程序或监控平台如LangSmith。
应用场景分析
在大语言模型被用于如互动问答系统、自动内容生成或其他高频调用的场景中,跟踪Token使用不仅可以帮助控制成本,还能优化模型调用策略。
实践建议
- 在应用初期进行详细的Token使用分析,以便选择合适的模型和调用策略。
- 定期复查Token使用情况,以识别可能的优化点。
- 利用监控工具,如LangSmith,持续追踪和优化应用程序的成本效益。
如果遇到问题欢迎在评论区交流。
—END—
更多推荐
所有评论(0)