תכונת הרצת הקוד של Gemini API מאפשרת למודל ליצור ולהריץ קוד Python, וללמוד באופן איטרטיבי מהתוצאות עד שהוא מגיע לפלט הסופי. אתם יכולים להשתמש ביכולת הזו של הרצת קוד כדי ליצור אפליקציות שמפיקות תועלת מהסקת מסקנות שמבוססת על קוד, ומפיקות פלט טקסט. לדוגמה, אפשר להשתמש בהרצת קוד באפליקציה שפותרת משוואות או מעבדת טקסט.
Gemini API מספק הרצת קוד ככלי, בדומה לקריאה להפעלת פונקציות. אחרי שמוסיפים את הפעלת הקוד ככלי, המודל מחליט מתי להשתמש בו.
סביבת הרצת הקוד כוללת את הספריות הבאות. אי אפשר להתקין ספריות משלכם.
- Altair
- שחמט
- Cv2
- Matplotlib
- Mpmath
- NumPy
- פנדות
- Pdfminer
- Reportlab
- Seaborn
- Sklearn
- Statsmodels
- Striprtf
- SymPy
- Tabulate
מודלים נתמכים
המודלים הבאים תומכים בהרצת קוד:
לחצו כדי להרחיב את רשימת המודלים הנתמכים
- Gemini Robotics ER 2
- Gemini 4 Carbon לסייבר
- Gemini 4 Carbon
- Gemini 4 Argon Cyber Permissive
- Gemini 4 Argon
- Gemini 3.8 Flash Cyber
- Gemini 3.8 Flash
- Gemini 3.7 Flash
- Gemini 3.6 Flash
- Gemini 3.5 Flash-Lite
- Gemini 3.5 Flash
- Gemini 3.1 Pro
- Gemini 3.1 Flash-Lite
- Gemini 3 Flash
- Gemini 2.5 Pro
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash
איך מתחילים להשתמש בהרצת קוד
ההנחה היא שכבר ביצעתם את שלבי ההגדרה שמופיעים במאמר תחילת העבודה עם Gemini Enterprise Agent Platform.
הפעלת הרצת קוד
כדי לאפשר למודל להשתמש בהרצת קוד, מוסיפים אותו לרשימה tools כשמגדירים את המודל:
Python
התקנה
pip install --upgrade google-genai
מידע נוסף זמין במאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# 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_ENTERPRISE=True
Go
מידע נוסף זמין במאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# 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_ENTERPRISE=True
Node.js
התקנה
npm install @google/genai
מידע נוסף זמין במאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# 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_ENTERPRISE=True
Java
איך מתקינים או מעדכנים את Java
מידע נוסף זמין במאמרי העזרה של ה-SDK.
מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Vertex AI:
# 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_ENTERPRISE=True
REST
GenerateContent API
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
GENERATE_RESPONSE_METHOD: סוג התשובה שרוצים שהמודל ייצור. בוחרים שיטה שקובעת איך התשובה של המודל תוחזר:-
streamGenerateContent: התשובה מועברת בסטרימינג בזמן שהיא נוצרת, כדי להפחית את תפיסת זמן האחזור אצל קהל אנושי. -
generateContent: התשובה מוחזרת אחרי שהיא נוצרת במלואה.
-
-
LOCATION: האזור שבו הבקשה תעובד. -
PROJECT_ID: מזהה הפרויקט. -
MODEL_ID: מזהה המודל שבו רוצים להשתמש. -
ROLE: התפקיד בשיחה שמשויך לתוכן. חובה לציין תפקיד גם בתרחישי שימוש בפרומפט אחד. הערכים הקבילים כוללים:USER: מציין תוכן שאתם שלחתם.-
MODEL: מציין את התשובה של המודל.
TEXTההוראות בטקסט שצריך לכלול בהנחיה.
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"tools": [{'codeExecution': {}}],
"contents": {
"role": "ROLE",
"parts": { "text": "TEXT" }
},
}
EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
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:GENERATE_RESPONSE_METHOD"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"tools": [{'codeExecution': {}}],
"contents": {
"role": "ROLE",
"parts": { "text": "TEXT" }
},
}
'@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$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:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
Interactions API
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
MODEL_ID: מזהה המודל שבו רוצים להשתמש. TEXTההוראות בטקסט שצריך לכלול בהנחיה.
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"model": "MODEL_ID",
"tools": [
{
"type": "code_execution"
}
],
"input": [
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "TEXT"
}
]
}
]
}
EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
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/interactions"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"model": "MODEL_ID",
"tools": [
{
"type": "code_execution"
}
],
"input": [
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "TEXT"
}
]
}
]
}
'@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$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/interactions" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
איך משתמשים בהרצת קוד בשיחה
אפשר גם להשתמש בהרצת קוד כחלק משיחה.
REST
GenerateContent API
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"tools": [
{
"code_execution": {}
}
],
"contents": [
{
"role": "user",
"parts": {
"text": "Can you print \"Hello world!\"?"
}
},
{
"role": "model",
"parts": [
{
"text": ""
},
{
"executable_code": {
"language": "PYTHON",
"code": "\nprint(\"hello world!\")\n"
}
},
{
"code_execution_result": {
"outcome": "OUTCOME_OK",
"output": "hello world!\n"
}
},
{
"text": "I have printed \"hello world!\" using the provided python code block. \n"
}
]
},
{
"role": "user",
"parts": {
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}
}
]
}
EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
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/gemini-3.5-flash:generateContent"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"tools": [
{
"code_execution": {}
}
],
"contents": [
{
"role": "user",
"parts": {
"text": "Can you print \"Hello world!\"?"
}
},
{
"role": "model",
"parts": [
{
"text": ""
},
{
"executable_code": {
"language": "PYTHON",
"code": "\nprint(\"hello world!\")\n"
}
},
{
"code_execution_result": {
"outcome": "OUTCOME_OK",
"output": "hello world!\n"
}
},
{
"text": "I have printed \"hello world!\" using the provided python code block. \n"
}
]
},
{
"role": "user",
"parts": {
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}
}
]
}
'@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$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/gemini-3.5-flash:generateContent" | Select-Object -Expand Content
Interactions API
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"model": "gemini-3.8-flash",
"tools": [
{
"type": "code_execution"
}
],
"input": [
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "Can you print \"Hello world!\"?"
}
]
},
{
"type": "code_execution_call",
"id": "code_call_71021",
"arguments": {
"language": "PYTHON",
"code": "\nprint(\"hello world!\")\n"
}
},
{
"type": "code_execution_result",
"call_id": "code_call_71021",
"result": "hello world!\n"
},
{
"type": "model_output",
"content": [
{
"type": "text",
"text": "I have printed \"hello world!\" using the provided python code block. \n"
}
]
},
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}
]
}
]
}
EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
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/interactions"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"model": "gemini-3.8-flash",
"tools": [
{
"type": "code_execution"
}
],
"input": [
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "Can you print \"Hello world!\"?"
}
]
},
{
"type": "code_execution_call",
"id": "code_call_71021",
"arguments": {
"language": "PYTHON",
"code": "\nprint(\"hello world!\")\n"
}
},
{
"type": "code_execution_result",
"call_id": "code_call_71021",
"result": "hello world!\n"
},
{
"type": "model_output",
"content": [
{
"type": "text",
"text": "I have printed \"hello world!\" using the provided python code block. \n"
}
]
},
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}
]
}
]
}
'@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$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/interactions" | Select-Object -Expand Content
(רק ב-Gemini 3 Flash) שימוש בהרצת קוד עם תמונות
Gemini 3 Flash יכול לכתוב ולהריץ קוד Python כדי לשנות ולבדוק תמונות באופן פעיל. אתם יכולים להשתמש בהרצת קוד עם תמונות כדי:
הגדלה ובדיקה של תמונות: זיהוי מקרים שבהם הפרטים קטנים מדי (למשל, קריאת מד שנמצא רחוק מהמצלמה) וכתיבת קוד לחיתוך ובדיקה מחדש של האזור ברזולוציה גבוהה יותר.
מתמטיקה ויזואלית: הפעלת חישובים בכמה שלבים באמצעות קוד (למשל, חיבור פריטים בקבלה).
הוספת הערות לתמונות: הוספת הערות לתמונות כדי לענות על שאלות, למשל ציור חצים בין אובייקטים כדי להראות קשרים.
כדי להשתמש בהרצת קוד עם תמונות, מפעילים את הרצת הקוד כשמגדירים את המודל ושולחים הנחיה עם תמונה שהמודל יבדוק:
Python
GenerateContent API
# Example input image image_path = "https://storage.googleapis.com/cloud-samples-data/generative-ai/image/chips.jpeg" image_bytes = requests.get(image_path).content image = types.Part.from_bytes( data=image_bytes, mime_type="image/jpeg" ) response = client.models.generate_content( model=MODEL_ID, contents=[image, "Locate the ESMT chip. What are the numbers on the chip?"], config=types.GenerateContentConfig( tools=[types.Tool(code_execution=types.ToolCodeExecution)] ), )
Interactions API
import base64 from google import genai import requests client = genai.Client( enterprise=True, project="PROJECT_ID", location="global", ) # Example input image image_path = "https://storage.googleapis.com/cloud-samples-data/generative-ai/image/chips.jpeg" image_bytes = requests.get(image_path).content base64_image = base64.b64encode(image_bytes).decode("utf-8") interaction = client.interactions.create( model="gemini-3.8-flash", input=[ { "type": "image", "data": base64_image, "mime_type": "image/jpeg", }, { "type": "text", "text": "Locate the ESMT chip. What are the numbers on the chip?", }, ], tools=[{"type": "code_execution"}], ) for step in interaction.steps: if step.type == "code_execution_call": print(f"Code:\n{step.arguments.code}") elif step.type == "code_execution_result": print(f"Output:\n{step.result}") elif step.type == "model_output": print(step.content[0].text)
הרצת קוד לעומת קריאה להפעלת פונקציות
הפעלת קוד וקריאה להפעלת פונקציות הן תכונות דומות:
- הפעלת קוד מאפשרת למודל להריץ קוד בקצה העורפי של ה-API בסביבה קבועה ומבודדת.
- התכונה "קריאה להפעלת פונקציות" מאפשרת להריץ את הפונקציות שהמודל מבקש, בכל סביבה שרוצים.
באופן כללי, עדיף להשתמש בהרצת קוד אם היא מתאימה לתרחיש לדוגמה שלכם. הרצת הקוד פשוטה יותר לשימוש (צריך רק להפעיל אותה) והיא מתבצעת בבקשה אחת של GenerateContent. קריאה להפעלת פונקציות דורשת בקשת GenerateContent נוספת כדי לשלוח בחזרה את הפלט מכל בקשה להפעלת פונקציה.
ברוב המקרים, כדאי להשתמש בקריאה להפעלת פונקציות אם יש לכם פונקציות משלכם שאתם רוצים להריץ באופן מקומי, וכדאי להשתמש בהרצת קוד אם אתם רוצים שה-API יכתוב ויריץ קוד Python בשבילכם ויחזיר את התוצאה.
חיוב
הפעלת הקוד מ-Gemini API לא כרוכה בתשלום נוסף. החיוב יתבצע לפי התעריף הנוכחי של טוקנים לקלט ולפלט, בהתאם למודל Gemini שבו אתם משתמשים.
הנה עוד כמה דברים שכדאי לדעת על החיוב על הפעלת קוד:
- אתם מחויבים רק פעם אחת על הטוקנים של הקלט שאתם מעבירים למודל ועל הטוקנים של הקלט שנוצרים על ידי כלי הרצת הקוד.
- החיוב הוא על הטוקנים הסופיים של הפלט שמוחזרים בתגובה מה-API.

