譯者 | 布加迪
審校 | 重樓
引言
在構(gòu)建大語言模型應(yīng)用程序時,token就是金錢。如果你曾經(jīng)使用過像GPT-4這樣的 LLM,可能有過這樣的經(jīng)歷:查看賬單時納悶“費用怎么這么高?!” 你進(jìn)行的每次API調(diào)用都會消耗token,這直接影響延遲和成本。但如果不跟蹤token,就不知道token的用途,也不知道如何優(yōu)化。
這時候LangSmith就有了用武之地。它不僅可以跟蹤你的LLM調(diào)用,還可以讓你記錄、監(jiān)控和直觀顯示工作流程中每個步驟的token使用情況。我們在本指南中將介紹:
- 為什么token跟蹤很重要?
- 如何設(shè)置日志記錄機(jī)制?
- 如何在LangSmith 儀表板中直觀顯示token使用情況?
為何token跟蹤很重要?
token跟蹤至關(guān)重要,因為與大語言模型的每次交互都會產(chǎn)生與處理的token數(shù)量相關(guān)的直接成本,這既包括輸入,也包括模型的輸出。如果不進(jìn)行監(jiān)控,提示中的細(xì)微低效、不必要的上下文或冗余請求都可能悄無聲息地增加你的費用,并降低性能。
如果跟蹤token,你可以準(zhǔn)確了解其使用情況。這樣一來,你可以優(yōu)化提示、簡化工作流程并控制成本。比如說,如果你的聊天機(jī)器人每次請求使用1500個token,那么將其減少到800個token可以將成本降低近一半。token跟蹤這個概念大致如下:

設(shè)置LangSmith以記錄token
第1步:安裝所需的軟件包
pip3 install langchain langsmith transforms accelerate langchain_community第2步:導(dǎo)入所有必要的組件
import os
from transformers import pipeline
from langchain.llms import HuggingFacePipeline
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langsmith import traceable第3步:配置Langsmith
設(shè)置你的API 密鑰和項目名稱:
# Replace with your API key
os.environ["LANGCHAIN_API_KEY"] = "your-api-key"
os.environ["LANGCHAIN_PROJECT"] = "HF_FLAN_T5_Base_Demo"
os.environ["LANGCHAIN_TRACING_V2"] = "true"
# Optional: disable tokenizer parallelism warnings
os.environ["TOKENIZERS_PARALLELISM"] = "false"第4步:加載Hugging Face模型
使用對CPU友好的模型(比如google/flan-t5-base),啟用采樣以獲得更自然的輸出:
model_name = "google/flan-t5-base"
pipe = pipeline(
"text2text-generation",
model=model_name,
tokenizer=model_name,
device=-1, # CPU
max_new_tokens=60,
do_sample=True, # enable sampling
temperature=0.7
)
llm = HuggingFacePipeline(pipeline=pipe)第5步:創(chuàng)建提示和鏈
定義一個提示模板,并使用LLMChain將其連接到Hugging Face管道:
prompt_template = PromptTemplate.from_template(
"Explain gravity to a 10-year-old in about 20 words using a fun analogy."
)
chain = LLMChain(llm=llm, prompt=prompt_template)第6步:使函數(shù)可以用LangSmith 來跟蹤
使用@traceable 裝飾器自動記錄輸入、輸出、token 使用情況以及運(yùn)行時:
@traceable(name="HF Explain Gravity")
def explain_gravity():
return chain.run({})第7步:運(yùn)行函數(shù),打印輸出結(jié)果
answer = explain_gravity()
print("\n=== Hugging Face Model Answer ===")
print(answer)輸出:
=== Hugging Face Model Answer ===
Gravity is a measure of mass of an object.第8步:查看Langsmith儀表板
進(jìn)入到smith.langchain.com → 跟蹤項目。你將看到以下內(nèi)容:

你甚至可以看到每個項目的相關(guān)成本,以便分析你的賬單。現(xiàn)在,要查看token使用情況及其他信息,只需點擊你的項目。你將看到:

紅色框突出顯示并列出了你運(yùn)行項目的次數(shù)。點擊任意運(yùn)行的項目,你將看到:

你可以在此處查看各種信息,比如token總數(shù)和延遲時間等。點擊儀表板,如下所示:

現(xiàn)在,你可以查看隨時間變化的圖表,以跟蹤token使用趨勢、檢查每個請求的平均延遲時間、比較輸入和輸出token,并確定峰值使用時段。這些信息有助于優(yōu)化提示、管理成本并提升模型性能。

向下滾動以查看與你的項目相關(guān)的所有圖表。
第9步:探究LangSmith 儀表板
你可以分析大量信息,比如:
- 查看示例跟蹤:點擊跟蹤即可查看詳細(xì)的執(zhí)行情況,包括原始輸入、生成的輸出和性能指標(biāo)。
- 查看單個跟蹤:對于每個跟蹤,你可以探究執(zhí)行的每個步驟,查看提示、輸出、token使用情況和延遲。
- 檢查token使用情況和延遲:詳細(xì)的token數(shù)量和處理時間有助于識別瓶頸并優(yōu)化性能。
- 評估鏈:使用LangSmith的評估工具來測試場景、跟蹤模型性能并比較輸出。
- 在Playground中進(jìn)行試驗:調(diào)整溫度、提示模板或采樣設(shè)置等參數(shù)來微調(diào)模型的行為。
完成此設(shè)置后,你現(xiàn)在可以在LangSmith儀表板中全面了解Hugging Face模型的運(yùn)行情況、token使用情況和整體性能。
如何發(fā)現(xiàn)和修復(fù)token消耗大戶?
有了日志記錄功能后,你可以:
- 檢查提示是否過長
- 識別模型過度生成的調(diào)用
- 換成較小的模型,以執(zhí)行成本更低的任務(wù)
- 緩存響應(yīng)以避免重復(fù)請求
這對于調(diào)試長鏈或智能體非常有用。找到消耗最多token的那個步驟,并加以調(diào)整和完善。
結(jié)語
這就是設(shè)置和使用Langsmith的方法。記錄token使用情況不僅是為了省錢,更在于構(gòu)建更智能、更高效的LLM應(yīng)用程序。本指南提供了基礎(chǔ),你可以通過探究、試驗和分析自己的工作流程,以了解更多信息。
原文標(biāo)題:The Beginner’s Guide to Tracking Token Usage in LLM Apps,作者:Kanwal Mehreen

























