生活分享

token 計算與費用估算:官方計數工具、一次對話的算式與費用上限

費用估算只有三個數字:輸入 token、輸出 token、每百萬 token 單價。這篇抄下 OpenAI、Anthropic、Google 官網當天寫的 token 與字元比例原文,給出 tiktoken、輸入 token 計數 API 與 countTokens 的官方範例,畫出一次對話裡系統提示詞與歷史怎麼累加,再用客服、翻譯一本書、每天摘要新聞三個情境把算式與假設寫出來,最後是三家設費用上限的位置。

更新日期: 閱讀時間約 11 分鐘

三張由小到大疊起來的圓角卡片,一條虛線箭頭指向右邊的半圓量表與一條實心的圓角橫條
圖片:Mokaair (© Mokaair)

估一筆 的 API 費用只需要三個數字:輸入 token、輸出 token,以及該模型每百萬 token 的單價。難的從來不是乘法,是知道一次對話到底把多少 token 送了出去。每一輪都重送、歷史對話每一輪都變長,帳單就是這樣長出來的。

這篇不重講 token 的原理,直接給可以照做的三件事:官方計數工具的原文範例與自測步驟、一次對話的 token 組成,以及客服機器人、翻譯一本書、每天摘要新聞三個情境從假設到結果的完整算式。文中所有單價都是 2026 年 9 月 15 日各家官網當天的價格,照官網幣別(美元)不換算;本環境不能登入也不能實測,算式全部由假設推出,你要換成自己量到的數字。

先講比例:官方只保證英文

token 是模型處理文字的計量單位,一段話進模型之前會先被切成一串 token,這件事的細節在 與 兩篇,這裡只要記住一句:計價算的是 token,不是字數。

官方寫得出來的比例只有英文。OpenAI 說明中心的「Understanding and counting tokens」列了三個粗估值:一個 token 大約是 4 個字元、大約是四分之三個英文單字,100 個 token 大約是 75 個英文單字,緊接著就寫明這些是估計不是精確計數,其他語言的字元、單字與 token 之間的關係可能不同。Anthropic 的術語表寫 Claude 的一個 token 大約代表 3.5 個英文字元,同樣附註確切數字會隨語言而變。Google 的 Gemini 文件寫一個 token 大約等於 4 個字元、100 個 token 大約等於 60 到 80 個英文單字。

中文沒有官方比例。三家官網當天都沒有給中文的字元對 token 比例,所以這篇不自創數字,也不建議抄網路上流傳的比例;正確作法是拿你真正會送出去的那段文字丟進官方計數工具量一次。程式碼同理,縮排、括號、變數名稱都會影響切分結果,唯一可靠的是實際數過。

還有一個常被忽略的變數:同一段文字換個模型,token 數會變。Anthropic 的 token 計數文件寫明,Claude 4.7 以後的模型與 Claude Mythos Preview 換了新的分詞器,同一段輸入產生的 token 數比舊模型多約 30%,確切幅度看內容而定,並建議直接對著你打算用的模型重數,不要沿用舊模型量到的數字。

三個官方計數工具,照文件原文抄

先分清楚兩件事:本機分詞器只能數純文字,計數 API 才數得到整包請求。OpenAI 的計數文件把這點寫得很直白,tiktoken 這類本機工具只適用純文字,圖片與檔案不支援,工具與結構描述(schema)加上去的 token 也很難在本機算,而且模型本身的行為會改變分詞結果。

tiktoken 官方倉庫 README 的範例,只適用純文字 · python
import tiktoken
enc = tiktoken.get_encoding("o200k_base")
assert enc.decode(enc.encode("hello world")) == "hello world"

# To get the tokeniser corresponding to a specific model in the OpenAI API:
enc = tiktoken.encoding_for_model("gpt-4o")

要數整包請求,OpenAI 給的是輸入 token 計數端點,路徑是 POST /v1/responses/input_tokens。它吃的格式跟 Responses API 一樣,文字、訊息、圖片、檔案、工具、對話都可以直接丟進去,回傳的 input_tokens 就是模型實際會收到的數量,而且包含訊息角色與邊界這類表示請求結構用的格式 token,那些是在本機怎麼數都數不到的。

OpenAI 輸入 token 計數 API 的官方 Python 範例 · python
from openai import OpenAI

client = OpenAI()

response = client.responses.input_tokens.count(
    model="gpt-6-astra", input="Tell me a joke."
)
print(response.input_tokens)

Anthropic 這邊叫 token 計數(Token counting),端點是 POST /v1/messages/count_tokens,同樣吃跟建立訊息一樣的結構,系統提示詞、工具、圖片與 PDF 都算得進去,文件上的基本範例回的是 input_tokens 等於 14。兩個官方註記要記住:這個數字是估計值,實際建立訊息時用掉的輸入 token 可能有小幅差異;另外計數結果可能包含 Anthropic 為了系統最佳化自動加上的 token,官方寫明那些不向你收費,帳單只反映你自己的內容。

Anthropic token 計數 API 的官方 cURL 範例 · bash
curl https://api.anthropic.com/v1/messages/count_tokens \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-5",
    "system": "You are a scientist",
    "messages": [{
      "role": "user",
      "content": "Hello, Claude"
    }]
  }'

Google 的 Gemini 是 count_tokens,REST 端點寫成模型名稱後面接冒號加 countTokens。官方說明它只回傳輸入的 token 總數,建議在送出前先呼叫一次確認請求大小。想看輸出與其他項目要改讀回應上的 usage,官方列的欄位有 total_input_tokens、total_output_tokens、total_thought_tokens、total_cached_tokens、total_tool_use_tokens 與 total_tokens。

Google Gemini count_tokens 的官方 REST 範例 · bash
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:countTokens" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contents": [{"parts": [{"text": "The quick brown fox."}]}]}'

沒有金鑰也可以先量:OpenAI 的說明中心與文件都指向官網的 Tokenizer 工具,貼上文字就會顯示切分結果。自測固定三步。第一步,把真正會送出去的那段文字原封不動貼進去,標點、換行與空白都不要改,官方明講同一個詞加上前導空格或改變大小寫,編碼方式就可能不同。第二步,同一段文字在你打算用的模型上再量一次。第三步,把數字填進試算表,之後只要改用量,費用就會自己跟著算。

一次對話送出去的是四段東西

API 的每一次請求都是獨立的。OpenAI 的對話狀態文件寫明每一次文字生成請求都是獨立且無狀態的,要做多輪對話就得把先前的訊息一起當送進去。Anthropic 的上下文視窗文件把範圍列得更清楚:系統提示詞、messages 裡的每一則訊息(含工具結果、圖片與文件)以及你的工具定義,全部都算進這一次請求;每一輪的輸入包含所有先前的對話歷史加上這一輪的新訊息,而這一輪的輸出會變成下一輪輸入的一部分。容量本身怎麼看,可以對照 。

用一個具體的例子看會很清楚。假設系統提示詞 2,000 個 token,使用者每次提問 100 個 token,模型每次回答 300 個 token,一通對話問三輪。第 1 輪的輸入是 2,000 加 100,等於 2,100;第 2 輪多了第 1 輪的 100 與 300,歷史 400,輸入變成 2,500;第 3 輪歷史累積到 800,輸入變成 2,900。三輪加起來輸入 7,500 個 token、輸出 900 個 token。使用者實際打出來的字只有 300 個 token,帳單上的輸入卻是它的二十五倍。

三輪對話的 token 堆疊圖,每輪都重送系統提示詞並疊上愈來愈長的歷史,右側標出輸入與輸出的合計
由左到右是同一通對話的三輪。每一根柱子由下往上是系統提示詞、歷史、本輪提問,右邊灰框是該輪的輸出。 · 圖片:Mokaair (© Mokaair)
閱讀完整文字說明

三張卡片代表同一通對話的第 1 到第 3 輪。每張卡片由上而下是系統提示詞 2,000 個 token、歷史、本輪提問 100 個 token,再往下是該輪的輸入合計與輸出 300 個 token。第 1 輪尚無歷史,輸入合計 2,100;第 2 輪歷史 400,輸入合計 2,500;第 3 輪歷史 800,輸入合計 2,900。右側面板寫三輪合計輸入 7,500 個 token、輸出 900 個 token,使用者實際打出來的只有 300 個 token,輸入是它的二十五倍。圖例說明系統提示詞每一輪都重送,歷史是前面每一輪的提問與回答,本輪提問是使用者真正打的字,輸出是這一輪的回答,下一輪會變成歷史。

費用算式,單價一律是每百萬 token 的官網價 · text
單次請求費用 = 輸入 token ÷ 1,000,000 × 輸入單價
             + 輸出 token ÷ 1,000,000 × 輸出單價

