Token Lab搜索

← 全部教程
开发者教程 / 02

为什么语言、Emoji 和 JSON 会改变 Token 数量

用多语言文本比较编码,理解字符、字节与 Token 三种不同的度量。

先区分三种单位

Unicode 码点描述文本,UTF-8 字节描述存储,而 Token 描述特定词表如何表示输入。一个肉眼可见的 Emoji 可能由多个码点组成;一个码点也可能占多个字节或 Token。

英语中“约四个字符一个 Token”的经验不能直接用于多语言预算。应该用实际编码测量真实提示词。

学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

保持输入不变再比较

载入“多语言与 Emoji”,点击“比较两种编码”。两次计数来自完全相同的文本。再换成真实的西语、日语、韩语或中文提示词,不要假设不同样本具有固定比例。

JSON 会增加键名、引号、标点与空白。对比格式化对象和紧凑对象:减少空白会减少字节,但 Token 的变化取决于编码和上下文,仍然需要实测。

import { encode } from 'gpt-tokenizer/encoding/cl100k_base';
// npm install gpt-tokenizer@4.1.0
const samples = [
  'Hello, world!', '你好,世界!',
  '¡Hola, mundo!', 'こんにちは、世界!',
  '안녕하세요, 세계!', '👨‍👩‍👧‍👦'
];
for (const text of samples) {
  const ids = encode(text);
  console.log(text, ids.length);
}
在工具中尝试 →

优化意义,不只优化外观

先移除不需要的字段、重复文档和无关历史,保留任务约束与证据。看起来更短不一定 Token 更少,Token 更少也不保证回答质量相同。

维护一组多语言回归样本,提示词修改后同时评估计数与任务正确性。不要把这两种编码当作其他模型分词器的精确计数器。

参考资料与实现

MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

固定编码与输入,分别记录 UTF-8 字节、码点和 token;英文每 token 约 4 字符不是多语言公式。

已复核共享代码、英文数学解释及多语言关键数值段落;不代表完成逐字翻译校对。

多语言对应文本 → 固定 tokenizer 编码 → 分别计字节、码点与 token → 比较实测,不套用经验比例
机制图:从上到下跟踪每次变换。

运行前:预测一个边界情况

固定编码与输入,分别记录 UTF-8 字节、码点和 token;英文每 token 约 4 字符不是多语言公式。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node multilingual-tokenization.mjs. npm install gpt-tokenizer@4.1.0

import { encode } from 'gpt-tokenizer/encoding/cl100k_base';
// npm install gpt-tokenizer@4.1.0
const samples = [
  'Hello, world!', '你好,世界!',
  '¡Hola, mundo!', 'こんにちは、世界!',
  '안녕하세요, 세계!', '👨‍👩‍👧‍👦'
];
for (const text of samples) {
  const ids = encode(text);
  console.log(text, ids.length);
}

测试与迁移

固定编码与输入,分别记录 UTF-8 字节、码点和 token;英文每 token 约 4 字符不是多语言公式。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围