token与字符不同:字符是unicode可见符号,数量固定;token是模型分词结果,同一文本在不同模型中token数可差30%,如“人工智能”在qwen为1个、gpt-4为2个,空格、emoji等也各占token。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

想在AI开发中准确预估提示词长度、控制API调用成本、避免上下文截断,必须分清Token和字符不是一回事——字符是人眼可见的书写单位,Token是模型内部识别和计算的最小信号片段,同一段中文文本,字符数固定,但Token数可能因模型分词器不同而差出30%。
字符是书写单位,Token是模型“吃文字”的单位
字符指Unicode码位上的基本符号:一个汉字(如“你”)、一个英文字母(如“a”)、一个标点(如“。”)、一个空格、甚至一个换行符,都算1个字符。它不随语言模型变化,是人类编辑器里可数的实体。
Token则是大模型tokenizer输出的离散编号单元,由训练语料高频模式决定。比如“人工智能”在Qwen模型中常为1个Token,在GPT-4中大概率被切为“人工”+“智能”2个Token——【同一串字符,不同模型返回的Token数可以完全不同】。
这就像把面粉称重(字符) vs 把面粉按烘焙配方揉成面团块(Token):块的大小、数量取决于厨师(模型)的习惯,不是面粉本身属性。
实测对比:同一段中文,字符数 vs Token数
方法一:用OpenAI官方tiktoken库本地测算(推荐)
安装并运行:pip install tiktoken → 在Python中执行 import tiktoken; enc = tiktoken.encoding_for_model("gpt-4"); len(enc.encode("你好!今天要写API文档。")) → 输出结果为9。
此时字符数为11(“你好!今天要写API文档。”共11个可见字符),但Token数是9——因为“API”被识别为1个完整Token,“。”和“!”各占1个,开头无空格不额外计空格Token。
方法二:用Hugging Face Transformers的AutoTokenizer
加载任意中文主流模型(如bert-base-chinese)→ 调用tokenizer("你好!")["input_ids"] → 观察列表长度。注意:BERT类模型多用WordPiece,常将单字切开;而ChatGLM等则倾向整词合并——【不要跨模型混用Token计数结果】。
为什么空格、换行、emoji都会吃掉Token
第一步:打开任意AI聊天界面,输入纯空格“ ”(5个全角空格)→ 提交后用API响应头中的x-ratelimit-remaining-tokens或日志查看实际消耗。
第二步:对比输入“hello world”和“helloworld”——前者通常为3 Token(hello + space + world),后者可能为1或2(取决于是否在训练语料中高频连写)。
第三步:插入一个?表情,再测一次。你会发现它稳定占用1个Token,且与前后文字无关——因为主流tokenizer(如Cl100k_base)已将常用emoji映射为独立ID。这意味着:你以为只是加了个小图标,实际上悄悄多付了1次推理费用。
这一步操作起来很简单,直接把文件拖进去就行。











