使用LangSmith追踪LLM令牌使用情况的指南

在将应用程序投入生产时,追踪令牌使用情况以计算成本是一个重要的步骤。本文将深入探讨如何从LangChain模型调用中获取这些信息。

技术背景介绍

在大语言模型(LLM)的应用中,令牌使用计数是估算模型调用成本的基础。LangSmith提供了一种有效的方式来帮助跟踪应用程序中的令牌使用。此外,使用回调机制可以在不同的API调用中进行监控,这对于复杂的应用程序尤其重要。

核心原理解析

通过在API调用中使用回调机制,可以记录令牌使用详情,包括提示令牌、完成令牌以及总计令牌数。LangSmith提供的get_openai_callback工具允许开发者在上下文管理器中追踪这些数据,并计算相应的费用。

代码实现演示(重点)

下面我们展示如何使用get_openai_callback来追踪单次调用和多次调用中的令牌使用。

单次调用

from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI

# 创建一个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(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}")

在这个例子中,我们调用模型获取一个笑话,并记录该调用的令牌使用情况。

多次调用

如果需要追踪多个模型调用,可以使用相同的回调机制:

from langchain_community.callbacks import get_openai_callback
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI

# 创建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)
    print("--")
    response = chain.invoke({"topic": "fish"})
    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}")

在这个例子中,我们分别请求鸟类和鱼类的笑话,并计算总计的令牌使用情况。

应用场景分析

这种令牌追踪方法对于需要精确计算API调用成本的应用场景尤其有用,例如商业应用程序和规模化部署。在大规模调用和复杂流程中,能够明确每一步的令牌使用情况对于优化成本非常重要。

实践建议

  1. 选择合适的模型和框架: 确保选择支持令牌追踪的模型和API。
  2. 利用上下文管理器: 有效使用回调上下文管理器简化代码,并确保准确监控。
  3. 定期审查成本: 根据令牌使用情况,定期审查和优化你的成本架构。

如果遇到问题欢迎在评论区交流。
—END—

你可能感兴趣的:(java,服务器,前端,python)