import tiktoken
from llama_index.core.callbacks import CallbackManager, TokenCountingHandler
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
token_counter = TokenCountingHandler(
tokenizer=tiktoken.encoding_for_model("gpt-3.5-turbo").encode
)
Settings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.2)
Settings.callback_manager = CallbackManager([token_counter])
处理事件:
对于 LLM 事件,调用 on_event_end 并传入适当的有效载荷。
对于 Embedding 事件,调用 on_event_end 并传入适当的有效载荷。
访问令牌计数:
total_llm_token_count : Total LLM token count。
prompt_llm_token_count : Total LLM prompt token count。
completion_llm_token_count : Total LLM completion token count。
total_embedding_token_count : Total Embedding token count。
以下是一个示例代码片段:
from llama_index.core.callbacks import TokenCountingHandler, CBEventType
# Initialize the handler
token_counting_handler = TokenCountingHandler(verbose=True)
# Simulate an LLM event
llm_payload = {
"prompt": "What is the capital of France?",
"completion": "The capital of France is Paris."
}
token_counting_handler.on_event_end(CBEventType.LLM, payload=llm_payload)
# Simulate an Embedding event
embedding_payload = {
"chunks": ["This is a test sentence for embedding."]
}
token_counting_handler.on_event_end(CBEventType.EMBEDDING, payload=embedding_payload)
# Access the token counts
print("Total LLM Token Count:", token_counting_handler.total_llm_token_count)
print("LLM Prompt Token Count:", token_counting_handler.prompt_llm_token_count)
print("LLM Completion Token Count:", token_counting_handler.completion_llm_token_count)
print("Total Embedding Token Count:", token_counting_handler.total_embedding_token_count)
3条答案
按热度按时间vfwfrxfs1#
要使用
TokenCountingHandler
类为 Anthropic models 计算 tokens(Embedding Tokens,LLM Prompt Tokens,LLM Completion Tokens,Total LLM Token Count),请按照以下步骤操作:TokenCountingHandler
:on_event_end
并传入适当的有效载荷。on_event_end
并传入适当的有效载荷。total_llm_token_count
: Total LLM token count。prompt_llm_token_count
: Total LLM prompt token count。completion_llm_token_count
: Total LLM completion token count。total_embedding_token_count
: Total Embedding token count。以下是一个示例代码片段:
此代码将计算给定的 LLM 和 Embedding 事件的 tokens,并打印相应的 token 计数。对于更详细的用法,包括处理流式传输和高级 token 计数,您可以参考 TokenCountingHandler documentation1(https://github.com/run-llama/llama_index/blob/main/llama-index-legacy/llama_index/legacy/callbacks/token_counting.py)2(https://github.com/run-llama/llama_index/blob/main/docs/docs/examples/callbacks/TokenCountingHandler.ipynb)。
fxnxkyjh2#
@logan-markewich
TokenCountingHandler
不支持 Anthropic models。您能推荐其他方式来计算令牌吗?rslzwgfq3#
@Ninlawat-Puhu,这与上面的内容相同,只是在
TokenCountingHandler
中需要更改分词器参数。你需要执行以下操作:请参考这里:https://docs.llamaindex.ai/en/stable/examples/llm/anthropic/#set-tokenizer