- החיוב מתבצע לפי התעריף הנוכחי של טוקנים לקלט ולפלט, בהתאם למודל Gemini שבו אתם משתמשים.
- אם Gemini משתמש בהרצת קוד כשהוא יוצר את התשובה, ההנחיה המקורית, הקוד שנוצר והתוצאה של הרצת הקוד מסומנים כטוקנים של ביניים ומחויבים כטוקנים של קלט.
- Gemini יוצר סיכום ומחזיר את הקוד שנוצר, את התוצאה של הקוד שהופעל ואת הסיכום הסופי. הם מחויבים כטוקנים של פלט.
- Gemini API כולל ספירת טוקנים של ביניים בתגובה מה-API, כדי שתוכלו לעקוב אחרי טוקנים נוספים של קלט מעבר לאלה שהועברו בהנחיה הראשונית.
הקוד שנוצר יכול לכלול גם טקסט וגם פלט מולטימודלי, כמו תמונות.
מגבלות
- המודל יכול רק ליצור ולהריץ קוד. הוא לא יכול להחזיר פריטים אחרים, כמו קובצי מדיה.
- הכלי להרצת קוד לא תומך בכתובות URI של קבצים כקלט או כפלט. עם זאת, כלי הרצת הקוד תומך בקלט של קבצים ובפלט של תרשימים כבייטים מוטבעים. בעזרת יכולות הקלט והפלט האלה, אתם יכולים להעלות קובצי CSV וקובצי טקסט, לשאול שאלות לגבי הקבצים וליצור תרשימי Matplotlib כחלק מתוצאת הרצת הקוד.
סוגי ה-MIME הנתמכים לבייטים מוטבעים הם
.cpp,.csv,.java,.jpeg,.js,.png,.py,.tsו-.xml. - הפעלת הקוד יכולה להימשך עד 30 שניות לפני שהזמן הקצוב לתפוגה נגמר.
- במקרים מסוימים, הפעלת הרצת קוד עלולה להוביל לרגרסיות בתחומים אחרים של הפלט מהמודל (לדוגמה, כתיבת סיפור).
שיטות מומלצות ואזהרות
כשמשתמשים בהרצת קוד, כדאי לפעול לפי השיטות המומלצות וההנחיות הבאות:
- הוראות ביצוע מפורשות: מודלים גדולים של שפה עשויים להשתמש כברירת מחדל בהסקה לשונית, אלא אם תורו להם אחרת. כשאתם מספקים הוראות להרצת קוד, השתמשו בהנחיות מפורשות (לדוגמה, "תמיד להריץ את הסקריפט" או "לא לחשב ישירות").
- בידוד הרשת: לארגז החול להרצת הקוד אין גישה לאינטרנט הציבורי. סקריפטים לא יכולים לשלוח בקשות HTTP חיצוניות או להוריד משאבים חיצוניים.
- הרצה ללא שמירת מצב: כל הרצה מתבצעת בקונטיינר זמני. קבצים שנוצרו או שונו במהלך פנייה אחת לא נשמרים בפניות או בסשנים הבאים.
- יחסי תלות: אפשר להשתמש רק בספריות Python רגילות ובחבילות שמותקנות מראש לטיפול בנתונים (כמו
numpyאוpandas). הסביבה לא תומכת בהתקנות דינמיות של חבילות זמן ריצה (כמוpip install). - קלט/פלט סטנדרטי: כותבים סקריפטים שמקבלים קלט מארגומנטים של שורת הפקודה (
sys.argv) או מקלט סטנדרטי (sys.stdin), ומדפיסים את התוצאה ישירות לפלט סטנדרטי (sys.stdout).