Panggilan fungsi memudahkan Anda mendapatkan output data terstruktur dari model generatif. Selanjutnya, Anda 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 ke model Gemini. Ini adalah fungsi yang Anda tulis dalam bahasa aplikasi (artinya, fungsi tersebut bukan Cloud Functions). Model mungkin meminta Anda untuk memanggil fungsi dan mengirim kembali hasilnya untuk membantu model menangani kueri Anda.
Anda dapat mempelajari lebih lanjut panggilan fungsi di dokumentasi Google Cloud.
Sebelum memulai
Pelajari panduan memulai Vertex AI for Firebase SDK jika Anda belum melakukannya. 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 tersebut.
Tambahkan SDK dan lakukan inisialisasi layanan Vertex AI serta model generatif di aplikasi Anda.
Setelah menghubungkan aplikasi ke Firebase, menambahkan SDK, serta melakukan inisialisasi layanan Vertex AI dan model generatif, Anda siap memanggil Gemini API.
Menyiapkan panggilan fungsi
Untuk tutorial ini, Anda akan membuat model berinteraksi dengan API pertukaran mata uang fiktif yang mendukung parameter berikut:
Parameter | Jenis | Wajib | Deskripsi |
---|---|---|---|
currencyFrom |
string | ya | Mata uang sumber konversi |
currencyTo |
string | ya | Konversikan ke mata uang |
Contoh permintaan API
{
"currencyFrom": "USD",
"currencyTo": "SEK"
}
Contoh respons API
{
"base": "USD",
"rates": {"SEK": 10.99}
}
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 dengan yang ditampilkan oleh API sebenarnya.
func makeAPIRequest(currencyFrom: String,
currencyTo: String) -> JSONObject {
// This hypothetical API returns a JSON such as:
// {"base":"USD","rates":{"SEK": 10.99}}
return [
"base": .string(currencyFrom),
"rates": .object([currencyTo: .number(10.99)]),
]
}
Langkah 2: Buat deklarasi fungsi
Buat deklarasi fungsi yang akan Anda teruskan ke model generatif (langkah berikutnya dari tutorial ini).
Sertakan sebanyak mungkin detail dalam deskripsi fungsi dan parameter. Model generatif menggunakan informasi ini untuk menentukan fungsi mana yang akan dipilih dan cara memberikan nilai untuk parameter dalam panggilan fungsi.
let getExchangeRate = FunctionDeclaration(
name: "getExchangeRate",
description: "Get the exchange rate for currencies between countries",
parameters: [
"currencyFrom": Schema(
type: .string,
description: "The currency to convert from."
),
"currencyTo": Schema(
type: .string,
description: "The currency to convert to."
),
],
requiredParameters: ["currencyFrom", "currencyTo"]
)
Langkah 3: Tentukan deklarasi fungsi selama inisialisasi model
Tentukan deklarasi fungsi saat melakukan inisialisasi model generatif dengan menetapkan parameter tools
model:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model
// Use a model that supports function calling, like a Gemini 1.5 model
let model = vertex.generativeModel(
modelName: "gemini-1.5-flash",
// Specify the function declaration.
tools: [Tool(functionDeclarations: [getExchangeRate])]
)
Pelajari cara memilih model Gemini dan, jika perlu, lokasi yang sesuai untuk kasus penggunaan dan aplikasi Anda.
Langkah 4: Buat panggilan fungsi
Sekarang Anda dapat memerintahkan model dengan fungsi yang ditentukan.
Cara yang direkomendasikan untuk menggunakan panggilan fungsi adalah melalui antarmuka chat, karena panggilan fungsi sangat cocok dengan struktur multi-giliran chat.
let chat = model.startChat()
let prompt = "How much is 50 US dollars worth in Swedish krona?"
// Send the message to the generative model
let response1 = try await chat.sendMessage(prompt)
// Check if the model responded with a function call
guard let functionCall = response1.functionCalls.first else {
fatalError("Model did not respond with a function call.")
}
// Print an error if the returned function was not declared
guard functionCall.name == "getExchangeRate" else {
fatalError("Unexpected function called: \(functionCall.name)")
}
// Verify that the names and types of the parameters match the declaration
guard case let .string(currencyFrom) = functionCall.args["currencyFrom"] else {
fatalError("Missing argument: currencyFrom")
}
guard case let .string(currencyTo) = functionCall.args["currencyTo"] else {
fatalError("Missing argument: currencyTo")
}
// Call the hypothetical API
let apiResponse = makeAPIRequest(currencyFrom: currencyFrom, currencyTo: currencyTo)
// Send the API response back to the model so it can generate a text response that can be
// displayed to the user.
let response = try await chat.sendMessage([ModelContent(
role: "function",
parts: [.functionResponse(FunctionResponse(
name: functionCall.name,
response: apiResponse
))]
)])
// Log the text response.
guard let modelResponse = response.text else {
fatalError("Model did not respond with text.")
}
print(modelResponse)
Kamu bisa apa lagi?
Mencoba kemampuan lain Gemini API
- Membuat percakapan multi-giliran (chat).
- Buat teks dari prompt khusus teks.
- Buat teks dari perintah multimodal (termasuk teks, gambar, PDF, video, dan audio).
Pelajari cara mengontrol pembuatan konten
- Pahami desain prompt, 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 lebih lanjut model Gemini
Pelajari model yang tersedia untuk berbagai kasus penggunaan serta kuota dan harganya.Memberikan masukan tentang pengalaman Anda menggunakan Vertex AI for Firebase