使用 Gemma 呼叫函式

使用 Gemma 等生成式人工智慧 (AI) 模型時,您可能會想使用模型操作程式介面,以便完成工作或回答問題。透過定義程式設計介面,然後提出使用該介面的要求,即可指示模型,這稱為函式呼叫

Gemma 不會輸出工具專屬的符記。您的架構必須檢查輸出內容的結構是否符合提示函式輸出規格,藉此偵測工具呼叫。

您可以為多個應用程式使用函式呼叫:

  • 為程式設計 API 建立自然語言介面,讓非程式設計人員不必編寫程式碼,也能操作程式介面。
  • 在 AI 代理程工作流程中產生程式設計呼叫

Gemma 3 支援函式呼叫,但函式呼叫技巧可與先前版本的 Gemma 搭配使用。本指南將說明如何建構使用函式呼叫的 Gemma 提示。如要獲得最佳效能,建議使用 Gemma3 27B;如要兼顧效能和延遲,建議使用 Gemma3 12B。

呼叫程式設計函式

您可以透過建立提示來使用 Gemma 的函式呼叫功能,該提示會提供指示,指定輸出格式並定義可用的函式。

加入使用者提示後,模型會輸出函式呼叫,這是與您指定的輸出格式相符的字串。這會通知模型架構解析要求,以便呼叫定義的函式。

以下提示範例會顯示函式定義區塊,以及函式呼叫語法和模型的函式呼叫輸出內容。以下提示範例可搭配產品目錄的程式設計介面使用:

You have access to functions. If you decide to invoke any of the function(s),
 you MUST put it in the format of
[func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

這個提示應會產生下列回應:

[get_product_name_by_PID(PID="807ZPKBL9V")]

本範例使用 Python 樣式函式呼叫輸出內容。或者,您也可以指定 JSON 樣式輸出格式,如以下範例所示:

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

這個提示應會產生下列回應:

{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}

函式呼叫提示的元件

使用 Gemma 模型的函式呼叫時,模型提示應遵循以下特定順序和結構:

  1. 呼叫 setup 的函式
  2. 函式定義

以下各節將詳細說明每個提示元件。

函式呼叫設定

函式呼叫提示的「設定」部分會設定模型的整體預期行為。您可以在本節中為模型行為新增其他一般指示,例如指定應使用 printconsole.log 函式顯示輸出內容。使用 Markdown 風格的單引號 (func_name) 表示程式碼語法。

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function

這些操作說明應盡可能簡明扼要。請優先提供最重要的操作說明,並謹慎提供許多一般操作說明。Gemma 模型可能會忽略過於詳細或表達不清晰的指示,尤其是當您使用參數數量較少的模型版本時。

函式定義

提示的「定義」部分會提供函式名稱、參數和輸出內容,並附上各項內容的說明。您可以使用顯示的格式宣告函式。您可以在函式宣告區塊中定義單一或多個函式。

[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  },
  {
    "name": "get_product_price_by_PID",
    "description": "Finds the price of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]

後續步驟

請參閱以下文章,瞭解如何部署及執行 Gemma 模型: