iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
生成式 AI

我與 AI Pair Programming系列 第 3

和 AI pair 之前應該要知道的專有名詞:Context Window & Token

  • 分享至 

  • xImage
  •  
  • Context Window
  • 超過上限會發生什麼事情?
  • 計算 Context Window 的單位
  • 為什麼 Token 要這樣計算?

昨天透過海龜湯的例子,我們了解到了 Context 是什麼,以及 context 對我們和 AI pair 會產生的影響。
接下來,讓我們繼續看看和 Context 相關的 Context Window 吧。

Context Window

想像一下你現在正在和一個新來的工程師 pair,你正在跟他介紹接下來要一起進行的專案:
「我們這個系統用的是 Vue 3 的框架,搭配 Composition API 的寫法,加上 Apollo GraphQL 和後端溝通,使用 firebase 做身份驗證 ……」

你一口氣講了 20 分鐘,涵蓋了整個專案從過去到現在曾經踩過的雷。當你停下來喘口氣,喝口水順便問他有沒有什麼問題的時候,他跟你說:「所以你提到的那個 … 呃 … 什麼阿菠蘿麵包來著?那是什麼東西?」

你說的東西太多啦!

這種講了後面忘了前面,記憶力不足的情況,就是 Context Window 的概念。Context Window 就像人的短期記憶容量,有固定的「長度限制」,就像每個人能馬上記住的事情多寡都不同,每個 AI 夥伴,甚至同一個 AI 但不同等級的帳號都會有不同的上限。

超過上限會發生什麼事情?

就像上面的例子一樣,當你在同一個對話中遇到了 Context Window 超過上限時,AI 可能就記不住一開始講的內容。但具體是怎麼樣記不住,也和每個不同的 AI 工具設計有關,像是我最常使用的 Claude Code,他會在超過上限前,自動幫你整理一個簡短的版本,之後的對話都會根據這個簡短版本的 Context 繼續進行。

雖然自動整理的功能聽起來很棒,但因為他畢竟是生成式 AI,有可能在整理的過程中加入了他的幻覺,增加你們後續對話的成本,所以最好的方式其實是要定期切換 Context,不要在同一個對話裡問太多種類和方向的問題。

那要怎麼計算 Context Window 的單位?

了解了 Context Window 的概念後,你會不會好奇:「那到底多少內容才會超過 Context Window 的上限呢?是用字數計算嗎?還是對話輪數?」
答案是:用 Token 來計算。

Token 是什麼?

如果說 Context Window 是記憶容量的「大小」,那麼 Token 就是用來「測量」這個容量的單位。但這裡的測量,並不代表 Token 等於字數

舉例來說,這段 C# 程式碼可能會被切分成約 12-15 個 tokens,包括關鍵字、變數名稱、括號、分號等等:

public async Task<List<User>> GetUsersAsync()
{
    return await _context.Users.ToListAsync();
}

為什麼 Token 要這樣計算?

Token 的切分方式源自於 AI 模型的訓練原理,他會根據語言的統計規律來決定如何切分文字。
可以把 Token 當作是「樂高積木」,當我們要組裝一個樂高城堡時,不會把每顆小圓點都當作一個零件,而是會有「門」、「窗戶」、「牆壁」這樣的組合單位;AI 處理文字也是一樣的道理。

以 C# 來說,async 很常被使用到的關鍵字,所以通常會被當作一個完整的 token;而較長的變數名稱如 GetUsersAsync 可能被切成 GetUsersAsync 三個部分。以中文來說,「資料庫」通常是一個完整概念,所以會被視為 1 個 token;而「我喜歡寫程式」可能被切成「我」+「喜歡」+「寫」+「程式」,總共 4 個 tokens。


在今天的文章中,我們了解到 Context Window 就像 AI 的短期記憶容量,有固定上限。而 Token 作為測量單位,就像樂高積木一樣根據語言統計規律切分。那為什麼我們要這麼在意 Token 呢?

歡迎留言告訴我你的想法喔,明天讓我們來一起看看關於 Token 的一些小技巧吧!
以上就是今天的分享,我們明天見 👋


上一篇
和 AI pair 之前應該要知道的專有名詞:Context
下一篇
和 AI pair 之前應該要知道的小技巧:Token
系列文
我與 AI Pair Programming9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言