Panggilan fungsi meningkatkan kemampuan LLM untuk memberikan jawaban yang relevan dan kontekstual.
Anda dapat memberikan fungsi kustom ke model AI generatif dengan Function Calling API. Model tidak memanggil fungsi ini secara langsung, tetapi menghasilkan output data terstruktur yang menentukan nama fungsi dan saran argumen.
Output ini memungkinkan pemanggilan API eksternal atau sistem informasi seperti database, sistem pengelolaan hubungan pelanggan, dan repositori dokumen. Output API yang dihasilkan dapat digunakan oleh LLM untuk meningkatkan kualitas respons.
Untuk dokumentasi konseptual selengkapnya tentang pemanggilan fungsi, lihat Pemanggilan fungsi.
Model yang didukung
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash dengan audio native Live API
Pratinjau - Gemini 2.0 Flash dengan Live API
Pratinjau - Vertex AI Model Optimizer
Eksperimental - Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
Batasan:
- Jumlah maksimum deklarasi fungsi yang dapat diberikan dengan permintaan adalah 128.
Contoh sintaksis
Sintaksis untuk mengirim permintaan API panggilan fungsi.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \ -d '{ "contents": [{ ... }], "tools": [{ "function_declarations": [ { ... } ] }] }'
Daftar parameter
Lihat contoh untuk mengetahui detail implementasi.
FunctionDeclaration
Mendefinisikan fungsi yang dapat dibuat input JSON-nya oleh model berdasarkan spesifikasi OpenAPI 3.0.
Parameter | |
---|---|
|
Nama fungsi yang akan dipanggil. Harus diawali dengan huruf atau garis bawah. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah, titik, atau tanda hubung, dengan panjang maksimum 64 karakter. |
|
Opsional: Deskripsi dan tujuan fungsi. Model menggunakan ini untuk memutuskan cara dan apakah akan memanggil fungsi. Untuk hasil terbaik, sebaiknya sertakan deskripsi. |
|
Opsional: Mendeskripsikan parameter fungsi dalam format Objek Skema JSON OpenAPI: spesifikasi OpenAPI 3.0. |
|
Opsional: Mendeskripsikan output dari fungsi dalam format Objek Skema JSON OpenAPI: spesifikasi OpenAPI 3.0. |
Untuk mengetahui informasi selengkapnya, lihat Panggilan fungsi
Schema
Menentukan format data input dan output dalam panggilan fungsi berdasarkan spesifikasi Skema OpenAPI 3.0.
Parameter | |
---|---|
jenis |
Enum. Jenis data. Harus salah satu dari:
|
description |
Opsional: Deskripsi data. |
enum |
Opsional: Kemungkinan nilai elemen jenis primitif dengan format enum. |
items |
Opsional: Skema elemen |
properties |
Opsional: Skema properti |
required |
Opsional: Properti wajib |
nullable |
Opsional: Menunjukkan apakah nilai dapat berupa |
FunctionCallingConfig
FunctionCallingConfig
mengontrol perilaku model dan
menentukan jenis fungsi yang akan dipanggil.
Parameter | |
---|---|
|
Opsional:
|
|
Opsional: Nama fungsi yang akan dipanggil. Hanya disetel jika |
functionCall
functionCall
yang diprediksi dan ditampilkan dari model yang berisi string
yang merepresentasikan functionDeclaration.name
dan objek JSON terstruktur
yang berisi parameter dan nilainya.
Parameter | |
---|---|
|
Nama fungsi yang akan dipanggil. |
|
Parameter dan nilai fungsi dalam format objek JSON. Lihat Panggilan fungsi untuk mengetahui detail parameter. |
functionResponse
Output yang dihasilkan dari FunctionCall
yang berisi string yang merepresentasikan
FunctionDeclaration.name
. Juga berisi objek JSON terstruktur dengan output dari fungsi (dan menggunakannya sebagai konteks untuk model). Kolom ini harus berisi
hasil FunctionCall
yang dibuat berdasarkan prediksi model.
Parameter | |
---|---|
|
Nama fungsi yang akan dipanggil. |
|
Respons fungsi dalam format objek JSON. |
Contoh
Mengirim deklarasi fungsi
Contoh berikut adalah contoh dasar pengiriman kueri dan deklarasi fungsi ke model.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Project ID Anda.
- MODEL_ID: ID model yang sedang diproses.
- ROLE: Identitas entitas yang membuat pesan.
- TEXT: Perintah yang akan dikirim ke model.
- NAME: Nama fungsi yang akan dipanggil.
- DESCRIPTION: Deskripsi dan tujuan fungsi.
- Untuk kolom lainnya, lihat tabel Daftar parameter.
Metode HTTP dan URL:
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent
Isi JSON permintaan:
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "TYPE", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Contoh perintah curl
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "What is the weather in Boston?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
Gen AI SDK untuk Python
Node.js
Java
Go
REST (OpenAI)
Anda dapat memanggil Function Calling API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: .
- MODEL_ID: ID model yang sedang diproses.
Metode HTTP dan URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Isi JSON permintaan:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" } }, "required": ["location"] } } } ] }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Anda dapat memanggil Function Calling API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.
Kirim deklarasi fungsi dengan FunctionCallingConfig
Contoh berikut menunjukkan cara meneruskan FunctionCallingConfig
ke model.
functionCallingConfig
memastikan bahwa output model selalu berupa
panggilan fungsi tertentu. Untuk mengonfigurasi:
- Tetapkan fungsi yang memanggil
mode
keANY
. Tentukan nama fungsi yang ingin Anda gunakan di
allowed_function_names
. Jikaallowed_function_names
kosong, salah satu fungsi yang disediakan dapat ditampilkan.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "Do you have the White Pixel 8 Pro 128GB in stock in the US?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"name": "get_product_sku",
"description": "Get the available inventory for a Google products, e.g: Pixel phones, Pixel Watches, Google Home etc",
"parameters": {
"type": "object",
"properties": {
"product_name": {"type": "string", "description": "Product name"}
}
}
},
{
"name": "get_store_location",
"description": "Get the location of the closest store",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "Location"}
},
}
}
]
}],
"toolConfig": {
"functionCallingConfig": {
"mode":"ANY",
"allowedFunctionNames": ["get_product_sku"]
}
},
"generationConfig": {
"temperature": 0.95,
"topP": 1.0,
"maxOutputTokens": 8192
}
}'
Gen AI SDK untuk Python
Node.js
Go
REST (OpenAI)
Anda dapat memanggil Function Calling API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: .
- MODEL_ID: ID model yang sedang diproses.
Metode HTTP dan URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Isi JSON permintaan:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" } }, "required": ["location"] } } } ], "tool_choice": "auto" }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Anda dapat memanggil Function Calling API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.
Langkah berikutnya
Untuk dokumentasi mendetail, lihat berikut ini: