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.
- Các ứng dụng này 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 cho bạn biết cách triển khai 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:
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).
Tạo một phần khai báo hàm mô tả hàm và các tham số của hàm.
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).
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.
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.
Tổng quan về ví dụ về lệnh 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 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 đó. 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 viết một hàm fetchWeather
trong ứng dụng để 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 như sau:
Thông số | Loại | Bắt buộc | Nội dung mô tả |
---|---|---|---|
Mục nhập | |||
location |
Đối tượng | Có | Tên thành phố và tiểu bang của thành phố đó để nhận 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 city và state .
|
date |
Chuỗi | Có | 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 | Có | Nhiệt độ (tính bằng độ F) |
chancePrecipitation |
Chuỗi | Có | Khả năng có mưa (biểu thị bằng phần trăm) |
cloudConditions |
Chuỗi | Có | Đ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 để ứ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.
Triển khai lệnh gọi hàm
Trước khi bắt đầu
Hãy hoàn thành 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 đã làm tất cả những việc sau:
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.
Kết nối ứng dụng 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.
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.
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 đầy đủ cho ví dụ về lệnh gọi hàm này ở phần sau của 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 vào nội dung mô tả càng chi tiết càng tốt cho 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 đó.
Hãy lưu ý những điều sau đây 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
, state
và date
).
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 đ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. Và trình biên dịch có thể quyết định gọi một số hàm này cùng một 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 một lúc và ứng dụng cần cung cấp tất cả phản hồi từ các hàm trở lại 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à liệu mô hình có thể yêu cầu gọi 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 được 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 liên quan. |
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
- Xây dựng cuộc trò chuyện nhiều lượt (trò chuyện).
- Tạo văn bản từ lời nhắc chỉ có văn bản.
- Tạo văn bản từ câu lệnh đa phương thức (bao gồm văn bản, hình ảnh, tệp PDF, video và âm thanh).
Tìm hiểu cách kiểm soát việc tạo nội dung
- Tìm hiểu về thiết kế câu lệnh, bao gồm cả các phương pháp hay nhất, chiến lược và câu lệnh mẫu.
- Định cấu hình các tham số mô hình như nhiệt độ và mã thông báo đầu ra tối đa.
- Sử dụng chế độ cài đặt an toàn để điều chỉnh khả năng nhận được những câu trả lời có thể bị coi là gây hại.
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ụng và hạn mức và mức giá của các mô hình đó.Đưa ra ý kiến phản hồi về trải nghiệm của bạn với Vertex AI in Firebase