Gọi hàm bằng Gemini API


Mô hình tạo sinh rất hiệu quả trong việc giải quyết nhiều loại vấn đề. Tuy nhiên, các phương thức này bị ràng buộc bởi các giới hạn như:

  • Các lớp này bị đóng băng sau khi huấn luyện, dẫn đến kiến thức lỗi thời.
  • Họ không thể truy vấn hoặc sửa đổi dữ liệu bên ngoài.

Lệnh gọi hàm có thể giúp bạn khắc phục một số hạn chế này. Đôi khi, lệnh gọi hàm được gọi là sử dụng công cụ vì lệnh gọi này cho phép mô hình sử dụng các công cụ bên ngoài như API và hàm để tạo phản hồi cuối cùng.

Bạn có thể tìm hiểu thêm về cách gọi hàm trong tài liệu về Google Cloud, bao gồm cả danh sách hữu ích về các trường hợp sử dụng để gọi hàm.

Gemini 1.0 Pro, Gemini 1.5 Pro và Gemini 1.5 Flash hỗ trợ tính năng gọi hàm.

Hướng dẫn này chỉ cho bạn cách triển khai cách thiết lập lệnh gọi hàm tương tự như ví dụ được mô tả trong phần chính tiếp theo của trang này. Ở cấp độ cao, sau đây là các bước để thiết lập lệnh gọi hàm trong ứng dụng:

  1. Viết một hàm có thể cung cấp cho mô hình thông tin cần thiết để tạo phản hồi cuối cùng (ví dụ: hàm có thể gọi một API bên ngoài).

  2. Tạo một phần khai báo hàm mô tả hàm và các tham số của hàm.

  3. Cung cấp nội dung khai báo hàm trong quá trình khởi tạo mô hình để mô hình biết cách sử dụng hàm đó (nếu cần).

  4. Thiết lập ứng dụng của bạn để mô hình có thể gửi cùng thông tin bắt buộc cho ứng dụng gọi hàm.

  5. Truyền phản hồi của hàm trở lại mô hình để mô hình có thể tạo phản hồi cuối cùng.

Chuyển đến phần triển khai mã

Tổng quan về ví dụ gọi hàm

Khi gửi yêu cầu đến mô hình, bạn cũng có thể cung cấp cho mô hình một bộ "công cụ" (chẳng hạn như hàm) mà mô hình có thể sử dụng để tạo phản hồi cuối cùng. Để sử dụng các hàm này và gọi các hàm đó ("gọi hàm"), mô hình và ứng dụng của bạn cần truyền thông tin qua lại cho nhau, vì vậy, cách đề xuất để sử dụng lệnh gọi hàm là thông qua giao diện trò chuyện nhiều lượt.

Hãy tưởng tượng rằng bạn có một ứng dụng trong đó người dùng có thể nhập một câu lệnh như: What was the weather in Boston on October 17, 2024?.

Các mô hình Gemini có thể không biết thông tin thời tiết này; tuy nhiên, hãy tưởng tượng rằng bạn biết một API dịch vụ thời tiết bên ngoài có thể cung cấp thông tin đó. Bạn có thể sử dụng lệnh gọi hàm để cung cấp cho mô hình Gemini một đường dẫn đến API đó và thông tin thời tiết của API đó.

Trước tiên, bạn cần viết một hàm fetchWeather trong ứng dụng của mình để tương tác với API bên ngoài giả định này. API này có dữ liệu đầu vào và đầu ra sau:

Thông số Loại Bắt buộc Nội dung mô tả
Mục nhập
location Đối tượng Tên thành phố và tiểu bang để lấy thông tin thời tiết.
Chỉ hỗ trợ các thành phố ở Hoa Kỳ. Phải luôn là đối tượng lồng nhau của citystate.
date Chuỗi Ngày để tìm nạp thông tin thời tiết (phải luôn ở định dạng YYYY-MM-DD).
Đầu ra
temperature Số nguyên Nhiệt độ (tính bằng độ F)
chancePrecipitation Chuỗi Khả năng có mưa (biểu thị bằng phần trăm)
cloudConditions Chuỗi Điều kiện đám mây (một trong các giá trị clear, partlyCloudy, mostlyCloudy, cloudy)

