LLM 扫盲:什么是 Tokens?

作者:mCell日期:2025/12/2

同步至个人网站:LLM扫盲: 什么是tokens

LLM 基础:什么是 Tokens?

GPT 5.1 发布已经有一段时间了,LLM(大语言模型)的能力边界再一次被拓宽。对于应用开发者而言,虽然模型越来越智能,但 API 的计费逻辑和底层限制依然没有变:Token 始终是那个核心计量单位。

很多人对 Token 有误解,认为它等同于字符(Character)或单词(Word)。这种误解往往导致两个问题:一是预估 API 成本时出现较大偏差,二是无法精确控制 Prompt 的上下文长度,导致模型“失忆”。

今天,我们再来系统地梳理一下 Token 的概念。

机器如何阅读文本?

计算机只能处理数字,不能直接处理文本。因此,当我们向 LLM 发送一段话时,必须经历一个转码过程。

  1. 输入文本:人类语言。
  2. Tokenization(分词):将文本切分成一个个具备语义的最小单位(Token),并转换为数字 ID。
  3. 模型计算:模型对这些数字 ID 进行预测和计算。

Token 就是这个中间层的最小单位。

为什么不直接用“汉字”或“单词”做单位?

  • 字符粒度太细:如果用字符(如 a, b, c),语义太稀疏,模型计算量会呈指数级上升。
  • 单词粒度太粗:人类语言词汇量太大,且不断有新词产生,这会导致模型的词表(Vocabulary)过于庞大。

因此,LLM 采用的是 Sub-word(子词) 方案:常用的词是一个 Token,不常用的词拆分成多个 Token。

Token 的切分原理

Token 的切分规则并非一成不变,不同模型使用的编码器(Encoding)不同,结果也不同。

英文与中文的差异

  • 英文:通常一个单词是一个 Token,但复杂的词会被拆分。例如 smart 是一个,但合成词或生僻词会被拆解。
  • 中文:在 GPT-3 时,中文非常“吃亏”,一个汉字往往需要 2-3 个 Token。

到了现在的 GPT-5.1,Token 编码(如 o200k_base 或更新的编码集)对多语言进行了深度优化。 目前,绝大多数常用汉字,1 个汉字 = 1 个 Token。只有极少数生僻字或复杂的古文,才会被拆解。

这意味着,同样的预算,现在能处理的中文内容比两三年前多了将近一倍。

代码演示(Node.js)

光说概念比较抽象,我们直接看代码。

在 Web 开发或 Node.js 环境中,我们通常使用 npm 包 @dqbd/tiktoken 来在本地计算 Token 数,这比每次调用 API 估算要快得多,也更省钱。

安装:

1npm install @dqbd/tiktoken
2

代码示例:

1import { encoding_for_model } from "@dqbd/tiktoken"
2
3// 获取 GPT-5.1
4const enc = encoding_for_model("GPT-5.1")
5
6const text = "AI技术"
7
8// 将文本转换为 Token ID 数组
9const tokens = enc.encode(text)
10
11console.log(tokens)
12// 输出可能是: Uint32Array(2) [ 12345, 67890 ]
13// 解释:'AI' 是一个 Token,'技术' 作为一个常用词可能被编码为一个 Token,或者两个汉字各一个。
14
15console.log("Token Count:", tokens.length)
16
17// 记得释放内存
18enc.free()
19

通过这种方式,你可以在发送请求前,精确地知道这段文本会消耗多少 Token。

Token 的实际影响

理解 Token 主要为了解决两个现实问题。

计费(Cost)

API 计费公式通常是:(Input Tokens + Output Tokens)× 单价

值得注意的是,随着模型迭代(如 GPT-5.1),推理成本虽然在下降,但 Output(生成内容)的价格通常依然高于 Input(输入内容)。

  • Input:你发给模型的 Prompt。
  • Output:模型生成的回答。

如果你的业务场景是“读长文、写摘要”,成本相对可控;如果是“读短句、写长文”,成本会显著增加。

上下文窗口(Context Window)

这是 Token 最关键的物理限制。

虽然 GPT-5.1 的上下文窗口已经非常大(通常在 128k 甚至 200k tokens 以上),但它依然不是无限的。

  • 早期模型:GPT-3.5 只有 4k context(约 3000 汉字),稍微聊几句就得“遗忘”前面的对话。
  • 当前模型:128k context 意味着你可以一次性把几本长篇小说塞给模型。

但是,“能塞进去”不代表“效果好”。虽然 Token 容量变大了,但输入的内容越多,模型对中间信息的“注意力”(Attention)可能会被稀释。因此,开发者依然需要利用 RAG(检索增强生成)等技术,精简输入给模型的 Token,这不仅是为了省钱,更是为了提高回答的准确率。

四、 总结

  1. Token 是计费和计算的单位:它介于字符和单词之间。
  2. 中文效率已大幅提升:在 GPT-5.1 时代,中英文的 Token 效率差距已大大缩小,基本可以按 1 字 = 1 Token 估算。
  3. 开发者应当在本地计算:使用 @dqbd/tiktoken 等库在本地预计算 Token,是控制成本和上下文管理的最佳实践。

理解 Token,是开发 LLM 应用的第一步,也是从“用户”进阶为“开发者”的必修课。

(完)


LLM 扫盲:什么是 Tokens?》 是转载文章,点击查看原文


相关推荐


Vue3 如何实现图片懒加载?其实一个 Intersection Observer 就搞定了
刘大华2025/11/30

