Panggilan fungsi memudahkan Anda mendapatkan output data terstruktur dari model generatif. Anda kemudian dapat menggunakan output ini untuk memanggil API lain dan menampilkan data respons yang relevan ke model. Dengan kata lain, panggilan fungsi membantu Anda menghubungkan model generatif ke sistem eksternal sehingga konten yang dihasilkan berisi informasi terbaru dan akurat.
Anda dapat memberikan deskripsi fungsi kepada model Gemini. Ini adalah fungsi yang Anda tulis dalam bahasa aplikasi (artinya, fungsi tersebut bukan Google Cloud Functions). Model ini mungkin meminta Anda untuk memanggil fungsi dan mengirim kembali hasilnya untuk membantu model menangani kueri Anda.
Jika Anda belum melakukannya, lihat Pengantar panggilan fungsi untuk mempelajari lebih lanjut.
Menyiapkan project
Sebelum memanggil Gemini API, Anda perlu menyiapkan project, yang meliputi menyiapkan kunci API, menginstal paket SDK, dan menginisialisasi model.
Menyiapkan panggilan fungsi
Untuk tutorial ini, Anda akan melihat model berinteraksi dengan API pertukaran mata uang fiktif yang mendukung parameter berikut:
Parameter | Jenis | Wajib | Deskripsi |
---|---|---|---|
currencyFrom |
string | ya | Mata uang asal konversi |
currencyTo |
string | ya | Mata uang yang ingin dikonversi |
Contoh permintaan API
{
"currencyFrom": "USD",
"currencyTo": "SEK"
}
Contoh respons API
{
"base": "USD",
"rates": {"SEK": 0.091}
}
Langkah 1: Buat fungsi yang membuat permintaan API
Jika belum melakukannya, mulailah dengan membuat fungsi yang membuat permintaan API.
Untuk tujuan demonstrasi dalam tutorial ini, daripada mengirim permintaan API yang sebenarnya, Anda akan menampilkan nilai hardcode dalam format yang sama seperti yang ditampilkan oleh API sebenarnya.
async function makeApiRequest(currencyFrom, currencyTo) {
// This hypothetical API returns a JSON such as:
// {"base":"USD","rates":{"SEK": 0.091}}
return {
base: currencyFrom,
rates: { [currencyTo]: 0.091 },
};
}
Langkah 2: Buat deklarasi fungsi
Buat deklarasi fungsi yang akan Anda teruskan ke model generatif (langkah berikutnya dalam tutorial ini).
Sertakan sebanyak mungkin detail dalam deskripsi fungsi dan parameter. Model generatif menggunakan informasi ini untuk menentukan fungsi yang harus dipilih dan cara memberikan nilai untuk parameter dalam panggilan fungsi.
// Function declaration, to pass to the model.
const getExchangeRateFunctionDeclaration = {
name: "getExchangeRate",
parameters: {
type: "OBJECT",
description: "Get the exchange rate for currencies between countries",
properties: {
currencyFrom: {
type: "STRING",
description: "The currency to convert from.",
},
currencyTo: {
type: "STRING",
description: "The currency to convert to.",
},
},
required: ["currencyTo", "currencyFrom"],
},
};
// Executable function code. Put it in a map keyed by the function name
// so that you can call it once you get the name string from the model.
const functions = {
getExchangeRate: ({ currencyFrom, currencyTo }) => {
return makeApiRequest( currencyFrom, currencyTo)
}
};
Langkah 3: Tentukan deklarasi fungsi selama inisialisasi model
Tentukan deklarasi fungsi saat menginisialisasi model generatif dengan menetapkan parameter tools
model:
const { GoogleGenerativeAI } = require("@google/generative-ai");
// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
// ...
const generativeModel = genAI.getGenerativeModel({
// Use a model that supports function calling, like a Gemini 1.5 model
model: "gemini-1.5-flash",
// Specify the function declaration.
tools: {
functionDeclarations: [getExchangeRateFunctionDeclaration],
},
});
Langkah 4: Buat panggilan fungsi
Sekarang Anda dapat meminta model dengan fungsi yang ditentukan.
Cara yang direkomendasikan untuk menggunakan panggilan fungsi adalah melalui antarmuka chat, karena panggilan fungsi sangat cocok dengan struktur multi-putar chat.
const chat = generativeModel.startChat();
const prompt = "How much is 50 US dollars worth in Swedish krona?";
// Send the message to the model.
const result = await chat.sendMessage(prompt);
// For simplicity, this uses the first function call found.
const call = result.response.functionCalls()[0];
if (call) {
// Call the executable function named in the function call
// with the arguments specified in the function call and
// let it call the hypothetical API.
const apiResponse = await functions[call.name](call.args);
// Send the API response back to the model so it can generate
// a text response that can be displayed to the user.
const result2 = await chat.sendMessage([{functionResponse: {
name: 'getExchangeRate',
response: apiResponse
}}]);
// Log the text response.
console.log(result2.response.text());
}