Khi khởi chạy mô hình, bạn sẽ cho mô hình biết rằng hàm fetchWeather này tồn tại và cách sử dụng hàm này để xử lý các yêu cầu đến (nếu cần). Đây được gọi là "phần khai báo hàm". Mô hình không gọi hàm trực tiếp. Thay vào đó, khi mô hình đang xử lý yêu cầu đến, mô hình sẽ quyết định xem hàm fetchWeather có thể giúp mô hình phản hồi yêu cầu hay không. Nếu mô hình quyết định rằng hàm này thực sự có thể hữu ích, thì mô hình sẽ tạo dữ liệu có cấu trúc giúp ứng dụng của bạn gọi hàm đó.

Xem lại yêu cầu đến: What was the weather in Boston on October 17, 2024?. Mô hình có thể sẽ quyết định rằng hàm fetchWeather có thể giúp mô hình tạo ra phản hồi. Mô hình sẽ xem xét những tham số đầu vào cần thiết cho fetchWeather, sau đó tạo dữ liệu đầu vào có cấu trúc cho hàm có dạng như sau:

{
  functionName: fetchWeather,
  location: {
    city: Boston,
    state: Massachusetts  // the model can infer the state from the prompt
  },
  date: 2024-10-17
}

Mô hình này truyền dữ liệu đầu vào có cấu trúc này đến ứng dụng của bạn để ứng dụng có thể gọi hàm fetchWeather. Khi nhận được thông tin về điều kiện thời tiết từ API, ứng dụng sẽ chuyển thông tin đó đến mô hình. Thông tin thời tiết này cho phép mô hình hoàn tất quá trình xử lý cuối cùng và tạo phản hồi cho yêu cầu ban đầu của What was the weather in Boston on October 17, 2024?

Mô hình có thể cung cấp câu trả lời cuối cùng bằng ngôn ngữ tự nhiên như: On October 17, 2024, in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.

Sơ đồ minh hoạ cách lệnh gọi hàm liên quan đến việc mô hình tương tác với một hàm trong ứng dụng 

Triển khai lệnh gọi hàm

Trước khi bắt đầu

Hãy hoàn tất hướng dẫn bắt đầu sử dụng cho SDK Vertex AI in Firebase nếu bạn chưa thực hiện. Hãy đảm bảo rằng bạn đã hoàn thành tất cả các bước sau:

  1. Thiết lập một dự án Firebase mới hoặc hiện có, bao gồm cả việc sử dụng gói giá linh hoạt và bật các API bắt buộc.

  2. Kết nối ứng dụng của bạn với Firebase, bao gồm cả việc đăng ký ứng dụng và thêm cấu hình Firebase vào ứng dụng.

  3. Thêm SDK và khởi chạy dịch vụ Vertex AI cũng như mô hình tạo sinh trong ứng dụng của bạn.

Sau khi kết nối ứng dụng với Firebase, thêm SDK và khởi chạy dịch vụ Vertex AI cũng như mô hình tạo sinh, bạn đã sẵn sàng gọi Gemini API.

Các bước còn lại trong hướng dẫn này sẽ hướng dẫn bạn cách triển khai chế độ thiết lập lệnh gọi hàm tương tự như quy trình công việc được mô tả trong phần Tổng quan về ví dụ về lệnh gọi hàm (xem phần đầu trang này).

Bạn có thể xem mã mẫu hoàn chỉnh cho ví dụ gọi hàm này ở phần sau trên trang này.

Bước 1: Viết hàm

Hãy tưởng tượng rằng bạn có một ứng dụng mà người dùng có thể nhập một lời nhắc như: What was the weather in Boston on October 17, 2024?. Các mô hình Gemini có thể không biết thông tin thời tiết này; tuy nhiên, hãy tưởng tượng rằng bạn biết một API dịch vụ thời tiết bên ngoài có thể cung cấp thông tin đó. Ví dụ trong hướng dẫn này dựa trên API bên ngoài giả định này.

Viết hàm trong ứng dụng của bạn để tương tác với API bên ngoài giả định và cung cấp cho mô hình thông tin cần thiết để tạo yêu cầu cuối cùng. Trong ví dụ về thời tiết này, đó sẽ là hàm fetchWeather thực hiện lệnh gọi đến API bên ngoài giả định này.

