Panggilan fungsi dengan Gemma

Saat menggunakan model kecerdasan buatan (AI) generatif seperti Gemma, Anda mungkin ingin menggunakan model tersebut untuk mengoperasikan antarmuka pemrograman guna menyelesaikan tugas atau menjawab pertanyaan. Memberi petunjuk kepada model dengan menentukan antarmuka pemrograman, lalu membuat permintaan yang menggunakan antarmuka tersebut disebut panggilan fungsi.

Gemma tidak menghasilkan token khusus alat. Framework Anda harus mendeteksi panggilan alat dengan memeriksa apakah struktur output cocok dengan spesifikasi output fungsi yang diminta.

Anda dapat menggunakan panggilan fungsi untuk sejumlah aplikasi:

  • Buat antarmuka bahasa alami untuk API pemrograman agar non-programmer dapat mengoperasikan antarmuka terprogram tanpa coding.
  • Membuat panggilan pemrograman sebagai bagian dari alur kerja agen AI

Panggilan fungsi didukung di Gemma 3, tetapi teknik panggilan fungsi dapat digunakan dengan Gemma versi sebelumnya. Panduan ini memberikan petunjuk tentang cara membuat perintah Gemma yang menggunakan panggilan fungsi. Sebaiknya gunakan Gemma3 27B untuk performa terbaik, dan Gemma3 12B untuk performa dan latensi yang seimbang.

Memanggil fungsi pemrograman

Anda dapat menggunakan panggilan fungsi dengan Gemma dengan membuat perintah yang memberikan petunjuk yang menentukan format output dan menentukan fungsi yang tersedia.

Saat perintah pengguna disertakan, model akan menghasilkan panggilan fungsi, yang merupakan string yang cocok dengan format output yang Anda tentukan. Tindakan ini akan menandakan permintaan untuk diuraikan oleh framework model Anda guna memanggil fungsi yang ditentukan.

Contoh perintah berikut menunjukkan blok definisi fungsi, beserta sintaksis panggilan fungsi, dan output panggilan fungsi dari model. Contoh perintah berikut dimaksudkan untuk digunakan dengan antarmuka pemrograman untuk katalog produk:

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?

Perintah ini akan menghasilkan respons berikut:

[get_product_name_by_PID(PID="807ZPKBL9V")]

Contoh ini menggunakan output panggilan fungsi gaya Python. Atau, Anda dapat menentukan format output gaya JSON, seperti yang ditunjukkan dalam contoh berikut:

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?

Perintah ini akan menghasilkan respons berikut:

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

Komponen perintah panggilan fungsi

Saat menggunakan panggilan fungsi dengan model Gemma, perintah model Anda harus mengikuti urutan dan struktur spesifik ini:

  1. Penyiapan panggilan fungsi
  2. Definisi fungsi

Bagian berikut memberikan detail selengkapnya tentang setiap komponen perintah ini.

Penyiapan panggilan fungsi

Bagian penyiapan dari perintah panggilan fungsi menetapkan perilaku keseluruhan yang diharapkan dari model. Anda dapat menambahkan petunjuk umum tambahan untuk perilaku model di bagian ini, seperti menentukan bahwa output harus ditampilkan menggunakan fungsi print atau console.log. Gunakan tanda petik tunggal gaya Markdown (func_name) untuk menunjukkan sintaksis kode.

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

Petunjuk ini harus sejelas dan sesingkat mungkin. Prioritaskan petunjuk yang paling penting dan berhati-hatilah dalam memberikan banyak petunjuk umum. Model Gemma dapat mengabaikan petunjuk yang terlalu mendetail atau tidak dinyatakan dengan jelas, terutama saat Anda menggunakan versi model dengan jumlah parameter yang lebih rendah.

Definisi fungsi

Bagian definition dari perintah memberikan nama, parameter, dan output fungsi, termasuk deskripsi untuk masing-masing. Anda dapat mendeklarasikan fungsi dalam format yang ditampilkan. Satu atau beberapa fungsi dapat ditentukan dalam blok deklarasi fungsi.

[
  {
    "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"
      ]
    }
  }
]

Langkah berikutnya

Lihat cara men-deploy dan menjalankan model Gemma: