我傳一句話給 AI,到底發生了什麼?
你在 ChatGPT、Claude 或 Gemini 輸入一句話,為什麼它能回覆一整段文字?這章用一段簡單的對話,追蹤文字從輸入到回答的過程。
假設你要告訴同事明天的會議時間,於是在 AI 聊天服務中送出:
幫我寫一則給同事的會議通知:明天下午三點開會。
AI 可能回覆:
各位同事,明天下午三點開會。
這是貫穿本章的示意對話。我們要追問的是:輸入如何變成可計算的數值?回答中的「各位同事」如何逐步產生?會議時間又是從哪裡來的?
這裡說的「AI 聊天服務」,就是讓你透過文字與 AI 對話的網站或 App;你看到的是對話介面,背後負責生成回答的則是語言模型 (Language Model)。
AI 的範圍很廣。這章先看常見聊天語言模型的文字生成流程,建立全貌,再逐章拆開裡面的機制。
送出之後,文字先變成模型 (Model) 能計算的輸入
聊天服務會整理你的訊息,也可能加入先前對話與服務本身的指示,再交給模型。
程式會先用文字切分器 (Tokenizer),把文字切成稱為 token 的小單位。每個 token 都對應到詞彙表 (Vocabulary) 裡的一個整數識別碼,叫做 token 編號 (Token ID)。這裡的詞彙表是一份「token 與編號的對照表」,不只收完整單字,也可能包含詞的一部分、標點或其他片段。
先暫用較短的「我愛貓」示範編碼,方便看清楚文字與數字的對應。假設一份教學用詞彙表規定「我」是 17、「愛」是 42、「貓」是 8,那麼「我愛貓」就可以表示成 [17, 42, 8]。這些切分與數字都是假例,不是任何真實模型的編碼結果。
| token 片段 | token 編號 (Token ID) |
|---|---|
| 我 | 17 |
| 愛 | 42 |
| 貓 | 8 |
編號只用來識別 token,像查表用的索引:42 比 8 大,不代表「愛」比「貓」更重要;兩個編號接近,也不代表意思接近。它也不是這個 token 在句子中的位置。同一個 token 在同一份詞彙表中使用相同 ID;換一套切分器或詞彙表,切分與 ID 都可能不同。
編號已經是數字,為什麼還要再轉一次?
模型通常會用 token ID 查嵌入表 (Embedding Table),取得一組可學習的數值,稱為嵌入向量 (Embedding Vector)。例如 ID 17 對應 [0.2, −0.4, …];這組數值也只是示意。
ID 是查哪一列的索引;向量是那一列儲存的一組數值。 模型接著透過神經網路 (Neural Network),結合順序與上下文處理這些向量,計算下一個 token 的機率。這樣就把「文字怎麼進入運算」分成了兩步,而不是把編號大小直接當成文字的意思。
一整段回答,是怎麼逐步長出來的?
常見的聊天語言模型採用自回歸生成 (Autoregressive Generation):根據目前輸入與已生成的內容,估計下一個 token 的各種可能性。生成程式依照設定,選出或抽樣 (Sampling) 得到下一個 token,再把它接回已有內容,重複計算。
回到開頭的會議通知。模型即將產生回答的第一個 token,可能從「各位同事」的「各」、「您好」的「您」,或「請各位同事」的「請」開始。
先想一想:如果這個位置的候選機率是「各」50%、「您」30%、「請」20%,下一步一定會輸出「各」嗎?
以下使用教學用的簡化詞彙表,假設「各、您、請、位」各是一個 token。切分、機率與生成結果全是示意,不是真實模型的測量值。 表格只列第一步機率不為零的三個候選;「位」及其他 token 在這個虛構步驟的機率設為零。這是為了方便教學,不代表真實模型通常只有三個可能的候選。
| 此刻的候選 token | 教學示意機率 |
|---|---|
| 各 | 50% |
| 您 | 30% |
| 請 | 20% |
這張表代表同一個位置的三種可能,不是接下來依序輸出「各、您、請」。機率加起來是 100%,但每一步只選出一個 token。
有機率之後,程式怎麼選?
先區分兩件事:模型算出候選的分數;生成程式依設定決定怎麼選。 分數可轉成機率分布 (Probability Distribution);真實生成設定也可能先調整或篩選候選。下面為了比較,假設直接使用表中的機率:
- 貪婪解碼 (Greedy Decoding):每一步選目前機率最高的候選。這一步會選「各」,但不代表整段回答一定最好或正確。
- 抽樣 (Sampling):依機率抽出一個候選。「各」較容易被抽中,「您」與「請」也有機會;不是三者機會相等,也不是每抽十次就保證恰好出現五次「各」。
所以,剛才的預測答案是:要看選取方式,不能只看最高機率就斷言一定輸出「各」。 即使輸入相同,使用抽樣時也可能選出不同的 token。
選完一個,為什麼還要重新算?
假設這次選到「各」,它就會接回目前的序列,成為下一步的依據。接下來算的是「已經有『各』,後面接什麼」,不是繼續使用剛才那張表。詞彙表沒有更換,更新的是各個 token 的機率;例如「位」在第一步是零,到了「各」之後就可能有非零機率。
輸入:幫我寫一則給同事的會議通知:明天下午三點開會。
↓
計算下一個 token 的候選機率
↓
依設定選一個,例如「各」
↓
接回序列:原輸入 + 各
↓
用更新後的序列,再算下一步
↓
若選「位」:原輸入 + 各 + 位
↓
重複,直到符合停止條件
| 這一步已經生成的內容 | 接下來在算什麼? |
|---|---|
| 還沒有回答文字 | 回答開頭的下一個 token |
| 各 | 在「各」之後的下一個 token |
| 各位 | 在「各位」之後的下一個 token |
換掉先前選中的 token,後續計算的依據就變了。 如果第一步抽到「請」,下一步會沿著「請……」重新計算,不能照搬「各……」後面的機率。整段回答就是這樣逐步長出來;此處講的是生成的依賴關係,不表示系統每一步都必須從頭重算所有運算。
當生成到結束標記 (End-of-Sequence Token),或達到長度上限等停止條件,流程就結束。程式把生成的 token 編號轉回文字,讓你在對話介面看到回答。
反例:選到最高機率的 token,不等於選到真相。 這些機率描述的是「根據目前內容,模型傾向接出什麼」,不是「這項說法為真的機率」。即使每一步都選最高機率,仍可能生成錯誤內容。
模型如何學到文字的規律?訓練 (Training) 與這次回答有什麼不同?
前面說的那些機率,是怎麼來的?模型怎麼知道「各」的機率是多少?
模型不是一開始就會。它在訓練時,會反覆練習一件事:看前面的文字,預測後面接什麼,再用原文檢查。
先暫時離開會議通知。假設訓練資料裡有「各位同事」,我們只看「各」後面接什麼。以下為了容易理解,假設一個字就是一個 token,數字也都是教學假例。
圖中的「調整」是什麼意思?模型內部有許多會影響計算結果的數值,叫做參數 (Parameters)。訓練程式調整這些數值,讓模型往後更能預測資料裡的文字。它不是直接把「位」的機率改成某個指定答案。
所以,現在算出的機率,來自兩件事:模型以前經過的訓練,以及這次看到的文字。 訓練改變模型內部的參數;這次的文字則決定它正在預測什麼。
| 你可能在想 | 對應的意思 |
|---|---|
| 「各」永遠都是 50% 嗎? | 不是。換一段前文,機率就可能不同。 |
| 練過「各位」,以後一定接「位」嗎? | 不是。模型還會從許多其他文字學習,並根據當下前文計算。 |
| 預測得像原文,就代表內容正確嗎? | 不代表,原文也可能有錯。 |
這裡先理解「預測 → 檢查 → 調整」就好。如何評分、如何決定每個參數要改多少,是下一層要拆開的問題。聊天模型通常還會經過其他訓練,學習如何回應指示。
聊天時,少了哪一步?
你送出訊息、模型利用已訓練好的參數計算回答,這個階段叫做推論 (Inference)。一般聊天推論不會因為你多打一則訊息,就當場重新訓練模型參數。
訓練改的是參數;一般聊天生成累積的是這次的輸入與已生成內容。 回答變了,可能只是計算依據變了,不代表剛剛執行了參數更新。服務日後是否將對話用於訓練,是另一個資料使用流程,不能與當下這次推論混為一談。
因此要分清楚兩種來源:
- 訓練所得的參數:影響模型如何處理語言,例如通知常見的表達方式。
- 這次提供的內容:告訴模型這次要處理什麼,例如你的會議時間。
能生成像通知的文字,不等於知道你公司的實際安排。生成機率描述的是模型傾向接出什麼,不能直接當成「這件事為真」的機率;查證事實需要另外的依據。
為什麼下一句只說「改成四點」也可能接得上?
延續開頭的對話:你已經請 AI 寫出「明天下午三點開會」的通知,接著只輸入「改成四點」。聊天服務可以把先前對話連同這句新訊息,一起提供給模型。
模型這次可參考的內容稱為 上下文 (Context)。它看到的可能是「前面談會議時間,現在要求改成四點」,而不只是孤立的四個字。輸入改變,下一個 token 的計算也跟著改變。
這說明了模型可以在參數沒有更新的情況下,依照新內容改變回答。對話接得上,本身不能證明模型已把這段對話永久學進參數。
若某次輸入真的只含「改成四點」,沒有先前對話或其他資料,模型就缺少「改什麼」的依據。有些服務另外提供記憶或檢索 (Retrieval) 資料,所以應區分「介面顯示了什麼」與「實際交給模型的內容」。
觀察模型輸入的表示方式:輸入本章的「幫我寫一則給同事的會議通知:明天下午三點開會。」,再點選訊息查看文字被切成哪些片段。這些片段對應前面提到的 token;不同 tokenizer 可能切得不同。這個工具只展示切分與預算,不執行模型的下一個 token 預測;本章先看片段,上限與裁切留到後面章節。
補充:這個原理對使用方式有什麼啟發?
提供相關背景,會改變模型生成時能依據的內容,因此可能讓回答更貼近需求;但它不保證事實正確。這是上下文機制帶來的使用啟發。
下一章再拆開剛才略過的步驟:文字究竟如何切成 token?為什麼字數不等於 token 數?
參考:Hugging Face 語言模型訓練、PyTorch 參數最佳化、Hugging Face 文字生成流程、Hugging Face 輸入編號說明、PyTorch 嵌入表說明、Anthropic 上下文說明。查核日期:2026-09-22。本文介紹常見自回歸聊天模型的簡化流程,不涵蓋所有 AI 架構或產品實作。