Bước 2: Tạo nội dung khai báo hàm

Tạo nội dung khai báo hàm mà sau này bạn sẽ cung cấp cho mô hình (bước tiếp theo của hướng dẫn này).

Trong phần khai báo, hãy đưa càng nhiều thông tin chi tiết càng tốt vào nội dung mô tả hàm và các tham số của hàm đó.

Mô hình sử dụng thông tin trong phần khai báo hàm để xác định hàm nào sẽ được chọn và cách cung cấp giá trị tham số cho lệnh gọi thực tế đến hàm. Hãy xem phần Các hành vi và tuỳ chọn bổ sung ở phần sau của trang này để biết cách mô hình có thể chọn trong số các hàm, cũng như cách bạn có thể kiểm soát lựa chọn đó.

Xin lưu ý những điều sau về giản đồ mà bạn cung cấp:

  • Bạn phải cung cấp nội dung khai báo hàm ở định dạng giản đồ tương thích với giản đồ OpenAPI. Vertex AI hỗ trợ hạn chế cho giản đồ OpenAPI.

    • Các thuộc tính sau được hỗ trợ: type, nullable, required, format, description, properties, items, enum.

    • Các thuộc tính sau không được hỗ trợ: default, optional, maximum, oneOf.

  • Theo mặc định, đối với SDK Vertex AI in Firebase, tất cả các trường đều được coi là bắt buộc, trừ phi bạn chỉ định các trường đó là không bắt buộc trong mảng optionalProperties. Đối với các trường không bắt buộc này, mô hình có thể điền sẵn các trường hoặc bỏ qua các trường đó. Xin lưu ý rằng điều này trái ngược với hành vi mặc định của Vertex AI Gemini API.

Để biết các phương pháp hay nhất liên quan đến nội dung khai báo hàm, bao gồm cả mẹo đặt tên và nội dung mô tả, hãy xem phần Các phương pháp hay nhất trong tài liệu về Google Cloud.

Dưới đây là cách bạn có thể viết nội dung khai báo hàm:

Bước 3: Cung cấp nội dung khai báo hàm trong quá trình khởi chạy mô hình

Số lượng khai báo hàm tối đa mà bạn có thể cung cấp cùng với yêu cầu là 128. Hãy xem phần Các hành vi và tuỳ chọn khác ở phần sau của trang này để biết cách mô hình có thể chọn trong số các hàm, cũng như cách bạn có thể kiểm soát lựa chọn đó (sử dụng toolConfig để đặt chế độ gọi hàm).

Tìm hiểu cách chọn một mô hình Gemini và một vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn (không bắt buộc).

Bước 4: Gọi hàm để gọi API bên ngoài

Nếu mô hình quyết định rằng hàm fetchWeather thực sự có thể giúp mô hình tạo phản hồi cuối cùng, thì ứng dụng của bạn cần thực hiện lệnh gọi thực tế đến hàm đó bằng cách sử dụng dữ liệu đầu vào có cấu trúc do mô hình cung cấp.

Vì thông tin cần được truyền qua lại giữa mô hình và ứng dụng, nên cách nên dùng để gọi hàm là thông qua giao diện trò chuyện nhiều lượt.

Đoạn mã sau đây cho biết cách ứng dụng của bạn được thông báo rằng mô hình muốn sử dụng hàm fetchWeather. Nó cũng cho thấy rằng mô hình đã cung cấp các giá trị tham số đầu vào cần thiết cho lệnh gọi hàm (và API bên ngoài cơ bản của mô hình).

Trong ví dụ này, yêu cầu đến chứa lời nhắc What was the weather in Boston on October 17, 2024?. Từ lời nhắc này, mô hình đã suy luận các tham số đầu vào mà hàm fetchWeather yêu cầu (tức là city, statedate).

Bước 5: Cung cấp đầu ra của hàm cho mô hình để tạo phản hồi cuối cùng

Sau khi hàm fetchWeather trả về thông tin thời tiết, ứng dụng của bạn cần truyền thông tin đó trở lại mô hình.

Sau đó, mô hình sẽ thực hiện quá trình xử lý cuối cùng và tạo ra một câu trả lời bằng ngôn ngữ tự nhiên cuối cùng như: On October 17, 2024 in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.

