從 Gemma 4 開始,我們推出新的控制權杖。如要瞭解 Gemma 3 以下版本,請參閱舊版文件。
以下各節說明 Gemma 4 使用的控制權杖及其用途。請注意,控制權杖是保留在我們的權杖化工具中,且專屬於該工具。
- 表示系統指令的權杖:
system - 表示使用者輪流發言的權杖:
user - 表示模型輪流的權杖:
model - 表示對話輪流開始的符記:
<|turn> - 表示對話輪流結束的符記:
<turn|>
以下是範例對話:
<|turn>system
You are a helpful assistant.<turn|>
<|turn>user
Hello.<turn|>
多模態
| 多模態權杖 | 目的 |
|---|---|
<|image> <image|> |
指出圖片嵌入 |
<|audio> <audio|> |
指出音訊嵌入 |
<|image|> <|audio|> |
特殊預留位置權杖 |
我們使用兩個特殊預留位置權杖 (<|image|> 和 <|audio|>) 指定要插入圖片和音訊權杖的位置。完成權杖化後,模型會以實際的軟性嵌入取代這些權杖。
以下是範例對話:
prompt = """<|turn>user
Describe this image: <|image|>
And translate these audio:
a. <|audio|>
b. <|audio|><turn|>
<|turn>model"""
代理功能和推論控制詞元
為支援代理工作流程,Gemma 使用專門的控制權杖,將內部推論 (思考) 與外部動作 (函式呼叫) 區分開來。模型可使用這些權杖處理複雜的邏輯,然後提供最終回覆或與外部工具互動。
函式呼叫
Gemma 4 經過六個特殊權杖的訓練,可管理「工具使用」生命週期。
| 權杖組合 | 目的 |
|---|---|
<|tool> <tool|> |
定義工具 |
<|tool_call> <tool_call|> |
表示模型要求使用工具。 |
<|tool_response> <tool_response|> |
將工具的執行結果提供給模型。 |
字串值的分隔符號:<|"|>
單一符記 <|"|> 用於分隔結構化資料區塊中的所有字串值。
- 用途:這個權杖可確保字串中的任何特殊字元 (例如
{、}、,或引號) 都會視為字面文字,而非資料結構基礎語法的一部分。 - 用法:函式宣告、呼叫和回應中的所有字串常值都必須使用這個符記 (例如
key:<|"|>string value<|"|>) 括住。
思考模式
如要啟用思考模式,請在系統指令中加入 <|think|> 控制權杖。
| 控制權杖 | 目的 |
|---|---|
<|think|> |
啟用思考模式 |
<|channel> <channel|> |
表示模型的內部程序。 |
以下是範例對話:
<|turn>system
<|think|><turn|>
<|turn>user
What is the water formula?<turn|>
<|turn>model
<|channel>thought
...
<channel|>The most common interpretation of "the water formula" refers...<turn|>
思考模式的設計是在對話層級啟用。這應與其他系統指令 (例如工具定義) 一併整合為單一系統回合。
推理和函式呼叫範例
在代理程式回合中,模型可能會先私下「思考」,再決定呼叫函式。生命週期遵循下列順序:
- 使用者查詢:使用者提出問題。
- 內部推論:模型會在思考通道中私下思考。
- 工具要求:模型會停止生成內容,要求呼叫工具。
- 執行和插入:應用程式會執行工具並附加回覆。
- 最終回覆:模型會讀取回覆並生成最終答案。
以下範例說明如何使用天氣工具建立模型:
<|turn>system
<|think|>You are a helpful assistant.<|tool>declaration:get_current_temperature{...}<tool|><turn|>
<|turn>user
What's the temperature in London?<turn|>
<|turn>model
<|channel>thought
...
<channel|><|tool_call>call:get_current_temperature{location:<|"|>London<|"|>}<tool_call|><|tool_response>
應用程式應剖析模型的回應,擷取函式名稱和引數,執行函式,然後將 tool_calls 和 tool_responses 附加至 assistant 角色下的即時通訊記錄。
<|turn>model
<|tool_call>call:get_current_weather{location:<|"|>London<|"|>}<tool_call|><|tool_response>response:get_current_weather{temperature:15,weather:<|"|>sunny<|"|>}<tool_response|>
最後,Gemma 會讀取工具回應並回覆使用者。
The temperature in London is 15 degrees and it is sunny.<turn|>
以下是這個範例的完整 JSON 即時通訊記錄:
[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "What's the temperature in London?"
},
{
"role": "assistant",
"tool_calls": [
{
"function": {
"name": "get_current_weather",
"arguments": {
"location": "London"
}
}
}
],
"tool_responses": [
{
"name": "get_current_weather",
"response": {
"temperature": 15,
"weather": "sunny"
}
}
],
"content": "The temperature in London is 15 degrees and it is sunny."
}
]
管理回合之間的思考脈絡
妥善管理模型生成的想法,對於維持多輪對話的效能至關重要。
- 標準多輪對話:您必須先從前一輪對話中移除 (剝除) 模型生成的想法,再將對話記錄傳回模型,以進行下一輪對話。如要在對話期間停用思考模式,可以在移除先前的想法時,一併移除
<|think|>符記。 - 函式呼叫 (例外狀況):如果單一模型回合涉及函式或工具呼叫,則函式呼叫之間不得移除想法。
代理工作流程和長時間執行的工作
由於標準回合之間會移除原始想法,因此開發人員建構長期執行的代理程式時,可能需要保留推理脈絡,避免模型進入循環推理迴圈。
- 總結想法:強烈建議的推論技術是擷取、總結,然後將模型先前的想法以標準文字的形式回饋到脈絡窗口。
- 格式限制:由於 Gemma 4 並未明確接受訓練,因此無法處理提示中包含的原始想法 (上述特定工具呼叫情境除外),模型不會對這些插入的想法有嚴格或特定的格式要求。您可以彈性設定摘要推論的格式,確保最符合特定代理功能架構的需求。
整合注意事項
- 內部狀態:
<|channel>和<channel|>詞元通常用於思維鏈提示 (CoT) 處理。在標準使用者應用程式中,這類內容通常會對使用者隱藏。 - 工具迴圈:
tool_call和tool_response權杖可促進應用程式環境與模型之間的「交握」。應用程式會攔截tool_call、執行基礎程式碼,並在tool_response權杖中將結果回饋給模型。 - 模型行為:即使明確關閉思考模式,較大型的模型 (例如 gemma-4-26B-A4B-it、gemma-4-31B-it) 偶爾仍會產生思考通道。如要在這些極端情況下穩定模型行為,請考慮在提示中加入空白思考權杖。
提示:使用無思考資料集微調大型模型
使用不含思考過程的資料集微調較大的 Gemma 模型時,在訓練提示中加入空白管道,可獲得更出色的結果:
<|turn>model
<|channel>thought
<channel|>
提示:使用系統指令提升適應性思考效率
雖然 Gemma 4 官方支援以 ON 或 OFF 布林值「思考」,但模型具有極強的指令遵循能力,可動態調控思考行為。
您可以使用系統指令 (SI) 引導模型進入簡化思考模式,不必依賴「高」或「低」思考的硬式編碼架構參數。明確指示模型以高效率或較低的深度思考 (我們將此概念稱為「LOW」思考指令),即可實現適應性思考效率。
- 降低成本:測試結果顯示,套用「低」思考系統指令可減少約 20% 的思考權杖。
- 概念驗證:這項行為是模型可指導性的副產品,而非經過特別訓練,因此沒有單一「完美」的提示。「LOW」指示是概念驗證。
- 自訂:我們強烈建議開發人員自行嘗試使用自訂系統指令。您可以微調模型思考過程的深度、長度和風格,針對特定用途完美平衡延遲時間、成本和輸出品質。