背景:
计算 token 数量: 在 OpenAI 的 API 中,token 是衡量文本长度的基本单位。你可以使用 tiktoken
库(对于 OpenAI 模型)来计算输入内容和历史记录内容的 token 数量。其他大模型也有类似的工具来获取 token 计算结果。这里我会假设你使用的是 OpenAI 模型。
1. 安装 tiktoken
pip install tiktoken
2. 通过代码来计算 token 数量
import tiktoken # 用于计算 token 数量
from openai import OpenAIError
# 假设你使用的是 OpenAI 模型,你可以根据自己的实际模型调整编码器
enc = tiktoken.get_encoding("cl100k_base") # OpenAI 使用的 token 编码器
def count_tokens(text: str) -> int:
"""计算给定文本的 token 数量"""
return len(enc.encode(text))
# 计算 question 和 history 的 token 消耗
question_tokens = count_tokens(question)
history_tokens = sum(count_tokens(item.content) for item in history)
total_tokens = question_tokens + history_tokens
logger.debug(f"Input Question Tokens: {question_tokens}, History Tokens: {history_tokens}, Total Tokens: {total_tokens}")
# 在此处,可以决定是否对 token 使用进行限制,或者记录日志
if total_tokens > MAX_TOKEN_LIMIT:
raise HTTPException(status_code=400, detail="Token usage exceeds the limit")
3.注意事项
- 你需要根据所使用的模型选择正确的 token 编码器。
tiktoken
只适用于 OpenAI 模型,如果你使用其他大模型,可能需要不同的库或方法来计算 token。 - 请确保
MAX_TOKEN_LIMIT
根据你系统的实际限制进行调整。