peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
1.26 kB
from typing import Any, Dict, List, Optional
def estimate_tokens(text: str) -> int:
if not text:
return 0
chinese_chars = sum(
1
for char in text
if "\u4e00" <= char <= "\u9fff"
or "\u3000" <= char <= "\u303f"
or "\uff00" <= char <= "\uffef"
)
non_chinese_chars = len(text) - chinese_chars
chinese_tokens = chinese_chars / 1.5
english_tokens = non_chinese_chars / 4.0
return max(1, int(chinese_tokens + english_tokens))
def calculate_usage_stats(
messages: List[Dict[str, Any]],
response_content: str,
reasoning_content: Optional[str] = None,
) -> Dict[str, int]:
prompt_text = ""
for message in messages:
role = message.get("role", "")
content = message.get("content", "")
prompt_text += f"{role}: {content}\n"
prompt_tokens = estimate_tokens(prompt_text)
completion_text = response_content or ""
if reasoning_content:
completion_text += reasoning_content
completion_tokens = estimate_tokens(completion_text)
total_tokens = prompt_tokens + completion_tokens
return {
"prompt_tokens": prompt_tokens,
"completion_tokens": completion_tokens,
"total_tokens": total_tokens,
}