大家好,在当今图片密集的网络环境中,优化图片加载已成为前端开发的重要任务。今天我们分享一下怎么使用 Vue3 实现图片的懒加载功能。 什么是图片懒加载? 假如你打开一个有大量图片的页面,如果所有图片同时加载,会导致页面卡顿、流量浪费,特别是对于那些需要滚动才能看到的图片。 懒加载技术就是解决这个问题的方案,只有当图片进入或即将进入可视区域的时候,才加载它们。 效果预览: 完整示例代码可在文末获取 实现原理 我们的Vue3懒加载实现基于以下核心技术: 1. Intersection Observ


把常用 Prompt 做成 Skill 之后,我和 Claude Code 的配合效率直接翻了 3 倍
技术探索家2025/11/27

一个真实故事 去年10月,我手里有个React项目要重构,2000多行的上帝类,看着就头疼。每次让Claude Code帮我优化代码,我都要重复交代一遍: "记得用TypeScript严格模式" "API调用要加错误处理" "组件要符合单一职责原则" 复制粘贴这些要求,少说也得两三分钟。更烦的是,聊了十几轮之后,Claude Code经常会"忘记"我最初的要求,又开始写出不符合规范的代码。 直到我在文档里翻到了Skill功能。 试了一周后,我把那些重复的要求全封装成了几个skill文件。现在


基于华为开发者空间从0实现一个MCP Server
高校俱乐部2025/11/25

1 概述 1.1 案例介绍 MCP (Model Context Protocol) 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文。可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 为设备连接各种外设和配件提供标准化方式一样,MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方式。 MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器: {{{width="60%" height="auto"}}} - MCP 主机:


【Spring】Cookie和Session是什么
d***9352025/11/23

文章目录 回顾 Cookie理解 SessionCookie 和 Session 的区别 回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态:默认情况下,HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后,第二次访问的时候服务器就能知道该请求是否是已经登录过了 上述图片中的“令牌”通常就存储在 Cookie 字段中 比如去医院挂号: 看病之前先挂


Lua 的 dofile 函数
IMPYLH2025/11/21

Lua 的 dofile 函数 是用于加载并执行外部 Lua 脚本文件的核心函数之一。它的主要功能和工作原理如下: 基本功能 读取指定的 Lua 文件编译文件内容为字节码执行编译后的代码返回该文件中最后一个表达式的值 语法格式 dofile(filename) 其中 filename 是要加载的 Lua 文件路径(相对路径或绝对路径) 典型应用场景 模块化开发时加载子模块游戏开发中加载场景或关卡配置动态加载用户自定义脚本测试环境快速重载修改后的代码 与 require 的区别


Gemini 3 Pro 来了!一句话生成完整网站,AI编程能力断层领先
wwwzhouhui2025/11/19

前言 在AI大模型快速迭代的今天,各家厂商疯狂堆参数、拼算力,动不动就是参数翻倍,但日常用起来的感觉却大同小异。就在大家对"GPT-4.5级"、"性能提升30%"这些宣传话术感到麻木的时候,Google在2025年11月18日悄悄扔出了一个重磅炸弹——Gemini 3.0。 Gemini 3 Pro 是 Google DeepMind 推出的新一代旗舰模型,被官方定义为"世界上多模态理解能力最强的模型"。它不是简单的微调升级,而是从零开始在自家TPU芯片上训练的全新模型,采用稀疏混合专家架构(M


使用 Cursor & Claude 操作 Figma 画图
Keely402852025/11/18

版权声明:本文为博主原创文章,未经博主允许不得转载。 文章底部留言可联系作者。 一、背景 现在各种AI工具的普及让人眼花缭乱,大家都在拥抱AI,之前朋友推荐某音的一个小视频看到可以使用Cursor操作Figma自动画图感觉非常神奇,正好我 Claude和Cursor 都在使用,对有意思的工具做了一些尝试,现在总结下经验希望可以帮助大家。 二、Cursor 如何操作 Figma 1. 安装 Cursor Cursor 可以点击官网下载选择合适版本进行使用。新账号试用过后需要付费使用,具体使用方法


我在高职教STM32(新12)——STM32中断概览
南耿先生2025/11/17

新学期,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项目不变(图 1 所示),逐步将源码替换成 HAL 库。虽然不能一步到位,但会在备课期间逐步替换,自己就当再学习和巩固一遍。


openGauss实战:Python开发与AI向量数据库应用
倔强的石头_2025/11/16

引言 经过前两篇文章的铺垫,我们已经掌握了openGauss的部署安装和使用Data Studio进行可视化管理。现在,我们来到了本系列文章的终章,将目光聚焦于开发者最关心的环节——如何在应用程序中与openGauss进行交互,并探索其在AI领域的应用潜力。 本文将以目前最流行的编程语言之一Python为例,详细演示如何连接openGauss数据库,并围绕两个典型的业务场景——“用户管理系统”和“订单支付流程”,构建完整的CRUD(创建、读取、更新、删除)与事务处理代码示例。更进一步,我们将结合


🍵 Go Queryx 入门指南:让数据库操作像喝奶茶一样丝滑!
golang学习记2025/11/15

🎬 前言:为什么是 Queryx?—— 因为 bug 等不及你「运行时才发现」 想象一下这些经典场景: // 🚨 GORM 的“惊喜盲盒” db.Where("nmae = ?", "john").Find(&users) // 拼写错误?编译器:没问题 👌 // → 运行时:查不到数据?🤔 调试 2 小时:哦,`nmae` 少了个 `e` …… // 🧨 原生 SQL 的“类型彩票” rows, _ := db.Query("SELECT * FROM users WHERE

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读