回到頂部
一段中文經過 tokenizer 切成多個 token,再放入上下文窗口

Token 是什麼?中文切分、上下文與 API 計費教學

Token 不是字數。本文用互動工具解釋 tokenizer、中文切分、上下文窗口、輸入與輸出計費,以及如何從 API usage 查看實際用量。

內容查核: 連結查核: 來源查核:

本文含聯盟連結

如果你貼了一份長文件,AI 說內容太長;或 API 帳單比預期高,卻不知道多出的量從哪裡來,這兩種情況都要先理解 Token。

Token 是模型處理輸入與產生輸出時使用的編碼單位。它不是固定的一個中文字,也不是永遠等於一個英文單字;同一段文字換模型、換 tokenizer,數量就可能改變。

這篇適合剛開始使用 AI 長文件或串接 API 的讀者:你會知道怎麼估算、去哪裡看實際用量,以及超出上下文時先刪什麼。

一般 ChatGPT、Claude 或 Gemini 訂閱使用者不必逐筆算 Token。開發 API、上傳長文件、維持長對話,或設計大量自動化任務時,Token 才會直接影響可放入的內容、速度、速率限制與帳單。

Token 和字數有什麼不同?

模型收到文字後,tokenizer 會把它轉成一串 Token ID。常見字串可能整段成為一個 Token,罕見字、標點、空格、程式碼或多位元組字元也可能被拆成數個 Token。模型接著把這些 ID 轉成向量並進行運算。

因此,不能用「一個中文字等於一個 Token」當規則。以下因素都會改變切分:

  • 使用的模型與 tokenizer 版本。
  • 前後空格、換行、標點與大小寫。
  • 語言、罕見字、表情符號、網址與程式碼。
  • 訊息包裝、系統指令、工具定義與供應商自動加入的內容。

OpenAI 的 tiktoken 說明也指出,不同模型使用不同 encoding。它適合在送出請求前估算 OpenAI 編碼,但該頁已標示為封存內容;新模型是否仍對應同一編碼,要以當前模型文件與實際 API usage 為準。

用互動工具看文字怎麼被切開

在下方輸入相同意思的中文、英文或日文,切換 o200k_basecl100k_base,就能看到空格、標點與語言如何影響切分。

🧮 Token 視覺化工具

貼文字進去,看每個字被切成幾個 token。 這裡示範兩種 OpenAI encoding;新模型是否沿用相同編碼, 請以模型文件與 API usage 為準。

🇺🇸 English 0 tokens
0 字元 CPT 0 基準(1.0x)
🇹🇼 中文 0 tokens
0 字元 CPT 0
🇯🇵 日文 0 tokens
0 字元 CPT 0
對比載入中⋯
其他模型要怎麼取得精確數字?

不要用固定係數把這裡的結果換算成 Claude、Gemini、DeepSeek 或 Qwen。 Tokenizer 會更新,中文、程式碼、工具與多模態內容的差異也不固定。

送出前使用供應商提供的 Token Count API;請求完成後,從 response 的 usage 欄位讀取實際輸入、輸出、快取、推理與工具用量。

這個工具使用 js-tiktoken 執行兩種 OpenAI encoding,不會呼叫你的模型帳號。它不能精確代表 Claude、Gemini、DeepSeek、Qwen,也不保證所有新 OpenAI 模型都沿用相同編碼。做正式容量或成本估算時,請用目標模型的 Token Count API;請求送出後,以回應中的 usage 為準。

Token 切分與上下文窗口:一句話先被 tokenizer 切成 token,輸入和輸出都會占用上下文窗口與成本
輸入、對話歷史、工具內容與模型輸出都可能占用 Token 預算;各 API 的計算方式仍要看模型文件。

上下文窗口怎麼算?

上下文窗口是一次模型請求能處理的總容量。實際計入內容依 API 而異,通常可能包含系統指令、使用者訊息、先前對話、文件文字、圖片或音訊換算量、工具定義、工具結果,以及模型準備產生的輸出。

上下文窗口和輸出上限不是同一件事。 某模型即使能讀很長的輸入,單次仍可能只能輸出較短內容;反過來,如果歷史對話已占滿窗口,留給新問題與答案的空間也會變少。Google 的 Token 說明把 context window 定義為輸入與輸出的合計上限,並建議從模型資訊取得目前限制。

產品版聊天工具還可能替你摘要歷史、截斷早期內容,或把檔案交給檢索工具後只取部分片段。這些行為不一定會在介面上逐項顯示,所以「對話還看得到」不代表每個字都放進這一次模型請求。

遇到長對話開始忽略早期規則時,先開新對話,把仍有效的背景、決策和限制整理成短版交接。若是文件問答,不要每次塞入整個資料庫;可用檢索先找相關片段,再把片段與來源送進模型。更完整的做法可看 上下文窗口教學Context Management

API Token 怎麼計費?

多數文字模型會把輸入與輸出分開定價,輸出通常有不同單價;快取讀取、快取建立、推理 Token、長上下文、批次處理與工具呼叫,也可能各有規則。不要把某一家的欄位與折扣直接套到另一家。

最基本的估算式是:

總成本 =
  輸入 Token ÷ 1,000,000 × 輸入單價
+ 快取 Token ÷ 1,000,000 × 快取單價
+ 輸出 Token ÷ 1,000,000 × 輸出單價
+ 供應商另列的推理、搜尋、程式執行或其他工具費

假設某模型的輸入單價是每百萬 Token 2 美元、輸出是 8 美元,一次請求實際用了 50,000 個輸入 Token 與 2,000 個輸出 Token,示例成本是 0.05 × 2 + 0.002 × 8 = 0.116 美元。這只是示範算法,不是任何現行模型報價。

查價格時要記錄四項:模型完整 ID、價格頁查詢日期、是否超過長上下文門檻、usage 中各欄位如何對應價格。OpenAI、Anthropic 與 Google 都會更新模型與費率;正式報價請回 OpenAI API PricingAnthropic Pricing或目標供應商頁面確認。本站的 API 成本試算器適合做情境比較,付款前仍以供應商帳單為準。

ChatGPT 月費不等於 API 額度。 消費者訂閱通常用產品功能、訊息或動態額度管理;API 則在開發者平台另行計費。已訂閱 ChatGPT,不代表呼叫 API 不收費。

怎麼查看實際 Token 用量?

正式帳單應以 API 回應與供應商用量後台為準。欄位名稱不同,但常見類別包括輸入、輸出、快取讀取、快取建立、推理或思考,以及總量。

OpenAI 回應通常會在 usage 提供輸入與輸出相關計數;Anthropic 提供 Token Counting端點,可在送出 Message 前估算包含系統提示、工具、圖片與 PDF 的輸入;Google 也提供 count_tokens,請求完成後則從 usage 讀取實際輸入、輸出、思考、快取或工具用量。

送出前的 Token Count 仍可能是估算。Anthropic 文件明確提醒,實際 Message 使用量可能有小幅差異;供應商也可能加入不向你計費的系統內容。因此,容量預檢用 count endpoint,成本對帳用實際 response 與帳單。

一般聊天介面若沒有顯示 Token 數,不必裝來路不明的擴充套件讀取對話。需要精確成本與容量時,改用 API 測試資料,或只把本頁工具當切分示範。

為什麼 Token 用量突然變大?

對話歷史反覆送出。 多輪 API 若每次都附上完整歷史,輸入量會隨對話增長。保留必要決策與最近幾輪,把舊內容摘要或放入可檢索儲存。

工具定義與文件被重複加入。 Agent 的函式 schema、長系統指令、檢索片段與工具結果都可能計入輸入。先看 usage,而不是只算使用者輸入框裡的字。

輸出沒有邊界。 要求完整報告、逐步展開或大量範例會增加輸出。指定讀者、必要欄位與長度上限,比只寫「簡短一點」容易驗收。

推理模式產生不可見用量。 部分模型會產生不完整顯示給使用者的 reasoning/thinking Token,但仍可能反映在計費或上下文規則中。OpenAI 的推理模型指南和 Anthropic 的 extended thinking 文件都要求另外理解其 usage;不能用畫面上答案字數回推全部成本。

快取沒有命中。 Prompt caching 通常要求相同前綴與足夠長度,模型、區域或保留時間也可能影響結果。OpenAI 的 Prompt Caching建議把固定內容放前面、變動內容放後面;是否命中要看 usage 的 cached tokens,而不是看到相同 Prompt 就假設有折扣。

降低 Token 成本的正確順序

先刪除與當前任務無關的歷史、重複文件和工具,再限制輸出欄位與長度。接著用 20–50 筆真實任務比較品質,確認縮短內容沒有讓錯誤率上升。

大量固定前綴可評估 Prompt caching,非即時任務可查看供應商是否提供 Batch;長知識庫則用 RAG或其他檢索方式,只送與問題相關且附有來源的片段。模型分流也要有測試集,不能只因較便宜就把所有請求改到小模型。

省 Token 不是把 Prompt 刪到只剩關鍵字。缺少背景、限制和驗收規則,可能造成更多重試,總用量反而增加。優先刪重複與無關資訊,保留會影響答案正確性的脈絡。

FAQ

一個中文字等於幾個 Token?

沒有固定答案。同一個中文字可能是一個 Token,也可能與前後字合併,或被拆成多個位元組片段;模型與 tokenizer 版本也會改變結果。精確值要用目標模型的 Token Count API 或實際 usage。

Token 越少,回答一定越快、越便宜嗎?

在模型與服務層級相同時,較少輸入與輸出通常有助於降低部分成本和延遲,但快取、批次、推理強度、工具呼叫、網路與排隊時間都會影響結果。Token 少也不代表答案較好;刪掉必要背景可能增加重試。

上下文窗口越大越好嗎?

較大窗口能容納更多資料,但也可能增加成本、延遲與查找干擾。先用檢索或分段處理找出真正相關內容,再決定是否需要長上下文;重要結論仍要回原文核對。

Token 和 Embedding 有什麼不同?

Token 是 tokenizer 產生的離散 ID;Embedding 是文字、圖片或其他內容轉成的向量表示,常用於相似度搜尋。RAG 可用 Embedding 找片段,但把片段交給語言模型時仍會形成輸入 Token。可接著看 Embedding 教學

為什麼 Tokenizer 工具和 API usage 不一樣?

常見原因是工具選錯模型 encoding、沒有算訊息包裝與工具 schema、供應商更新 tokenizer,或多模態內容另有換算方式。預估工具適合做容量檢查,已完成請求應以 API response 和帳單為準。

參考資料

№ · further reading

延伸閱讀