Gemma 4 提示詞格式

從 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|>

思考模式的設計是在對話層級啟用。這應與其他系統指令 (例如工具定義) 一併整合為單一系統回合。

推理和函式呼叫範例

在代理程式回合中,模型可能會先私下「思考」,再決定呼叫函式。生命週期遵循下列順序:

  1. 使用者查詢:使用者提出問題。
  2. 內部推論:模型會在思考通道中私下思考。
  3. 工具要求:模型會停止生成內容,要求呼叫工具。
  4. 執行和插入:應用程式會執行工具並附加回覆。
  5. 最終回覆:模型會讀取回覆並生成最終答案。

以下範例說明如何使用天氣工具建立模型:

<|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_callstool_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_calltool_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」指示是概念驗證。
  • 自訂:我們強烈建議開發人員自行嘗試使用自訂系統指令。您可以微調模型思考過程的深度、長度和風格,針對特定用途完美平衡延遲時間、成本和輸出品質。