什麼是 Token ?

1
什麼是 Token ?:Token 在程式設計中有多重含義,是最常見卻最容易混淆的術語之一。主要指詞法分析的最小語法單位、認證授權憑證與AI 模型的文字處理單位,根據上下文有完全不同的技術意義與應用場景。

什麼是 Token ?

Token 在程式設計中有多重含義,是最常見卻最容易混淆的術語之一。主要指詞法分析的最小語法單位認證授權憑證AI 模型的文字處理單位,根據上下文有完全不同的技術意義與應用場景。

 

Token 的三種主要定義

1. 詞法分析 Token(編譯器理論)

Token 是程式語言詞法分析器(Lexer)將原始碼分解後的最小語法單位,供語法分析器(Parser)進一步處理:

原始碼:int main() { return 0; }
Token 序列:
[關鍵字:int] [識別符:main] [符號:(] [符號:)] [符號:{] [關鍵字:return] [整數:0] [符號:;] [符號:}]

Token 類型:
- 關鍵字(keyword):int、if、while、return
- 識別符(identifier):變數名、函式名 main、userName
- 運算子(operator):+、-、=、==
- 分隔符(delimiter):(){}[];,.
- 字面量(literal):"hello"、123、true
 

範例(Python)

def calculate(a, b):
    return a + b
 

Token 分解

關鍵字: def, return
識別符: calculate, a, b
符號: (, ), :, +
 

2. 認證 Token(Web 安全)

Token 是伺服器發放的身分憑證,替代 Session Cookie,用於無狀態認證:

流程:
1. 使用者登入 → 伺服器驗證 → 返回 JWT Token
2. 後續請求 → Authorization: Bearer
3. 伺服器驗證 Token → 授權存取
 

JWT Token 結構

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.  ← Header
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.  ← Payload
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c  ← Signature
 

HTTP 使用

GET /api/profile
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
 

程式實作

// 登入取得 Token
const response = await fetch('/api/login', {
    method: 'POST',
    body: JSON.stringify({ username, password })
});
const { token } = await response.json();

// 儲存並使用
localStorage.setItem('token', token);

fetch('/api/profile', {
    headers: {
        'Authorization': `Bearer ${token}`
    }
});
 

3. AI Token(大型語言模型)

Token 是語言模型處理文字的最小單位,由 Tokenizer 將文字分解:

英文:1 token ≈ 0.75 單字 ≈ 4 字元
中文:1 token ≈ 1 字元(含標點)
混合:依 Tokenizer 規則(如 BPE、WordPiece)

範例:
"Hello World" → [31373, 995] (2 tokens)
"你好世界" → [2664, 6230] (2 tokens)
 

計費影響

GPT-4o:
輸入:$5/百萬 tokens
輸出:$15/百萬 tokens

"Hello World".length = 11 字元
但占用 2 tokens → 計費依 tokens
 

Token 在不同場景的應用比較

場景 Token 定義 範例 用途
編譯器 語法單位 intmain+ 程式碼解析
Web API 認證憑證 eyJhbGciOiJIUzI1NiIs... 身分驗證
AI 模型 文字單位 [31373, 995] 計費、上下文限制
區塊鏈 數位資產 ERC-20 Token 價值轉移

 

實際程式範例

1. 詞法分析器 Token

# 簡易 Python Tokenizer
def tokenize(code):
    tokens = []
    i = 0
    while i < len(code):
        if code[i].isspace():
            i += 1
            continue
        if code[i].isalpha():
            word = ''
            while i < len(code) and code[i].isalnum():
                word += code[i]
                i += 1
            tokens.append(('KEYWORD' if word in ['int', 'if', 'return'] else 'ID', word))
        elif code[i].isdigit():
            num = ''
            while i < len(code) and code[i].isdigit():
                num += code[i]
                i += 1
            tokens.append(('NUMBER', num))
        else:
            tokens.append(('SYMBOL', code[i]))
            i += 1
    return tokens

print(tokenize("int main() { return 0; }"))
# [('KEYWORD', 'int'), ('ID', 'main'), ('SYMBOL', '('), ...]

 

2. JWT Token 驗證

import jwt
from datetime import datetime, timedelta

# 生成 Token
payload = {
    'user_id': 123,
    'username': 'alice',
    'exp': datetime.utcnow() + timedelta(hours=24)
}
token = jwt.encode(payload, 'secret_key', algorithm='HS256')

# 驗證 Token
decoded = jwt.decode(token, 'secret_key', algorithms=['HS256'])
print(decoded)  # {'user_id': 123, 'username': 'alice', ...}

 

3. AI Token 計算

import tiktoken

enc = tiktoken.get_encoding("cl100k_base")  # GPT-4 使用的 tokenizer
text = "Hello World! 你好世界"

tokens = enc.encode(text)
print(f"原始文字:{len(text)} 字元")
print(f"Token 數量:{len(tokens)}")
print(f"Token ID:{tokens}")

# 還原
print(f"還原文字:{enc.decode(tokens)}")

 

Token 安全最佳實務

認證 Token

  • HTTP-only Cookie(防 XSS)
  • 短暫有效期(15分鐘 Refresh Token)
  • 後端驗證,不信任客戶端
  • CSRF 防護(雙 Token)

❌ localStorage(XSS 風險)
 

AI Token 優化

  • Prompt 精簡(刪除冗餘說明)
  • 使用摘要而非完整歷史
  • 結構化輸入(JSON Schema)
  • Tokenizer 預測工具
     

Token 常見陷阱

  • Token 洩漏到 URL(瀏覽紀錄)
  • 無效期檢查(永久 Token)
  • 前端自行驗證(繞過檢查)
  • Token 重用(Session Fixed Attack)
     

Token 是程式設計的「原子單位」概念,不同領域有不同實作,但核心都是最小不可分割的處理單位。理解詞法 Token 助你掌握編譯原理,認證 Token 打造安全 API,AI Token 優化成本與效能。三種 Token 思維相通,掌握本質就能跨領域應用!