使用模式
为了测量LLM和嵌入的令牌数量,您需要
- 设置
MockLLM和MockEmbedding对象
from llama_index.core.llms import MockLLMfrom llama_index.core import MockEmbedding
llm = MockLLM(max_tokens=256)embed_model = MockEmbedding(embed_dim=1536)- 设置
TokenCountingCallback处理器
import tiktokenfrom llama_index.core.callbacks import CallbackManager, TokenCountingHandler
token_counter = TokenCountingHandler( tokenizer=tiktoken.encoding_for_model("gpt-3.5-turbo").encode)
callback_manager = CallbackManager([token_counter])- 将它们添加到全局 Settings
Settings
from llama_index.core import Settings
Settings.llm = llmSettings.embed_model = embed_modelSettings.callback_manager = callback_manager- 构建索引
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader( "./docs/examples/data/paul_graham").load_data()
index = VectorStoreIndex.from_documents(documents)- 统计数量!
print( "Embedding Tokens: ", token_counter.total_embedding_token_count, "\n", "LLM Prompt Tokens: ", token_counter.prompt_llm_token_count, "\n", "LLM Completion Tokens: ", token_counter.completion_llm_token_count, "\n", "Total LLM Token Count: ", token_counter.total_llm_token_count, "\n",)
# reset countstoken_counter.reset_counts()- 运行查询,再次测量
query_engine = index.as_query_engine()
response = query_engine.query("query")
print( "Embedding Tokens: ", token_counter.total_embedding_token_count, "\n", "LLM Prompt Tokens: ", token_counter.prompt_llm_token_count, "\n", "LLM Completion Tokens: ", token_counter.completion_llm_token_count, "\n", "Total LLM Token Count: ", token_counter.total_llm_token_count, "\n",)