Gọi hàm bằng Gemma

Khi sử dụng mô hình trí tuệ nhân tạo (AI) tạo sinh như Gemma, bạn có thể sử dụng mô hình này để vận hành các giao diện lập trình nhằm hoàn thành các nhiệm vụ hoặc trả lời câu hỏi. Việc hướng dẫn một mô hình bằng cách xác định giao diện lập trình, sau đó tạo một yêu cầu sử dụng giao diện đó được gọi là gọi hàm.

Gemma không xuất mã thông báo dành riêng cho công cụ. Khung của bạn phải phát hiện lệnh gọi công cụ bằng cách kiểm tra xem cấu trúc của đầu ra có khớp với thông số kỹ thuật đầu ra của hàm được nhắc hay không.

Bạn có thể sử dụng lệnh gọi hàm cho một số ứng dụng:

  • Tạo giao diện ngôn ngữ tự nhiên cho API lập trình để cho phép những người không phải lập trình viên vận hành giao diện lập trình mà không cần lập trình.
  • Tạo lệnh gọi lập trình trong quy trình làm việc của một tác nhân AI

Tính năng gọi hàm được hỗ trợ trong Gemma 3, nhưng bạn có thể sử dụng kỹ thuật gọi hàm với các phiên bản Gemma trước đó. Hướng dẫn này cung cấp hướng dẫn về cách tạo lời nhắc Gemma sử dụng lệnh gọi hàm. Bạn nên sử dụng Gemma3 27B để đạt được hiệu suất tốt nhất và Gemma3 12B để đạt được hiệu suất và độ trễ cân bằng.

Gọi các hàm lập trình

Bạn có thể sử dụng lệnh gọi hàm với Gemma bằng cách tạo một lời nhắc cung cấp hướng dẫn chỉ định định dạng đầu ra và xác định các hàm có sẵn.

Khi đưa câu lệnh của người dùng vào, mô hình sẽ xuất ra một lệnh gọi hàm, là một chuỗi khớp với định dạng đầu ra mà bạn chỉ định. Điều đó báo hiệu một yêu cầu được phân tích cú pháp bởi khung mô hình của bạn để gọi các hàm đã xác định.

Mẫu lời nhắc sau đây cho thấy một khối định nghĩa hàm, cùng với cú pháp gọi hàm và đầu ra lệnh gọi hàm từ mô hình. Lời nhắc mẫu sau đây được dùng với giao diện lập trình cho danh mục sản phẩm:

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?

Câu lệnh này sẽ tạo ra phản hồi sau:

[get_product_name_by_PID(PID="807ZPKBL9V")]

Ví dụ này sử dụng đầu ra lệnh gọi hàm kiểu Python. Ngoài ra, bạn có thể chỉ định định dạng đầu ra kiểu JSON, như minh hoạ trong ví dụ sau:

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?

Câu lệnh này sẽ tạo ra phản hồi sau:

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

Các thành phần của lời nhắc gọi hàm

Khi sử dụng lệnh gọi hàm với mô hình Gemma, lời nhắc của mô hình phải tuân theo thứ tự và cấu trúc cụ thể sau:

  1. Lệnh gọi hàm thiết lập
  2. Định nghĩa hàm

Các phần sau đây cung cấp thêm thông tin chi tiết về từng thành phần nhắc.

Thiết lập lệnh gọi hàm

Phần thiết lập của lời nhắc gọi hàm sẽ thiết lập hành vi dự kiến tổng thể của mô hình. Bạn có thể thêm các hướng dẫn chung khác cho hành vi của mô hình trong phần này, chẳng hạn như chỉ định hiển thị đầu ra bằng hàm print hoặc console.log. Sử dụng dấu nháy đơn kiểu Markdown (func_name) để chỉ ra cú pháp mã.

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

Những hướng dẫn này phải rõ ràng và ngắn gọn nhất có thể. Hãy ưu tiên các hướng dẫn quan trọng nhất và thận trọng khi cung cấp nhiều hướng dẫn chung. Mô hình Gemma có thể bỏ qua các hướng dẫn quá chi tiết hoặc không được thể hiện rõ ràng, đặc biệt là khi bạn đang sử dụng các phiên bản mô hình có số lượng tham số thấp hơn.

Định nghĩa hàm

Phần definition (định nghĩa) của câu lệnh cung cấp tên hàm, tham số và kết quả, bao gồm cả nội dung mô tả cho từng phần. Bạn có thể khai báo các hàm ở định dạng hiển thị. Bạn có thể xác định một hoặc nhiều hàm trong khối khai báo hàm.

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

Các bước tiếp theo

Hãy xem các cách triển khai và chạy mô hình Gemma: