התכונה 'קריאה לפונקציה' משפרת את היכולת של מודל ה-LLM לספק תשובות רלוונטיות לפי ההקשר.
אפשר לספק פונקציות בהתאמה אישית למודל AI גנרטיבי באמצעות Function Calling API. המודל לא מפעיל את הפונקציות האלה ישירות, אלא יוצר פלט של נתונים מובְנים שמציין את שם הפונקציה ואת הארגומנטים המוצעים.
הפלט הזה מאפשר לקרוא לממשקי API חיצוניים או למערכות מידע כמו מסדי נתונים, מערכות לניהול קשרי לקוחות ומאגרי מסמכים. מודל השפה הגדול יכול להשתמש בפלט ה-API שמתקבל כדי לשפר את איכות התשובות.
מידע נוסף על קריאה לפונקציות זמין במאמר קריאה לפונקציות.
מודלים נתמכים
- Gemini 3.1 Flash-Lite
- Gemini 3.1 Pro
- Gemini 3 Flash
- Gemini 3 Pro
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash עם אודיו מקורי של Gemini Live API
- Gemini 2.5 Flash עם אודיו מקורי של Gemini Live API
- Gemini 2.0 Flash עם Gemini Live API
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
מגבלות:
- מספר ההצהרות המקסימלי של פונקציות שאפשר לספק עם הבקשה הוא 128.
תחביר לדוגמה
תחביר לשליחת בקשת API להפעלת פונקציה.
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": [ { ... } ] }] }'
רשימת פרמטרים
פרטים על ההטמעה מופיעים בדוגמאות.
FunctionDeclaration
הגדרה של פונקציה שהמודל יכול ליצור עבורה קלט JSON על סמך מפרטים של OpenAPI 3.0.
| פרמטרים | |
|---|---|
|
השם של הפונקציה שרוצים להפעיל. השם חייב להתחיל באות או בקו תחתון. הערך חייב להיות a-z, A-Z, 0-9, או להכיל קווים תחתונים, נקודות או מקפים, והאורך המקסימלי הוא 64 תווים. |
|
תיאור הפונקציה והמטרה שלה. המודל משתמש בזה כדי להחליט איך לקרוא לפונקציה והאם לקרוא לה. כדי לקבל את התוצאות הטובות ביותר, מומלץ לכלול תיאור. |
|
תיאור הפרמטרים של הפונקציה בפורמט של אובייקט סכימת JSON של OpenAPI: מפרט OpenAPI 3.0. |
|
מתאר את הפלט מהפונקציה בפורמט של אובייקט סכימת JSON של OpenAPI: מפרט OpenAPI 3.0. |
מידע נוסף זמין במאמר בנושא שימוש בפונקציות
Schema
הפורמט של נתוני הקלט והפלט בבקשה להפעלת פונקציה מוגדר על סמך מפרט סכימת OpenAPI 3.0.
| פרמטרים | |
|---|---|
| סוג |
Enum. סוג הנתונים. הערך חייב להיות אחד מהערכים הבאים:
|
description |
תיאור הנתונים. |
enum |
ערכים אפשריים של רכיב מסוג פרימיטיבי עם פורמט enum. |
items |
סכימה של האלמנטים של |
properties |
סכימה של המאפיינים של |
required |
מאפייני החובה של |
nullable |
מציין אם הערך יכול להיות |
FunctionCallingConfig
הפרמטר FunctionCallingConfig שולט בהתנהגות של המודל וקובע איזה סוג של פונקציה להפעיל.
| פרמטרים | |
|---|---|
|
|
|
שמות הפונקציות להפעלה. מוגדר רק כשהערך של |
|
אם |
functionCall
תחזית functionCall שמוחזרת מהמודל ומכילה מחרוזת שמייצגת את functionDeclaration.name ואובייקט JSON מובנה שמכיל את הפרמטרים והערכים שלהם.
| פרמטרים | |
|---|---|
|
השם של הפונקציה שרוצים להפעיל. |
|
הפרמטרים והערכים של הפונקציה בפורמט אובייקט JSON. פרטים על הפרמטרים מופיעים במאמר בנושא קריאה לפונקציות. |
|
טוקן אטום שמכיל את מצב החשיבה הרציונלית הפנימי של המודל. אם היא קיימת, צריך לכלול אותה בתור הבא של השיחה כדי לשמור על ההקשר של השימוש בכלי רב-שלבי. |
functionResponse
הפלט שמתקבל מ-FunctionCall שמכיל מחרוזת שמייצגת את FunctionDeclaration.name. הוא מכיל גם אובייקט JSON מובנה עם הפלט מהפונקציה (והוא משמש כהקשר למודל). התג הזה צריך להכיל את התוצאה של FunctionCall שנוצרה על סמך חיזוי של המודל.
| פרמטרים | |
|---|---|
|
השם של הפונקציה שרוצים להפעיל. |
|
התגובה של הפונקציה בפורמט אובייקט JSON. |
|
חלקים אופציונליים של התגובה של הפונקציה, שכוללים כמה אופנים. אפשר להשתמש בה כדי להחזיר תמונות, אודיו או וידאו יחד עם תגובת JSON מובנית. |
FunctionResponsePart
FunctionResponsePart מכילה נתונים מולטימודליים מהבקשה להפעלת פונקציה.
| פרמטרים | |
|---|---|
|
נתונים מוטבעים של חלק התגובה של הפונקציה. |
|
נתונים מבוססי URI של חלק התגובה של הפונקציה. |
FunctionResponseBlob
השדה FunctionResponseBlob מכיל נתונים מוטבעים של FunctionResponsePart.
| פרמטרים | |
|---|---|
|
סוג ה-MIME של הנתונים שמוטבעים, לפי IANA. |
|
הנתונים הבינאריים הגולמיים. |
|
השם המוצג של הנתונים בתוך התג. |
FunctionResponseFileData
FunctionResponseFileData מכיל נתונים מבוססי URI עבור FunctionResponsePart.
| פרמטרים | |
|---|---|
|
סוג ה-MIME של נתוני הקובץ לפי IANA. |
|
ה-URI של נתוני הקובץ. |
|
השם המוצג של נתוני הקובץ. |
דוגמאות
שליחת הצהרה על פונקציה
הדוגמה הבאה היא דוגמה בסיסית לשליחת שאילתה והצהרה על פונקציה למודל:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- MODEL_ID: המזהה של המודל שעובר עיבוד.
- ROLE: הזהות של הישות שיוצרת את ההודעה.
- TEXT: ההנחיה לשליחה למודל.
- NAME: השם של הפונקציה שרוצים להפעיל.
- DESCRIPTION: תיאור ומטרה של הפונקציה.
- למידע על שדות אחרים, אפשר לעיין בטבלה רשימת הפרמטרים.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent
גוף בקשת JSON:
{
"contents": [{
"role": "ROLE",
"parts": [{
"text": "TEXT"
}]
}],
"tools": [{
"function_declarations": [
{
"name": "NAME",
"description": "DESCRIPTION",
"parameters": {
"type": "TYPE",
"properties": {
"location": {
"type": "TYPE",
"description": "DESCRIPTION"
}
},
"required": [
"location"
]
}
}
]
}]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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
דוגמה לפקודת 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, for example San Francisco, CA or a zip code such as 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
Gen AI SDK ל-Python
Node.js
Java
Go
REST (OpenAI)
אפשר להפעיל את Function Calling API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: .
- MODEL_ID: המזהה של המודל שעובר עיבוד.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
גוף בקשת JSON:
{
"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"]
}
}
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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)
אפשר להפעיל את Function Calling API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.
שליחת הצהרה על פונקציה עם FunctionCallingConfig
בדוגמה הבאה אפשר לראות איך מעבירים FunctionCallingConfig למודל:
ה-functionCallingConfig מבטיח שהפלט של המודל תמיד יהיה בקשה ספציפית להפעלת פונקציה. כדי להגדיר:
- מגדירים את האפשרות 'הפעלת פונקציות'
modeלערךANY. מציינים את שמות הפונקציות שרוצים להשתמש בהן ב-
allowed_function_names. אםallowed_function_namesריק, אפשר להחזיר כל אחת מהפונקציות שצוינו.
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, for example: 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 ל-Python
Node.js
Go
REST (OpenAI)
אפשר להפעיל את Function Calling API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: .
- MODEL_ID: המזהה של המודל שעובר עיבוד.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
גוף בקשת JSON:
{
"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"
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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)
אפשר להפעיל את Function Calling API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.
המאמרים הבאים
לעיון בתיעוד מפורט: