Dokumen ini memperkenalkan panggilan fungsi, yang mencakup cara kerjanya, fiturnya, dan praktik terbaik untuk penerapan. Panggilan fungsi, yang juga dikenal sebagai penggunaan alat, memberikan definisi alat eksternal (misalnya, fungsi Panggilan fungsi memungkinkan dua kasus penggunaan utama: Untuk mengetahui kasus penggunaan dan contoh lainnya yang menggunakan pemanggilan fungsi, lihat Kasus penggunaan. Model berikut mendukung panggilan fungsi: Anda dapat menentukan hingga 512 Tentukan fungsi Anda dalam format skema OpenAPI. Untuk mengetahui praktik terbaik deklarasi fungsi, termasuk tips untuk nama dan deskripsi, lihat Praktik terbaik. Untuk Model Terbuka, lihat panduan pengguna. Untuk menggunakan panggilan fungsi, lakukan tugas berikut: Deklarasikan Contoh berikut mengirimkan perintah dan deklarasi fungsi ke model Gemini. Saat menggunakan Python SDK, Anda dapat mendeklarasikan skema fungsi secara manual dengan kamus atau secara otomatis dengan helper Anda dapat menentukan skema secara manual menggunakan kamus Python atau secara otomatis dengan fungsi helper Atau, Anda dapat mendeklarasikan fungsi secara otomatis dengan fungsi helper Contoh ini menunjukkan skenario teks dengan satu fungsi dan satu
prompt.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di
Panduan memulai Vertex AI menggunakan
library klien.
Untuk mengetahui informasi selengkapnya, lihat
Dokumentasi referensi API Node.js Vertex AI.
Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat
Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh ini menunjukkan skenario teks dengan satu fungsi dan satu perintah. Pelajari cara menginstal atau mengupdate Go.
Untuk mempelajari lebih lanjut, lihat
dokumentasi referensi SDK.
Tetapkan variabel lingkungan untuk menggunakan Gen AI SDK dengan Vertex AI:
Contoh ini menunjukkan skenario teks dengan satu fungsi dan satu perintah.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di
Panduan memulai Vertex AI menggunakan
library klien.
Untuk mengetahui informasi selengkapnya, lihat
Dokumentasi referensi API C# Vertex AI.
Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat
Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di
Panduan memulai Vertex AI menggunakan
library klien.
Untuk mengetahui informasi selengkapnya, lihat
Dokumentasi referensi API Java Vertex AI.
Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat
Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Jika model menentukan bahwa model memerlukan output fungsi, respons dari model akan berisi nama fungsi dan nilai parameter yang akan digunakan untuk panggilan. Contoh berikut menunjukkan respons model terhadap perintah "Bagaimana cuaca di Boston?". Model menyarankan untuk memanggil fungsi Panggil API eksternal dan teruskan output API kembali ke model. Contoh berikut menggunakan data sintetis untuk menyimulasikan payload respons dari API eksternal dan mengirimkan output kembali ke model. Untuk praktik terbaik terkait panggilan API, lihat Memvalidasi panggilan API. Jika model mengusulkan beberapa panggilan fungsi paralel, aplikasi Anda akan memberikan semua respons kembali ke model. Untuk mempelajari lebih lanjut, lihat
Pemanggilan fungsi paralel. Model mungkin menentukan bahwa output fungsi lain diperlukan untuk merespons perintah. Dalam hal ini,
respons yang diterima aplikasi Anda dari model berisi nama fungsi lain dan kumpulan nilai parameter lain. Jika model menentukan bahwa respons API sudah cukup untuk merespons perintah pengguna, model akan membuat respons bahasa alami dan menampilkannya ke aplikasi Anda. Kemudian, aplikasi Anda akan meneruskan respons tersebut kepada
pengguna. Berikut adalah contoh respons bahasa alami: Saat memanggil fungsi dengan thinking diaktifkan, Anda
harus mendapatkan Melihat tanda tangan pikiran tidak diperlukan, tetapi Anda harus menyesuaikan Langkah
2 untuk menampilkannya bersama hasil eksekusi fungsi
sehingga dapat menggabungkan pikiran ke dalam respons akhirnya: Saat menampilkan tanda tangan pemikiran, ikuti panduan berikut: Pelajari lebih lanjut batasan dan penggunaan tanda tangan pemikiran, serta model pemikiran secara umum, di halaman Pemikiran. Untuk perintah seperti "Dapatkan detail cuaca di Boston dan San Francisco?",
model dapat mengusulkan beberapa panggilan fungsi paralel. Untuk mengetahui daftar model yang mendukung panggilan fungsi paralel, lihat Fitur dan batasan. Contoh ini menunjukkan skenario dengan satu fungsi Untuk mempelajari parameter permintaan lebih lanjut, lihat
Gemini API. Perintah berikut menunjukkan cara memberikan output fungsi ke model. Ganti my-project dengan nama project Google Cloud Anda. Respons bahasa alami yang dibuat oleh model mirip dengan berikut ini: Contoh ini menunjukkan skenario dengan satu fungsi Ganti my-project dengan nama project Google Cloud Anda. Perintah berikut menunjukkan cara memberikan output fungsi ke model. Daripada mengizinkan model memilih antara respons bahasa alami dan panggilan fungsi, Anda dapat memaksanya untuk memprediksi hanya panggilan fungsi. Hal ini dikenal sebagai panggilan fungsi paksa. Anda juga dapat memberikan kumpulan lengkap deklarasi fungsi kepada model, tetapi membatasi responsnya ke sebagian fungsi ini. Contoh berikut memaksa model untuk memprediksi hanya panggilan fungsi Deklarasi fungsi kompatibel dengan skema OpenAPI. Atribut berikut didukung: Contoh berikut menggunakan kamus Python untuk mendeklarasikan fungsi yang menggunakan parameter objek dan array: Contoh berikut menggunakan kamus Python untuk mendeklarasikan fungsi yang mengambil parameter bilangan bulat Deklarasi fungsi JSON berikut menggunakan atribut Catatan penggunaan: Contoh kode berikut mendeklarasikan fungsi yang mengalikan array angka dan menggunakan Tulis nama fungsi, deskripsi parameter, dan petunjuk yang jelas dan mendetail. Gunakan parameter yang memiliki jenis data yang ditentukan secara ketat. Jika nilai parameter berasal dari kumpulan terbatas, tambahkan kolom Gunakan petunjuk sistem. Saat menggunakan fungsi dengan parameter tanggal, waktu, atau lokasi, sertakan tanggal, waktu, atau informasi lokasi yang relevan saat ini (misalnya, kota dan negara) dalam petunjuk sistem. Hal ini memberikan konteks yang diperlukan model untuk memproses permintaan secara akurat, meskipun perintah pengguna tidak memiliki detail. Berikan perintah pengguna yang mendetail{: #prompt-bp }. Untuk hasil terbaik, awali perintah pengguna dengan detail berikut: Tetapkan konfigurasi pembuatan{: #generation-config-bp }. Untuk parameter suhu, gunakan Validasi panggilan API{: #invoke-api-bp }. Jika model mengusulkan panggilan fungsi yang akan mengirimkan pesanan, memperbarui database, atau memiliki konsekuensi signifikan lainnya, validasi panggilan fungsi dengan pengguna sebelum mengeksekusinya. Tanda tangan pemikiran harus selalu digunakan
dengan panggilan fungsi untuk hasil terbaik. Harga untuk panggilan fungsi didasarkan pada jumlah karakter dalam input dan output teks. Untuk mempelajari lebih lanjut, lihat
Harga Vertex AI. Input teks (perintah)
mengacu pada perintah pengguna untuk giliran percakapan saat ini, deklarasi
fungsi untuk giliran percakapan saat ini, dan histori
percakapan. Histori percakapan mencakup kueri, panggilan fungsi, dan respons fungsi dari pernyataan percakapan sebelumnya.
Vertex AI memangkas histori percakapan pada 32.000 karakter. Output teks (respons) mengacu pada panggilan fungsi dan respons teks untuk giliran percakapan saat ini. Anda dapat menggunakan panggilan fungsi untuk tugas berikut: Kasus penggunaan tambahan mencakup: Menafsirkan perintah suara: Buat fungsi yang sesuai dengan
tugas dalam kendaraan. Misalnya, Anda dapat membuat fungsi yang menyalakan
radio atau mengaktifkan AC. Kirim file audio perintah suara pengguna ke model, dan minta model untuk mengonversi audio menjadi teks dan mengidentifikasi fungsi yang ingin dipanggil pengguna. Mengotomatiskan alur kerja berdasarkan pemicu lingkungan: Buat fungsi untuk merepresentasikan proses yang dapat diotomatiskan. Berikan model data dari sensor lingkungan dan minta model untuk mengurai dan memproses data guna menentukan apakah satu atau beberapa alur kerja harus diaktifkan. Misalnya, model dapat memproses data suhu di gudang dan memilih untuk mengaktifkan fungsi penyiram. Mengotomatiskan penetapan tiket dukungan: Berikan model tiket dukungan, log, dan aturan yang sesuai konteks. Minta model untuk memproses semua informasi ini untuk menentukan siapa yang harus diberi tiket. Panggil
fungsi untuk menetapkan tiket kepada orang yang disarankan oleh model. Mengambil informasi dari pusat informasi: Buat fungsi yang mengambil artikel akademis tentang subjek tertentu dan meringkasnya. Pendekatan ini memungkinkan model menjawab pertanyaan tentang mata pelajaran akademis dan memberikan kutipan untuk jawabannya. Pelajari Vertex AI Agent Engine.get_current_weather
) kepada LLM. Saat memproses perintah, model menentukan apakah alat diperlukan dan, jika ya, akan menghasilkan data terstruktur yang menentukan alat yang akan dipanggil dan parameternya (misalnya, get_current_weather(location='Boston')
). Aplikasi Anda kemudian menjalankan alat ini, mengirimkan kembali hasilnya ke model, dan memungkinkannya menyelesaikan respons dengan informasi dunia nyata yang dinamis atau hasil tindakan. Pendekatan ini menghubungkan LLM dengan sistem Anda dan memperluas kemampuannya.
Fitur dan batasan
FunctionDeclarations
.Cara membuat aplikasi panggilan fungsi
Langkah 1: Kirimkan perintah dan deklarasi fungsi ke model
Tool
dalam format skema yang kompatibel dengan skema OpenAPI. Untuk mengetahui informasi selengkapnya, lihat Contoh skema.from_func
. Tabel berikut membandingkan kedua metode ini.
Metode Pernyataan
Deskripsi
Kelebihan
Kekurangan
Manual (kamus Python)
Tentukan skema fungsi secara eksplisit menggunakan kamus Python yang sesuai dengan spesifikasi OpenAPI.
Memberikan kontrol penuh atas skema, yang ideal untuk definisi fungsi yang kompleks atau tidak standar.
Lebih verbose dan memerlukan update manual jika tanda tangan fungsi Python berubah.
Otomatis (
from_func
)Buat skema secara otomatis dari tanda tangan dan docstring fungsi Python.
Singkat, tidak rentan terhadap kesalahan, dan otomatis tetap disinkronkan dengan fungsi Python.
Menawarkan kontrol yang kurang terperinci atas skema yang dihasilkan dan mungkin tidak mendukung semua fitur skema yang kompleks.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.0-flash-001
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 name of the location for which to get the weather.",
"default": {
"string_value": "Boston, MA"
}
}
},
"required": [
"location"
]
}
}
]
}]
}'
Python
from_func
. Contoh berikut menunjukkan cara mendeklarasikan fungsi secara manual.import vertexai
from vertexai.generative_models import (
Content,
FunctionDeclaration,
GenerationConfig,
GenerativeModel,
Part,
Tool,
ToolConfig
)
# Initialize Vertex AI
# TODO(developer): Update the project
vertexai.init(project="PROJECT_ID", location="us-central1")
# Initialize Gemini model
model = GenerativeModel(model_name="gemini-2.0-flash")
# Manual function declaration
get_current_weather_func = FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
# Function parameters are specified in JSON schema format
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name of the location for which to get the weather.",
"default": {
"string_value": "Boston, MA"
}
}
},
},
)
response = model.generate_content(
contents = [
Content(
role="user",
parts=[
Part.from_text("What is the weather like in Boston?"),
],
)
],
generation_config = GenerationConfig(temperature=0),
tools = [
Tool(
function_declarations=[get_current_weather_func],
)
]
)
from_func
seperti yang ditunjukkan dalam contoh berikut:def get_current_weather(location: str = "Boston, MA"):
"""
Get the current weather in a given location
Args:
location: The city name of the location for which to get the weather.
"""
# This example uses a mock implementation.
# You can define a local function or import the requests library to call an API
return {
"location": "Boston, MA",
"temperature": 38,
"description": "Partly Cloudy",
"icon": "partly-cloudy",
"humidity": 65,
"wind": {
"speed": 10,
"direction": "NW"
}
}
get_current_weather_func = FunctionDeclaration.from_func(get_current_weather)
Node.js
Node.js
Go
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True
C#
C#
Java
Java
get_current_weather
dengan parameter Boston, MA
.
candidates {
content {
role: "model"
parts {
function_call {
name: "get_current_weather"
args {
fields {
key: "location"
value {
string_value: "Boston, MA"
}
}
}
}
}
}
...
}
Langkah 2: Berikan output API ke model
REST
PROJECT_ID=myproject
MODEL_ID=gemini-2.0-flash
LOCATION="us-central1"
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?"
}
},
{
"role": "model",
"parts": [
{
"functionCall": {
"name": "get_current_weather",
"args": {
"location": "Boston, MA"
}
}
}
]
},
{
"role": "user",
"parts": [
{
"functionResponse": {
"name": "get_current_weather",
"response": {
"temperature": 20,
"unit": "C"
}
}
}
]
}
],
"tools": [
{
"function_declarations": [
{
"name": "get_current_weather",
"description": "Get the current weather in a specific location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name of the location for which to get the weather."
}
},
"required": [
"location"
]
}
}
]
}
]
}'
Python
function_response_contents = []
function_response_parts = []
# Iterates through the function calls in the response in case there are parallel function call requests
for function_call in response.candidates[0].function_calls:
print(f"Function call: {function_call.name}")
# In this example, we'll use synthetic data to simulate a response payload from an external API
if (function_call.args['location'] == "Boston, MA"):
api_response = { "location": "Boston, MA", "temperature": 38, "description": "Partly Cloudy" }
if (function_call.args['location'] == "San Francisco, CA"):
api_response = { "location": "San Francisco, CA", "temperature": 58, "description": "Sunny" }
function_response_parts.append(
Part.from_function_response(
name=function_call.name,
response={"contents": api_response}
)
)
# Add the function call response to the contents
function_response_contents = Content(role="user", parts=function_response_parts)
# Submit the User's prompt, model's response, and API output back to the model
response = model.generate_content(
[
Content( # User prompt
role="user",
parts=[
Part.from_text("What is the weather like in Boston?"),
],
),
response.candidates[0].content, # Function call response
function_response_contents # API output
],
tools=[
Tool(
function_declarations=[get_current_weather_func],
)
],
)
# Get the model summary response
print(response.text)
It is currently 38 degrees Fahrenheit in Boston, MA with partly cloudy skies.
Panggilan fungsi dengan pemikiran
thought_signature
dari
objek respons model dan menampilkannya saat Anda mengirimkan hasil eksekusi fungsi
kembali ke model. Contoh:Python
# Call the model with function declarations
# ...Generation config, Configure the client, and Define user prompt (No changes)
# Send request with declarations (using a thinking model)
response = client.models.generate_content(
model="gemini-2.5-flash", config=config, contents=contents)
# See thought signatures
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought and part.thought_signature:
print("Thought signature:")
print(part.thought_signature)
Python
# Create user friendly response with function result and call the model again
# ...Create a function response part (No change)
# Append thought signatures, function call and result of the function execution to contents
function_call_content = response.candidates[0].content
# Append the model's function call message, which includes thought signatures
contents.append(function_call_content)
contents.append(types.Content(role="user", parts=[function_response_part])) # Append the function response
final_response = client.models.generate_content(
model="gemini-2.5-flash",
config=config,
contents=contents,
)
print(final_response.text)
Panggilan fungsi paralel
REST
get_current_weather
.
Perintah pengguna adalah "Dapatkan detail cuaca di Boston dan San Francisco?". Model
mengusulkan dua panggilan fungsi get_current_weather
paralel: satu dengan
parameter Boston
dan yang lainnya dengan parameter San Francisco
.
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"functionCall": {
"name": "get_current_weather",
"args": {
"location": "Boston"
}
}
},
{
"functionCall": {
"name": "get_current_weather",
"args": {
"location": "San Francisco"
}
}
}
]
},
...
}
],
...
}
Permintaan model
PROJECT_ID=my-project
MODEL_ID=gemini-2.0-flash
LOCATION="us-central1"
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 difference in temperature in Boston and San Francisco?"
}
},
{
"role": "model",
"parts": [
{
"functionCall": {
"name": "get_current_weather",
"args": {
"location": "Boston"
}
}
},
{
"functionCall": {
"name": "get_current_weather",
"args": {
"location": "San Francisco"
}
}
}
]
},
{
"role": "user",
"parts": [
{
"functionResponse": {
"name": "get_current_weather",
"response": {
"temperature": 30.5,
"unit": "C"
}
}
},
{
"functionResponse": {
"name": "get_current_weather",
"response": {
"temperature": 20,
"unit": "C"
}
}
}
]
}
],
"tools": [
{
"function_declarations": [
{
"name": "get_current_weather",
"description": "Get the current weather in a specific location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name of the location for which to get the weather."
}
},
"required": [
"location"
]
}
}
]
}
]
}'
Respons model
[
{
"candidates": [
{
"content": {
"parts": [
{
"text": "The temperature in Boston is 30.5C and the temperature in San Francisco is 20C. The difference is 10.5C. \n"
}
]
},
"finishReason": "STOP",
...
}
]
...
}
]
Python
get_current_weather
.
Perintah pengguna adalah "Bagaimana cuaca di Boston dan San Francisco?".import vertexai
from vertexai.generative_models import (
Content,
FunctionDeclaration,
GenerationConfig,
GenerativeModel,
Part,
Tool,
ToolConfig
)
# Initialize Vertex AI
# TODO(developer): Update the project
vertexai.init(project="my-project", location="us-central1")
# Initialize Gemini model
model = GenerativeModel(model_name="gemini-2.0-flash")
# Manual function declaration
get_current_weather_func = FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
# Function parameters are specified in JSON schema format
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name of the location for which to get the weather.",
"default": {
"string_value": "Boston, MA"
}
}
},
},
)
response = model.generate_content(
contents = [
Content(
role="user",
parts=[
Part.from_text("What is the weather like in Boston and San Francisco?"),
],
)
],
generation_config = GenerationConfig(temperature=0),
tools = [
Tool(
function_declarations=[get_current_weather_func],
)
]
)
function_response_contents = []
function_response_parts = []
# You can have parallel function call requests for the same function type.
# For example, 'location_to_lat_long("London")' and 'location_to_lat_long("Paris")'
# In that case, collect API responses in parts and send them back to the model
for function_call in response.candidates[0].function_calls:
print(f"Function call: {function_call.name}")
# In this example, we'll use synthetic data to simulate a response payload from an external API
if (function_call.args['location'] == "Boston, MA"):
api_response = { "location": "Boston, MA", "temperature": 38, "description": "Partly Cloudy" }
if (function_call.args['location'] == "San Francisco, CA"):
api_response = { "location": "San Francisco, CA", "temperature": 58, "description": "Sunny" }
function_response_parts.append(
Part.from_function_response(
name=function_call.name,
response={"contents": api_response}
)
)
# Add the function call response to the contents
function_response_contents = Content(role="user", parts=function_response_parts)
function_response_contents
response = model.generate_content(
contents = [
Content(
role="user",
parts=[
Part.from_text("What is the weather like in Boston and San Francisco?"),
],
), # User prompt
response.candidates[0].content, # Function call response
function_response_contents, # Function response
],
tools = [
Tool(
function_declarations=[get_current_weather_func],
)
]
)
# Get the model summary response
print(response.text)
Go
Pemanggilan fungsi paksa
Mode
Deskripsi
AUTO
Perilaku model default. Model memutuskan apakah akan memprediksi panggilan fungsi atau respons bahasa alami.
ANY
Model dibatasi untuk selalu memprediksi panggilan fungsi. Jika
allowed_function_names
tidak diberikan, model akan memilih dari semua deklarasi fungsi yang tersedia. Jika allowed_function_names
disediakan, model akan memilih dari kumpulan fungsi yang diizinkan.
NONE
Model tidak boleh memprediksi panggilan fungsi. Perilaku ini setara dengan permintaan model tanpa deklarasi fungsi terkait.
get_weather
. Python
response = model.generate_content(
contents = [
Content(
role="user",
parts=[
Part.from_text("What is the weather like in Boston?"),
],
)
],
generation_config = GenerationConfig(temperature=0),
tools = [
Tool(
function_declarations=[get_weather_func, some_other_function],
)
],
tool_config=ToolConfig(
function_calling_config=ToolConfig.FunctionCallingConfig(
# ANY mode forces the model to predict only function calls
mode=ToolConfig.FunctionCallingConfig.Mode.ANY,
# Allowed function calls to predict when the mode is ANY. If empty, any of
# the provided function calls will be predicted.
allowed_function_names=["get_weather"],
)
)
)
Contoh skema fungsi
type
, nullable
, required
, format
, description
, properties
, items
, enum
, anyOf
, $ref
, dan $defs
. Atribut yang tersisa tidak didukung.Fungsi dengan parameter objek dan array
extract_sale_records_func = FunctionDeclaration(
name="extract_sale_records",
description="Extract sale records from a document.",
parameters={
"type": "object",
"properties": {
"records": {
"type": "array",
"description": "A list of sale records",
"items": {
"description": "Data for a sale record",
"type": "object",
"properties": {
"id": {"type": "integer", "description": "The unique id of the sale."},
"date": {"type": "string", "description": "Date of the sale, in the format of MMDDYY, e.g., 031023"},
"total_amount": {"type": "number", "description": "The total amount of the sale."},
"customer_name": {"type": "string", "description": "The name of the customer, including first name and last name."},
"customer_contact": {"type": "string", "description": "The phone number of the customer, e.g., 650-123-4567."},
},
"required": ["id", "date", "total_amount"],
},
},
},
"required": ["records"],
},
)
Fungsi dengan parameter enum
enum
:set_status_func = FunctionDeclaration(
name="set_status",
description="set a ticket's status field",
# Function parameters are specified in JSON schema format
parameters={
"type": "object",
"properties": {
"status": {
"type": "integer",
"enum": [ "10", "20", "30" ], # Provide integer (or any other type) values as strings.
}
},
},
)
Fungsi dengan ref dan def
ref
dan defs
:{
"contents": ...,
"tools": [
{
"function_declarations": [
{
"name": "get_customer",
"description": "Search for a customer by name",
"parameters": {
"type": "object",
"properties": {
"first_name": { "ref": "#/defs/name" },
"last_name": { "ref": "#/defs/name" }
},
"defs": {
"name": { "type": "string" }
}
}
}
]
}
]
}
ref
dan defs
tanpa simbol $
.ref
harus merujuk ke turunan langsung defs
; tidak ada
referensi eksternal.defs
(referensi mandiri) dibatasi hingga dua.from_func
dengan parameter arrayfrom_func
untuk menghasilkan skema FunctionDeclaration
.from typing import List
# Define a function. Could be a local function or you can import the requests library to call an API
def multiply_numbers(numbers: List[int] = [1, 1]) -> int:
"""
Calculates the product of all numbers in an array.
Args:
numbers: An array of numbers to be multiplied.
Returns:
The product of all the numbers. If the array is empty, returns 1.
"""
if not numbers: # Handle empty array
return 1
product = 1
for num in numbers:
product *= num
return product
multiply_number_func = FunctionDeclaration.from_func(multiply_numbers)
"""
multiply_number_func contains the following schema:
{'name': 'multiply_numbers',
'description': 'Calculates the product of all numbers in an array.',
'parameters': {'properties': {'numbers': {'items': {'type': 'INTEGER'},
'description': 'list of numbers',
'default': [1.0, 1.0],
'title': 'Numbers',
'type': 'ARRAY'}},
'description': 'Calculates the product of all numbers in an array.',
'title': 'multiply_numbers',
'property_ordering': ['numbers'],
'type': 'OBJECT'}}
"""
Praktik terbaik untuk panggilan fungsi
book_flight_ticket
dapat memiliki deskripsi book flight tickets after confirming users' specific requirements, such as time, departure, destination, party size and preferred airline
.enum
, bukan memasukkan kumpulan nilai ke dalam deskripsi. Jika nilai parameter selalu berupa bilangan bulat, tetapkan jenisnya ke integer
, bukan number
.
You are a flight API assistant to help with searching flights based on user preferences.
Don't make assumptions on the departure or destination airports. Always use a future date for the departure or destination time.
Ask clarifying questions if not enough information is available.
0
atau nilai rendah lainnya. Hal ini menginstruksikan model untuk menghasilkan hasil yang lebih meyakinkan dan mengurangi halusinasi.Menggunakan tanda tangan pikiran
Harga
Kasus penggunaan panggilan fungsi
Kasus Penggunaan
Contoh deskripsi
Contoh link
Mengintegrasikan dengan API eksternal
Mendapatkan informasi cuaca menggunakan API meteorologi
Tutorial notebook
Mengonversi alamat menjadi koordinat garis lintang/bujur
Tutorial notebook
Mengonversi mata uang menggunakan API pertukaran mata uang
Codelab
Membangun chatbot lanjutan
Menjawab pertanyaan pelanggan tentang produk dan layanan
Tutorial notebook
Membuat asisten untuk menjawab pertanyaan keuangan dan berita tentang perusahaan
Tutorial notebook
Menyusun dan mengontrol panggilan fungsi
Mengekstrak entity terstruktur dari data log mentah
Tutorial notebook
Mengekstrak satu atau beberapa parameter dari input pengguna
Tutorial notebook
Menangani daftar dan struktur data bertingkat dalam panggilan fungsi
Tutorial notebook
Menangani perilaku panggilan fungsi
Menangani panggilan dan respons fungsi paralel
Tutorial notebook
Mengelola kapan dan fungsi mana yang dapat dipanggil oleh model
Tutorial notebook
Membuat kueri database dengan bahasa alami
Mengonversi pertanyaan dalam bahasa alami menjadi kueri SQL untuk BigQuery
Aplikasi contoh
Panggilan fungsi multimodal
Gunakan gambar, video, audio, dan PDF sebagai input untuk memicu panggilan fungsi
Tutorial notebook
Langkah berikutnya
Pengantar panggilan fungsi
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-19 UTC.