一通多輪對話的輸入總量(系統提示詞每輪重送、歷史累加):
第 n 輪輸入 = 系統提示詞 + 前 n-1 輪的提問與回答 + 本輪提問

有快取時,輸入端拆成三段分別計價:
輸入端費用 = 快取寫入 token ÷ 1,000,000 × 寫入單價
           + 快取命中 token ÷ 1,000,000 × 命中單價
           + 其餘輸入 token ÷ 1,000,000 × 輸入單價

重複的那一段前綴可以不用重算,這就是提示快取存在的理由。OpenAI 的提示快取文件寫快取的輸入 token 最多可折 90%,預設就對支援的模型開啟,GPT-5.6 以後的模型可快取前綴最短是 1,024 個 token。Anthropic 的定價頁寫快取讀取是基礎輸入價的 0.1 倍,並直接給出回本條件:5 分鐘快取的寫入是 1.25 倍,讀一次就回本;1 小時快取的寫入是 2 倍,要讀兩次。Google 的定價頁把 Context caching 列在付費層,除了較低的輸入價還另外收每百萬 token 每小時的儲存費。三家的機制差異與實際省法,站上有 與 兩篇。

三個情境,把假設寫出來自己算一遍

以下三個情境的 token 數全部是假設,不是實測;單價是 2026 年 9 月 15 日各家官網當天的價格。要套到自己身上,先把假設換成你用計數工具量到的數字,再把單價換成你實際會用的那個型號。

  • 客服機器人:系統提示詞 2,000 個 token 每輪重送,使用者每次提問 100 個 token、模型每次回答 300 個 token,一通三輪,每天 500 通。單價用 Claude Sonnet 5 官網的每百萬 token 輸入 2 美元、輸出 10 美元,快取命中 0.20 美元、5 分鐘快取寫入 2.50 美元。
  • 翻譯一本書:一本 10 萬個英文單字的書,照 OpenAI 寫的 100 個 token 約 75 個英文單字換算,內文約 13.4 萬個 token;切成 100 批送,每批加一段 500 個 token 的翻譯指示,輸入合計約 18.4 萬個 token。輸出假設與內文的 token 數相同,這個 1 比 1 是假設不是官方數字,中文那一端要自己量。單價用 gemini-3.8-flash 官網 2026 年 12 月 31 日前的輸入 0.75 美元、輸出 3.75 美元。
  • 每天摘要新聞:每天 30 篇,每篇內文 1,200 個 token,各配一段 300 個 token 的摘要指示、產出 200 個 token;最後再做一份總表,輸入 6,300 個 token、輸出 500 個 token。單價用 gpt-5.6-terra 官網短上下文的輸入 2 美元、輸出 12 美元。
單價為 2026 年 9 月 15 日各家官網當天價,照官網幣別未換算;token 數為本文假設,非實測。
情境每天輸入(百萬 token)每天輸出(百萬 token)算式與結果(美元)
客服機器人,不用快取3.750.453.75 × 2 + 0.45 × 10 = 12.00
客服機器人,系統提示詞走快取3.75(寫入 1.0、命中 2.0)0.451.0 × 2.5 + 2.0 × 0.2 + 0.75 × 2 + 0.45 × 10 = 8.90
翻譯一本 10 萬字英文書,一次性0.1840.1340.184 × 0.75 + 0.134 × 3.75 = 0.64
同上改走批次 API 的五折價0.1840.1340.64 ÷ 2 = 0.32
每天摘要 30 篇新聞0.05130.00650.0513 × 2 + 0.0065 × 12 = 0.18

三個情境放在一起會看到一件事:一次性的大批文字其實不貴,貴的是每天重複跑的對話。翻譯一本 10 萬字的書花不到 1 美元,走批次 API 再打對折;但同一段系統提示詞每天被重送 1,500 次的客服,一個月就是 360 美元,把它放進快取之後降到 267 美元,省下的 93 美元全部來自那段重複的前綴。各家當天的每百萬 token 價可以對照 。

費用上限與警示,三家設在哪裡

警示與硬上限是兩件事,先分清楚再設。OpenAI 的支出上限文件把兩者列成一張表:支出警示(Spend alert)只發通知、API 流量照跑;硬性支出上限(Hard spend limit)會讓受影響的請求回 429 錯誤。設定位置在組織的 Limits 頁或專案的 Limits 頁,在 Spend 區塊選 Edit spend limit、填 Monthly spend limit,再打開 Enforce a hard limit 才會真的擋下來。官方也提醒執行不是即時的,記錄到的支出可能略微超過你設的金額。

Anthropic 分成方案上限與自訂上限。官方的速率限制文件列出各用量層級的每月支出上限:Start 是 500 美元、Build 是 1,000 美元、Scale 是 200,000 美元,Custom 層級沒有每月上限。碰到上限時 API 會暫停到下個月第一天世界協調時間 00:00,回的是 HTTP 429、錯誤碼 enforced_spend_limit_reached,而且沒有 retry-after 標頭,重試不會通。要自己設更低的值,走 Claude Console 的 Settings 裡的 Billing 頁,在 Spend limits 區塊點 Adjust limit,值不能超過所屬層級的上限。

Google 這邊是 Cloud Billing 的預算與快訊。官方文件寫明第一次建立預算時的預設快訊門檻是預算金額的 50%、90% 與 100%,以實際支出計算,百分比與規則都可以自己改。同一頁也放了最重要的那句警告:只有快訊的預算不會自動為 Google Cloud 或 Google Maps Platform 的用量或支出設上限,快訊只是讓你知道趨勢,不會阻止服務被使用或計費。官方的建議是把預算金額設得比可用資金低,並在有支援的服務上考慮改用支出上限預算,該功能頁面標示為預覽。Gemini 這一側的錯誤碼與重試,站上有 可以看。

看用量的地方要先開好權限。OpenAI 的用量儀表板要組織擁有者或有該權限的人才打得開,資料以世界協調時間顯示,Playground 用掉的 token 一樣算進帳。Anthropic 則在 Claude Console 的 Usage 頁看用量與快取命中率。

估完費用不代表估完成本。訂閱與 API 之間怎麼選可以看 ;同一批 token 在機房那一端的代價則寫在 。

  • 生活分享

    AI 寫程式的費用怎麼算:token、訂閱與 API 額度

    AI 寫程式的帳單有兩套算法:訂閱制付月費換一段時間區間的額度,API 按每百萬 token 計價。這篇用 2026 年 9 月官網當天查到的數字(模型與 API 價格在 10 月 5 日重新查證),說明 token 是什麼計價單位、為什麼代理每一輪都重送整段上下文所以比聊天燒得快、提示詞快取怎麼把重複輸入降到十分之一,並列出 Claude、ChatGPT、Copilot、Cursor、Gemini CLI 的入門方案與代表模型的 API 價格,附一條估算算式、一個算到底的範例與六個省錢做法。

  • 生活分享

    單價之外:快取、長上下文門檻與 tokenizer 怎麼改變帳單

    每百萬 token 的單價只是起點。這篇把三個官網有寫、但不在主價目表上的欄位攤開:快取命中價(多數家原價 10%,DeepSeek 低到 2%、xAI 要 25%)、長上下文加價門檻(xAI 明寫跨過去整筆請求都用高價計,Anthropic 則完全沒有這道門檻),以及各家 tokenizer 切出來的 token 數不一樣。附一套重估帳單的順序。

  • 生活分享

    各家 AI 模型總表:同級距的 token 規格與官方自報分數

    把 OpenAI、Anthropic、Google、xAI、阿里巴巴、Mistral、MiniMax、DeepSeek、Moonshot、Z.AI 各家官網當天的模型攤成四張表:旗艦、中階、輕量各一張,每一列同時給上下文視窗、最大輸出與每百萬 token 輸入輸出價,另加一張十二個開放權重模型的參數與授權表。效能欄只抄官網自己公布的分數,並說明為什麼六家官網用的 benchmark 幾乎沒有交集。

  • 生活分享

    OpenRouter:一把金鑰用遍各家模型

    OpenRouter 用一個 OpenAI 相容端點接上各家模型,官網 FAQ 寫儲值收 5.5% 手續費、token 價格不加價。這篇照 openrouter.ai 當天的文件走完註冊與金鑰、儲值與退款規則、模型頁每百萬 token 價格怎麼讀、免費模型每天能跑幾次、provider 欄位怎麼指定路由與資料留存,附 Python 與 curl 最小範例,以及誰適合、誰不適合。

最新旅遊情報攻略

資料來源

生活分享