Model generatif sangat ampuh dalam memecahkan banyak jenis masalah. Namun, konfigurasi tersebut dibatasi oleh batasan seperti:
- LLM dibekukan setelah pelatihan, sehingga pengetahuan yang ada dalamnya tidak diperbarui.
- LLM tidak dapat membuat kueri atau mengubah data eksternal.
Panggilan fungsi dapat membantu Anda mengatasi beberapa batasan ini. Panggilan fungsi terkadang disebut sebagai penggunaan alat karena memungkinkan model menggunakan alat eksternal seperti API dan fungsi untuk menghasilkan respons akhirnya.
Anda dapat mempelajari lebih lanjut panggilan fungsi dalam dokumentasi Google Cloud, termasuk daftar kasus penggunaan untuk panggilan fungsi yang bermanfaat.
Panggilan fungsi didukung oleh Gemini 1.0 Pro, Gemini 1.5 Pro, dan Gemini 1.5 Flash.
Panduan ini menunjukkan cara mengimplementasikan penyiapan panggilan fungsi yang mirip dengan contoh yang dijelaskan di bagian utama berikutnya dari halaman ini. Secara umum, berikut adalah langkah-langkah untuk menyiapkan panggilan fungsi di aplikasi Anda:
Tulis fungsi yang dapat memberikan informasi yang diperlukan model untuk menghasilkan respons akhirnya (misalnya, fungsi dapat memanggil API eksternal).
Buat deklarasi fungsi yang menjelaskan fungsi dan parameternya.
Berikan deklarasi fungsi selama inisialisasi model sehingga model mengetahui cara menggunakan fungsi, jika diperlukan.
Siapkan aplikasi Anda agar model dapat mengirim informasi yang diperlukan agar aplikasi Anda dapat memanggil fungsi.
Teruskan respons fungsi kembali ke model sehingga model dapat menghasilkan respons akhirnya.
Ringkasan contoh panggilan fungsi
Saat mengirim permintaan ke model, Anda juga dapat memberikan kumpulan "alat" (seperti fungsi) kepada model yang dapat digunakan untuk menghasilkan respons akhirnya. Untuk menggunakan fungsi ini dan memanggilnya ("panggilan fungsi"), model dan aplikasi Anda harus saling meneruskan informasi, sehingga cara yang direkomendasikan untuk menggunakan panggilan fungsi adalah melalui antarmuka chat multi-giliran.
Bayangkan Anda memiliki aplikasi tempat pengguna dapat memasukkan perintah seperti:
What was the weather in Boston on October 17, 2024?
.
Model Gemini mungkin tidak mengetahui informasi cuaca ini; tetapi, bayangkan Anda mengetahui API layanan cuaca eksternal yang dapat menyediakannya. Anda dapat menggunakan panggilan fungsi untuk memberi model Gemini jalur ke API tersebut dan informasi cuacanya.
Pertama, Anda menulis fungsi fetchWeather
di aplikasi yang berinteraksi dengan
API eksternal hipotetis ini, yang memiliki input dan output ini:
Parameter | Jenis | Wajib | Deskripsi |
---|---|---|---|
Input | |||
location |
Objek | Ya | Nama kota dan negara bagiannya untuk mendapatkan cuaca. Hanya kota di Amerika Serikat yang didukung. Harus selalu berupa objek bertingkat dari city dan state .
|
date |
String | Ya | Tanggal pengambilan cuaca (harus selalu dalam format YYYY-MM-DD ).
|
Output | |||
temperature |
Bilangan bulat | Ya | Suhu (dalam Fahrenheit) |
chancePrecipitation |
String | Ya | Peluang presipitasi (dinyatakan dalam persentase) |
cloudConditions |
String | Ya | Kondisi cloud (salah satu dari clear , partlyCloudy ,
mostlyCloudy , cloudy )
|
Saat melakukan inisialisasi model, Anda memberi tahu model bahwa fungsi fetchWeather
ini ada dan cara menggunakannya untuk memproses permintaan masuk, jika diperlukan.
Ini disebut "deklarasi fungsi". Model tidak memanggil fungsi secara langsung. Sebagai gantinya, saat memproses permintaan yang masuk, model
akan memutuskan apakah fungsi fetchWeather
dapat membantunya merespons permintaan. Jika
model memutuskan bahwa fungsi tersebut memang dapat berguna, model akan menghasilkan
data terstruktur yang akan membantu aplikasi Anda memanggil fungsi tersebut.
Lihat lagi permintaan yang masuk:
What was the weather in Boston on October 17, 2024?
. Model mungkin akan
memutuskan bahwa fungsi fetchWeather
dapat membantunya menghasilkan respons. Model
akan melihat parameter input yang diperlukan untuk fetchWeather
, lalu
membuat data input terstruktur untuk fungsi yang terlihat kira-kira seperti ini:
{
functionName: fetchWeather,
location: {
city: Boston,
state: Massachusetts // the model can infer the state from the prompt
},
date: 2024-10-17
}
Model meneruskan data input terstruktur ini ke aplikasi Anda sehingga aplikasi Anda dapat
memanggil fungsi fetchWeather
. Saat menerima kondisi cuaca
kembali dari API, aplikasi Anda akan meneruskan informasi ke model. Informasi cuaca
ini memungkinkan model menyelesaikan pemrosesan akhir dan menghasilkan
responsnya terhadap permintaan awal
What was the weather in Boston on October 17, 2024?
Model mungkin memberikan respons bahasa alami akhir seperti:
On October 17, 2024, in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.
Mengimplementasikan panggilan fungsi
Sebelum memulai
Jika Anda belum melakukannya, selesaikan panduan memulai untuk SDK Vertex AI in Firebase. Pastikan Anda telah melakukan semua hal berikut:
Siapkan project Firebase baru atau yang sudah ada, termasuk menggunakan paket harga Blaze dan mengaktifkan API yang diperlukan.
Hubungkan aplikasi Anda ke Firebase, termasuk mendaftarkan aplikasi dan menambahkan konfigurasi Firebase ke aplikasi Anda.
Tambahkan SDK dan lakukan inisialisasi layanan Vertex AI dan model generatif di aplikasi Anda.
Setelah menghubungkan aplikasi ke Firebase, menambahkan SDK, dan melakukan inisialisasi layanan Vertex AI dan model generatif, Anda siap memanggil Gemini API.
Langkah-langkah yang tersisa dalam panduan ini menunjukkan cara menerapkan penyiapan panggilan fungsi yang mirip dengan alur kerja yang dijelaskan dalam Ringkasan contoh panggilan fungsi (lihat bagian atas halaman ini).
Anda dapat melihat contoh kode lengkap untuk contoh panggilan fungsi ini nanti di halaman ini.
Langkah 1: Tulis fungsi
Bayangkan Anda memiliki aplikasi tempat pengguna dapat memasukkan perintah seperti:
What was the weather in Boston on October 17, 2024?
. Model Gemini mungkin tidak
mengetahui informasi cuaca ini; namun, bayangkan Anda mengetahui API layanan cuaca
eksternal yang dapat menyediakannya. Contoh dalam panduan ini mengandalkan
API eksternal hipotetis ini.
Tulis fungsi di aplikasi Anda yang akan berinteraksi dengan API eksternal hipotetis
dan berikan informasi yang diperlukan model untuk membuat permintaan
akhirnya. Dalam contoh cuaca ini, parameter akan berupa fungsi fetchWeather
yang membuat panggilan ke API eksternal fiktif ini.
Langkah 2: Buat deklarasi fungsi
Buat deklarasi fungsi yang nantinya akan Anda berikan ke model (langkah berikutnya dalam panduan ini).
Dalam deklarasi Anda, sertakan sebanyak mungkin detail dalam deskripsi untuk fungsi dan parameternya.
Model menggunakan informasi dalam deklarasi fungsi untuk menentukan fungsi mana yang akan dipilih dan cara memberikan nilai parameter untuk panggilan sebenarnya ke fungsi. Lihat Perilaku dan opsi tambahan nanti di halaman ini untuk mengetahui cara model memilih di antara fungsi, serta cara Anda dapat mengontrol pilihan tersebut.
Perhatikan hal-hal berikut tentang skema yang Anda berikan:
Anda harus memberikan deklarasi fungsi dalam format skema yang kompatibel dengan skema OpenAPI. Vertex AI menawarkan dukungan terbatas untuk skema OpenAPI.
Atribut berikut didukung:
type
,nullable
,required
,format
,description
,properties
,items
,enum
.Atribut berikut tidak didukung:
default
,optional
,maximum
,oneOf
.
Secara default, untuk SDK Vertex AI in Firebase, semua kolom dianggap wajib kecuali jika Anda menentukannya sebagai opsional dalam array
optionalProperties
. Untuk kolom opsional ini, model dapat mengisi kolom atau melewatinya. Perhatikan bahwa ini berlawanan dengan perilaku default untuk Vertex AI Gemini API.
Untuk praktik terbaik terkait deklarasi fungsi, termasuk tips untuk nama dan deskripsi, lihat Praktik terbaik dalam dokumentasi Google Cloud.
Berikut cara menulis deklarasi fungsi:
Langkah 3: Berikan deklarasi fungsi selama inisialisasi model
Jumlah maksimum deklarasi fungsi yang dapat Anda berikan dengan permintaan adalah 128. Lihat
Perilaku dan opsi tambahan
nanti di halaman ini untuk mengetahui cara model memilih di antara fungsi, serta
cara Anda dapat mengontrol pilihan tersebut (menggunakan toolConfig
untuk menetapkan
mode panggilan fungsi).
Pelajari cara memilih model Gemini dan secara opsional lokasi yang sesuai untuk kasus penggunaan dan aplikasi Anda.
Langkah 4: Panggil fungsi untuk memanggil API eksternal
Jika model memutuskan bahwa fungsi fetchWeather
memang dapat membantunya
membuat respons akhir, aplikasi Anda perlu melakukan panggilan sebenarnya ke fungsi
tersebut menggunakan data input terstruktur yang disediakan oleh model.
Karena informasi perlu diteruskan bolak-balik antara model dan aplikasi, cara yang direkomendasikan untuk menggunakan panggilan fungsi adalah melalui antarmuka chat multi-giliran.
Cuplikan kode berikut menunjukkan cara aplikasi Anda diberi tahu bahwa model ingin
menggunakan fungsi fetchWeather
. Contoh ini juga menunjukkan bahwa model telah menyediakan parameter value input yang diperlukan untuk panggilan fungsi (dan API eksternalnya yang mendasarinya).
Dalam contoh ini, permintaan masuk berisi perintah
What was the weather in Boston on October 17, 2024?
. Dari perintah ini, model menyimpulkan parameter input yang diperlukan oleh fungsi fetchWeather
(yaitu, city
, state
, dan date
).
Langkah 5: Berikan output fungsi ke model untuk menghasilkan respons akhir
Setelah fungsi fetchWeather
menampilkan informasi cuaca, aplikasi Anda
harus meneruskannya kembali ke model.
Kemudian, model melakukan pemrosesan akhirnya, dan menghasilkan respons
natural language final seperti:
On October 17, 2024 in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.
Perilaku dan opsi tambahan
Berikut adalah beberapa perilaku tambahan untuk panggilan fungsi yang perlu Anda akomodasi dalam kode dan opsi yang dapat Anda kontrol.
Model mungkin meminta untuk memanggil fungsi lagi atau fungsi lain.
Jika respons dari satu panggilan fungsi tidak cukup bagi model untuk menghasilkan respons akhir, model dapat meminta panggilan fungsi tambahan, atau meminta panggilan ke fungsi yang sama sekali berbeda. Yang kedua hanya dapat terjadi jika Anda menyediakan lebih dari satu fungsi ke model dalam daftar deklarasi fungsi.
Aplikasi Anda harus mengakomodasi bahwa model dapat meminta panggilan fungsi tambahan.
Model dapat meminta untuk memanggil beberapa fungsi secara bersamaan.
Anda dapat menyediakan hingga 128 fungsi dalam daftar deklarasi fungsi untuk model. Dengan demikian, model dapat memutuskan bahwa beberapa fungsi diperlukan untuk membantunya menghasilkan respons akhir. Dan Compose mungkin memutuskan untuk memanggil beberapa fungsi ini secara bersamaan – ini disebut panggilan fungsi paralel.
Aplikasi Anda harus mengakomodasi bahwa model dapat meminta beberapa fungsi yang berjalan secara bersamaan, dan aplikasi Anda harus memberikan semua respons dari fungsi kembali ke model.
Panggilan fungsi paralel didukung oleh Gemini 1.5 Pro dan Gemini 1.5 Flash.
Anda dapat mengontrol cara dan apakah model dapat meminta untuk memanggil fungsi.
Anda dapat menempatkan beberapa batasan tentang cara dan apakah model harus menggunakan deklarasi fungsi yang disediakan. Hal ini disebut penyetelan mode panggilan fungsi. Berikut beberapa contohnya:
Daripada mengizinkan model memilih antara respons bahasa alami langsung dan panggilan fungsi, Anda dapat memaksanya untuk selalu menggunakan panggilan fungsi. Hal ini disebut panggilan fungsi paksa.
Jika memberikan beberapa deklarasi fungsi, Anda dapat membatasi model agar hanya menggunakan sebagian dari fungsi yang disediakan.
Anda menerapkan batasan (atau mode) ini dengan menambahkan konfigurasi alat
(toolConfig
) bersama dengan perintah dan deklarasi fungsi. Dalam konfigurasi
alat, Anda dapat menentukan salah satu mode berikut. Mode yang paling berguna
adalah ANY
.
Mode | Deskripsi |
---|---|
AUTO |
Perilaku model default. Model memutuskan apakah akan menggunakan panggilan fungsi atau respons bahasa alami. |
ANY |
Model harus menggunakan panggilan fungsi ("panggilan fungsi paksa"). Untuk membatasi
model ke sebagian fungsi, tentukan nama fungsi yang diizinkan di
allowedFunctionNames .
|
NONE |
Model tidak boleh menggunakan panggilan fungsi. Perilaku ini setara dengan permintaan model tanpa deklarasi fungsi terkait. |
Mode panggilan fungsi didukung oleh Gemini 1.5 Pro dan Gemini 1.5 Flash.
Apa lagi yang dapat Anda lakukan?
Mencoba kemampuan lain Gemini API
- Buat percakapan multi-giliran (chat).
- Buat teks dari perintah khusus teks.
- Buat teks dari perintah multimodal (termasuk teks, gambar, PDF, video, dan audio).
Pelajari cara mengontrol pembuatan konten
- Memahami desain perintah, termasuk praktik terbaik, strategi, dan contoh perintah.
- Konfigurasikan parameter model seperti token suhu dan output maksimum.
- Gunakan setelan keamanan untuk menyesuaikan kemungkinan mendapatkan respons yang mungkin dianggap berbahaya.
Pelajari model Gemini lebih lanjut
Pelajari model yang tersedia untuk berbagai kasus penggunaan serta kuota dan harganya.Memberikan masukan tentang pengalaman Anda menggunakan Vertex AI in Firebase