Anda dapat memberikan fungsi kustom ke model AI generatif dengan Function Calling API. Model ini tidak langsung memanggil fungsi ini, tetapi menghasilkan output data terstruktur yang menentukan nama fungsi dan argumen yang disarankan.
Output ini memungkinkan pemanggilan API atau sistem informasi eksternal 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 panggilan fungsi, lihat Panggilan fungsi.
Model yang Didukung:
Model | Versi |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Batasan:
- Jumlah maksimum deklarasi fungsi yang dapat diberikan dengan permintaan adalah 128.
FunctionCallingConfig.Mode.ANY
hanya tersedia dengan model Gemini 1.5 Pro dan Gemini 1.5 Flash.
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": [ { ... } ] }] }'
Python
gemini_model = GenerativeModel( MODEL_ID, generation_config=generation_config, tools=[ Tool( function_declarations=[ FunctionDeclaration( ... ) ] ) ], )
Daftar parameter
Lihat contoh untuk mengetahui detail penerapan.
FunctionDeclaration
Menentukan fungsi yang dapat menghasilkan input JSON untuk 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. |
|
Opsional: Deskripsi dan tujuan fungsi. Model menggunakan ini untuk menentukan cara dan apakah akan memanggil fungsi atau tidak. Untuk hasil terbaik, sebaiknya sertakan deskripsi. |
|
Opsional: Menjelaskan parameter fungsi dalam format Objek Skema JSON OpenAPI: Spesifikasi OpenAPI 3.0. |
|
Opsional: Menjelaskan output dari fungsi dalam format Objek Skema JSON OpenAPI: spesifikasi OpenAPI 3.0. |
Untuk informasi selengkapnya, lihat Panggilan fungsi
Schema
Menentukan format data input dan output dalam panggilan fungsi berdasarkan spesifikasi OpenAPI 3.0 Schema.
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 nilainya dapat berupa |
FunctionCallingConfig
FunctionCallingConfig
mengontrol perilaku model dan menentukan jenis fungsi yang akan dipanggil.
Parameter | |
---|---|
|
Opsional:
|
|
Opsional: Nama fungsi yang akan dipanggil. Hanya ditetapkan saat |
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.
- LOCATION: Region untuk memproses permintaan.
- 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Contoh perintah curl
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.0-pro-002
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"
]
}
}
]
}]
}'
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: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
- MODEL_ID: ID model yang sedang diproses.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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.
Mengirim 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, fungsi apa pun yang disediakan dapat ditampilkan.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.5-pro-001
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
}
}'
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: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
- MODEL_ID: ID model yang sedang diproses.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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 selanjutnya
Untuk dokumentasi mendetail, lihat hal berikut: