如何在生产环境中有效跟踪LLM的Token使用情况

151 阅读2分钟

如何在生产环境中有效跟踪LLM的Token使用情况

在将应用程序投入生产时,跟踪Token的使用以计算成本是一个关键步骤。本文将指导您如何从LangChain模型调用中获得这些信息。

引言

当使用大型语言模型(LLM)构建应用程序时,了解和管理API调用的成本对于开发者非常重要。特别是对于那些使用LangChain进行模型调用的开发者而言,跟踪和管理Token的使用变得尤为重要。本教程将介绍如何通过LangChain的回调机制来实现这一目标。

主要内容

使用LangSmith

LangSmith可以帮助您在LLM应用程序中跟踪Token使用情况。建议您首先阅读LangSmith的快速入门指南以了解相关基础知识。

使用回调

如果您的模型支持API特定的回调上下文管理器,那么您可以使用这些管理器在多个调用中跟踪Token使用情况。如果您的模型没有这种集成支持,您可以参照OpenAI的回调管理器实现自定义的回调管理器。

OpenAI的示例

以下是一个跟踪单次Chat模型调用中的Token使用情况的简单示例。

from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI

llm = OpenAI(model_name="gpt-3.5-turbo-instruct")

# 使用API代理服务提高访问稳定性
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}")

上例中,我们使用了get_openai_callback来跟踪Token使用情况。

多次调用

您可以在上下文管理器中跟踪多个调用的Token使用情况,例如连续的链调用。如下例所示:

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

# 使用API代理服务提高访问稳定性
with get_openai_callback() as cb:
    response = chain.invoke({"topic": "birds"})
    print(response)
    response = chain.invoke({"topic": "fish"})
    print("--")
    print(response)

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}")

常见问题和解决方案

流式处理的挑战

在流式处理上下文中,get_openai_callback目前不支持遗留语言模型的Token计数。要在流式处理上下文中正确计数Token,您可以选择:

  • 使用本文中所述的聊天模型;
  • 实现使用合适分词器的自定义回调处理程序;
  • 使用监控平台,如LangSmith。

总结和进一步学习资源

掌握Token使用情况跟踪对于有效管理LLM应用程序中的API调用成本至关重要。通过LangChain提供的回调机制,开发者可以轻松跟踪和管理这些成本。此外,了解基本的API模型和流式处理机制造成的限制,能帮助您做出更好的开发决策。

参考资料

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

---END---