Các hành vi và tuỳ chọn khác

Sau đây là một số hành vi bổ sung cho lệnh gọi hàm mà bạn cần đưa vào mã và các tuỳ chọn mà bạn có thể kiểm soát.

Mô hình có thể yêu cầu gọi lại một hàm hoặc một hàm khác.

Nếu phản hồi từ một lệnh gọi hàm không đủ để mô hình tạo ra phản hồi cuối cùng, thì mô hình có thể yêu cầu một lệnh gọi hàm bổ sung hoặc yêu cầu một lệnh gọi đến một hàm hoàn toàn khác. Trường hợp sau chỉ có thể xảy ra nếu bạn cung cấp nhiều hàm cho mô hình trong danh sách khai báo hàm.

Ứng dụng của bạn cần phải điều chỉnh để mô hình có thể yêu cầu thêm các lệnh gọi hàm.

Mô hình có thể yêu cầu gọi nhiều hàm cùng một lúc.

Bạn có thể cung cấp tối đa 128 hàm trong danh sách khai báo hàm cho mô hình. Do đó, mô hình có thể quyết định cần có nhiều hàm để giúp tạo ra phản hồi cuối cùng. Ứng dụng này có thể quyết định gọi một số hàm trong số này cùng lúc – đây được gọi là gọi hàm song song.

Ứng dụng của bạn cần đáp ứng việc mô hình có thể yêu cầu nhiều hàm chạy cùng lúc và ứng dụng cần cung cấp tất cả phản hồi từ các hàm đó trở về mô hình.

Gemini 1.5 Pro và Gemini 1.5 Flash hỗ trợ tính năng gọi hàm song song.

Bạn có thể kiểm soát cách thức và việc mô hình có thể yêu cầu gọi các hàm hay không.

Bạn có thể đặt một số quy tắc ràng buộc về cách thức và liệu mô hình có nên sử dụng các nội dung khai báo hàm đã cung cấp hay không. Đây được gọi là đặt chế độ gọi hàm. Sau đây là một số ví dụ:

  • Thay vì cho phép mô hình chọn giữa phản hồi bằng ngôn ngữ tự nhiên ngay lập tức và lệnh gọi hàm, bạn có thể buộc mô hình luôn sử dụng lệnh gọi hàm. Đây được gọi là gọi hàm bắt buộc.

  • Nếu cung cấp nhiều nội dung khai báo hàm, bạn có thể hạn chế mô hình chỉ sử dụng một tập hợp con các hàm được cung cấp.

Bạn triển khai các quy tắc ràng buộc (hoặc chế độ) này bằng cách thêm cấu hình công cụ (toolConfig) cùng với lời nhắc và nội dung khai báo hàm. Trong cấu hình công cụ, bạn có thể chỉ định một trong các chế độ sau. Chế độ hữu ích nhất là ANY.

Chế độ Nội dung mô tả
AUTO Hành vi mặc định của mô hình. Mô hình này quyết định việc sử dụng lệnh gọi hàm hay phản hồi bằng ngôn ngữ tự nhiên.
ANY Mô hình phải sử dụng lệnh gọi hàm ("buộc gọi hàm"). Để giới hạn mô hình ở một tập hợp con hàm, hãy chỉ định tên hàm được phép trong allowedFunctionNames.
NONE Mô hình không được sử dụng lệnh gọi hàm. Hành vi này tương đương với một yêu cầu mô hình không có bất kỳ nội dung khai báo hàm nào được liên kết.

Gemini 1.5 Pro và Gemini 1.5 Flash hỗ trợ chế độ gọi hàm.

Bạn có thể làm gì khác?

Thử các tính năng khác của Gemini API

Tìm hiểu cách kiểm soát việc tạo nội dung

Bạn cũng có thể thử nghiệm với các câu lệnh và cấu hình mô hình bằng cách sử dụng Vertex AI Studio.

Tìm hiểu thêm về các mô hình Gemini

Tìm hiểu về các mô hình có sẵn cho nhiều trường hợp sử dụnghạn mức và mức giá của các mô hình đó.


Gửi ý kiến phản hồi về trải nghiệm của bạn với Vertex AI in Firebase