การเรียกใช้ฟังก์ชันด้วย Gemma

เมื่อใช้โมเดลปัญญาประดิษฐ์ (AI) แบบ Generative เช่น Gemma คุณอาจต้องการใช้โมเดลเพื่อดำเนินการกับอินเทอร์เฟซการเขียนโปรแกรมเพื่อทำงานให้เสร็จสมบูรณ์หรือตอบคำถาม การให้คําสั่งโมเดลโดยการกําหนดอินเทอร์เฟซการเขียนโปรแกรม แล้วส่งคําขอที่ใช้อินเทอร์เฟซนั้นเรียกว่าการเรียกใช้ฟังก์ชัน

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. การตั้งค่าการเรียกฟังก์ชัน
  2. คําจํากัดความของฟังก์ชัน

ส่วนต่อไปนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับคอมโพเนนต์พรอมต์แต่ละรายการ

การตั้งค่าการเรียกใช้ฟังก์ชัน

ส่วน setup ของพรอมต์การเรียกฟังก์ชันจะตั้งค่าลักษณะการทํางานโดยรวมที่คาดไว้ของโมเดล คุณสามารถเพิ่มวิธีการทั่วไปเพิ่มเติมสำหรับลักษณะการทํางานของโมเดลในส่วนนี้ เช่น ระบุว่าควรแสดงเอาต์พุตโดยใช้ฟังก์ชัน print หรือ console.log ใช้เครื่องหมายแบ็กทิกเดี่ยว (func_name) สไตล์ Markdown เพื่อระบุไวยากรณ์โค้ด

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 อาจไม่สนใจคําแนะนําที่ละเอียดเกินไปหรือไม่ชัดเจน โดยเฉพาะเมื่อคุณใช้โมเดลเวอร์ชันที่มีจํานวนพารามิเตอร์น้อยกว่า

คําจํากัดความของฟังก์ชัน

ส่วนคําจํากัดความของพรอมต์จะแสดงชื่อฟังก์ชัน พารามิเตอร์ และเอาต์พุต รวมถึงคําอธิบายของแต่ละรายการ คุณสามารถประกาศฟังก์ชันในรูปแบบที่แสดง คุณกำหนดฟังก์ชันได้ 1 รายการหรือหลายรายการภายในบล็อกประกาศฟังก์ชัน

[
  {
    "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 ใช้งานได้